85 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env seiscomp-python
 | 
						|
# -*- coding: utf-8 -*-
 | 
						|
############################################################################
 | 
						|
# Copyright (C) GFZ Potsdam                                                #
 | 
						|
# All rights reserved.                                                     #
 | 
						|
#                                                                          #
 | 
						|
# GNU Affero General Public License Usage                                  #
 | 
						|
# This file may be used under the terms of the GNU Affero                  #
 | 
						|
# Public License version 3.0 as published by the Free Software Foundation  #
 | 
						|
# and appearing in the file LICENSE included in the packaging of this      #
 | 
						|
# file. Please review the following information to ensure the GNU Affero   #
 | 
						|
# Public License version 3.0 requirements will be met:                     #
 | 
						|
# https://www.gnu.org/licenses/agpl-3.0.html.                              #
 | 
						|
############################################################################
 | 
						|
 | 
						|
import sys
 | 
						|
import seiscomp.client, seiscomp.datamodel, seiscomp.io
 | 
						|
 | 
						|
 | 
						|
class ObjectDumper(seiscomp.client.Application):
 | 
						|
 | 
						|
    def __init__(self):
 | 
						|
        seiscomp.client.Application.__init__(self, len(sys.argv), sys.argv)
 | 
						|
        self.setMessagingEnabled(True)
 | 
						|
        self.setDatabaseEnabled(True, False)
 | 
						|
        self.setMessagingUsername("")
 | 
						|
 | 
						|
    def createCommandLineDescription(self):
 | 
						|
        seiscomp.client.Application.createCommandLineDescription(self)
 | 
						|
        self.commandline().addGroup("Dump")
 | 
						|
        self.commandline().addStringOption("Dump", "public-id,P", "publicID")
 | 
						|
 | 
						|
    def loadEventParametersObject(self, publicID):
 | 
						|
        for tp in (
 | 
						|
            seiscomp.datamodel.Pick,
 | 
						|
            seiscomp.datamodel.Amplitude,
 | 
						|
            seiscomp.datamodel.Origin,
 | 
						|
            seiscomp.datamodel.Event,
 | 
						|
            seiscomp.datamodel.FocalMechanism,
 | 
						|
            seiscomp.datamodel.Magnitude,
 | 
						|
            seiscomp.datamodel.StationMagnitude,
 | 
						|
        ):
 | 
						|
 | 
						|
            obj = self.query().loadObject(tp.TypeInfo(), publicID)
 | 
						|
            obj = tp.Cast(obj)
 | 
						|
            if obj:
 | 
						|
                ep = seiscomp.datamodel.EventParameters()
 | 
						|
                ep.add(obj)
 | 
						|
                return ep
 | 
						|
 | 
						|
    def loadInventoryObject(self, publicID):
 | 
						|
        for tp in (
 | 
						|
            seiscomp.datamodel.Network,
 | 
						|
            seiscomp.datamodel.Station,
 | 
						|
            seiscomp.datamodel.Sensor,
 | 
						|
            seiscomp.datamodel.SensorLocation,
 | 
						|
            seiscomp.datamodel.Stream,
 | 
						|
        ):
 | 
						|
 | 
						|
            obj = self.query().loadObject(tp.TypeInfo(), publicID)
 | 
						|
            obj = tp.Cast(obj)
 | 
						|
            if obj:
 | 
						|
                return obj
 | 
						|
 | 
						|
    def run(self):
 | 
						|
        publicID = self.commandline().optionString("public-id")
 | 
						|
        obj = self.loadEventParametersObject(publicID)
 | 
						|
        if obj is None:
 | 
						|
            obj = self.loadInventoryObject(publicID)
 | 
						|
        if obj is None:
 | 
						|
            raise ValueError("unknown object '" + publicID + "'")
 | 
						|
 | 
						|
        # dump formatted XML archive to stdout
 | 
						|
        ar = seiscomp.io.XMLArchive()
 | 
						|
        ar.setFormattedOutput(True)
 | 
						|
        ar.create("-")
 | 
						|
        ar.writeObject(obj)
 | 
						|
        ar.close()
 | 
						|
        return True
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    app = ObjectDumper()
 | 
						|
    app()
 |