コード例 #1
0
 def __init__(self, pluginName):
     self.eventName = None
     self.queryResults = ArrayList()
     self.pluginName = pluginName
     self.query = MetadataCatalogQuery(pluginName)
     self.returnText = False
     self.query.setDistinctField("dataTime")
コード例 #2
0
 def __init__(self, pluginName):
     self.eventName = None
     self.queryResults = ArrayList()
     self.pluginName = pluginName
     self.query = MetadataCatalogQuery(pluginName)
     self.returnText = False
     self.query.setDistinctField("dataTime")
コード例 #3
0
class CatalogQuery():
    def __init__(self, pluginName):
        self.__cat = MetadataCatalogQuery(pluginName)

    def setDistinctField(self, field):
        self.__cat.setDistinctField(field)

    def addReturnedField(self, name):
        self.__cat.addReturnedField(name, None)

    def addMaxReturnedField(self, name):
        self.__cat.addMaxReturnedField(name, None)

    def addConstraint(self, name, value, operand="="):
        self.__cat.addParameter(name, value, operand)

    def execute(self):
        return self.__cat.execute()

    def executeWrapped(self):
        return ResponseMessageCatalog.wrap(self.__cat.execute())
コード例 #4
0
ファイル: CatalogQuery.py プロジェクト: KeithLatteri/awips2
class CatalogQuery():
    
    def __init__(self, pluginName):
        self.__cat = MetadataCatalogQuery(pluginName)
        
    def setDistinctField(self,field):
        self.__cat.setDistinctField(field)   
        
    def addReturnedField(self, name):
        self.__cat.addReturnedField(name,None)
        
    def addMaxReturnedField(self, name):
        self.__cat.addMaxReturnedField(name, None)
    
    def addConstraint(self, name, value, operand="="):   
        self.__cat.addParameter(name, value, operand)
    
    def execute(self):
        return self.__cat.execute()
    
    def executeWrapped(self):
        return ResponseMessageCatalog.wrap(self.__cat.execute())
コード例 #5
0
class GempakRadarCatalogQuery():
    
    def __init__(self, pluginName):
        self.queryResults = ArrayList()
        self.pluginName = pluginName
        self.query = MetadataCatalogQuery(pluginName)
        
    def setDistinctField(self,field):
        self.distinctField = field
        self.query.setDistinctField(field)
    
    def addConstraint(self, name, value, operand="="):   
        self.query.addParameter(name, value, operand)
                
#
# Generates a list of responses in XML format
#
    def makeResponse(self):
        convert = GempakConvert(self.pluginName, self.queryResults)
        return convert.ConvertRadarRMC(self.distinctField)

#
# Returns a string with null response  
#
    def makeNullResponse(self):
        response = ArrayList()
        response.add("Database Query returned no results")
        return response
    
#
# Executes the query and calls appropriate response functions
#    
    def execute(self):
        name = "productCode"
        value = "2"
        operand = "!="
        self.query.addParameter(name, value, operand)
        self.queryResults = self.query.execute()
        if self.queryResults is None:
            self.makeNullResponse()
        else:
            return self.makeResponse()
コード例 #6
0
class GempakCatalogTimeQuery():
    def __init__(self, pluginName):
        self.eventName = None
        self.queryResults = ArrayList()
        self.pluginName = pluginName
        self.query = MetadataCatalogQuery(pluginName)
        self.returnText = False
        self.query.setDistinctField("dataTime")

    def __isMixed(self, s):
        seen_upper = seen_lower = False
        for c in s:
            if c.isupper(): seen_upper = True
            if c.islower(): seen_lower = True
            if seen_upper and seen_lower:
                return True
        return False

    def setReturnText(self):
        self.returnText = True

#
# Set parameters of the metadata catalog query
#

    def setParameters(self, aParms):
        if self.pluginName == "satellite":
            parms = aParms.split("|")
            self.query.addParameter("creatingEntity", parms[0])
            self.query.addParameter("physicalElement", parms[1])
            self.query.addParameter("sectorID", parms[2])
        elif self.pluginName == "mcidas":
            parms = aParms.split("|")
            self.query.addParameter("imageType", parms[0])
            self.query.addParameter("areaName", parms[1])
            self.query.addParameter("resolution", parms[2])
        elif self.pluginName == "radar":
            parms = aParms.split("|")
            theIcao = parms[0].lower()
            productCode = self.descriptionToCode(parms[1])
            self.query.addParameter("icao", theIcao)
            self.query.addParameter("productCode", productCode)
            self.query.addParameter("trueElevationAngle", parms[2])
        elif self.pluginName == "mosaic":
            parms = aParms.split("|")
            prodName = parms[0].upper()
            resolution = "%s" % (int(float(parms[1])) * 1000)
            self.query.addParameter("prodName", prodName)
            self.query.addParameter("resolution", resolution)
        elif self.pluginName == "bufrua":
            self.query.addParameter("wmoHeader", "", "isNotNull")
        elif self.pluginName == "sfcobs":
            self.query.addParameter("wmoHeader", "", "isNotNull")
        elif self.pluginName == "grib":
            parms = aParms.split("|")
            self.query.addParameter("modelInfo.modelName", parms[0].upper())
        elif self.pluginName == "ncgrib":
            parms = aParms.split("|")
            for ii in range(len(parms)):
                if ii == 0:
                    if self.__isMixed(parms[0]):
                        self.query.addParameter("modelInfo.modelName",
                                                parms[0])
                        #print "modelInfo.modelName set to", parms[0]
                    else:
                        self.query.addParameter("modelInfo.modelName",
                                                parms[0].upper())
                        #print "modelInfo.modelName set to", parms[0].upper()
                elif ii == 1:
                    #print "setting eventName to", parms[1]
                    self.query.addParameter("modelInfo.eventName", parms[1])

#
# Returns a string with null response
#

    def makeNullResponse(self):
        nullStr = "Database Query returned no results"
        if self.returnText:
            return nullStr
        else:
            return ResponseMessageGeneric(nullStr)
#
# Generates a list of responses in XML format
#

    def makeResponse(self):
        convert = GempakConvert(self.pluginName, self.queryResults)
        convert2 = GempakConvert()
        convertSt = convert.getStrings()
        returnStr = ''

        for s in convertSt:
            retTime = convert2.dbtimeToDattim(s)
            #
            # add only unique times
            #
            if returnStr.find(retTime) == -1:
                returnStr = returnStr + retTime + '|'

        #
        # sort times before returning
        #
        if self.returnText:
            return "|".join(sorted(returnStr[0:-1].split("|")))
        else:
            return ResponseMessageGeneric("|".join(
                sorted(returnStr[0:-1].split("|"))))

#
# Executes the query and calls appropriate response functions
#

    def execute(self):
        self.queryResults = self.query.execute()
        #
        # Make response based on the query results
        #
        if self.queryResults is None:
            return self.makeNullResponse()
        else:
            return self.makeResponse()

#
# Return the product code given the description
#

    def descriptionToCode(self, aDescription):

        #
        # List of descriptions (keys in dictionary)
        #
        descriptionList = [
            "BREF 1.00", "BREF 2.00", "VEL 1.00", "TOPS 4.00", "SRVEL 1.00",
            "VIL 4.00", "PRCP1 2.00", "PRCPT 2.00"
        ]

        #
        # List of product codes (values in dictionary)
        #
        productCodeList = ["19", "20", "27", "41", "56", "57", "78", "80"]

        #
        # Create a dictionary for key-value relationship
        #

        theMap = {}
        for (key, value) in map(None, descriptionList, productCodeList):
            theMap[key] = value

        #
        # Return a value based on the key
        #

        return theMap[aDescription]
コード例 #7
0
 def __init__(self, pluginName):
     self.queryResults = ArrayList()
     self.pluginName = pluginName
     self.query = MetadataCatalogQuery(pluginName)
コード例 #8
0
 def __init__(self, pluginName):
     self.__cat = MetadataCatalogQuery(pluginName)
コード例 #9
0
ファイル: CatalogQuery.py プロジェクト: KeithLatteri/awips2
 def __init__(self, pluginName):
     self.__cat = MetadataCatalogQuery(pluginName)
コード例 #10
0
class GempakCatalogTimeQuery():
    
    def __init__(self, pluginName):
        self.eventName = None
        self.queryResults = ArrayList()
        self.pluginName = pluginName
        self.query = MetadataCatalogQuery(pluginName)
        self.returnText = False
        self.query.setDistinctField("dataTime")
        
    def __isMixed(self, s):
        seen_upper = seen_lower = False
        for c in s:
            if c.isupper(): seen_upper = True
            if c.islower(): seen_lower = True
            if seen_upper and seen_lower:
                return True
        return False 
    
    def setReturnText (self):
        self.returnText = True
                
#
# Set parameters of the metadata catalog query
#
    def setParameters (self, aParms):
        if self.pluginName == "satellite":
            parms = aParms.split("|")
            self.query.addParameter("creatingEntity", parms[0])
            self.query.addParameter("physicalElement", parms[1])
            self.query.addParameter("sectorID", parms[2])
        elif self.pluginName == "mcidas":
            parms = aParms.split("|")
            self.query.addParameter("imageType", parms[0])
            self.query.addParameter("areaName", parms[1])
            self.query.addParameter("resolution", parms[2])
        elif self.pluginName == "radar":
            parms = aParms.split("|")
            theIcao = parms[0].lower()
            productCode = self.descriptionToCode (parms[1])
            self.query.addParameter("icao", theIcao)
            self.query.addParameter("productCode", productCode)
            self.query.addParameter("trueElevationAngle", parms[2])
        elif self.pluginName == "mosaic":
            parms = aParms.split("|")
            prodName = parms[0].upper()
            resolution = "%s" % ( int ( float ( parms[1] ) ) * 1000 )
            self.query.addParameter("prodName", prodName)
            self.query.addParameter("resolution", resolution)
        elif self.pluginName == "bufrua":
            self.query.addParameter("wmoHeader", "", "isNotNull")
        elif self.pluginName == "sfcobs":
            self.query.addParameter("wmoHeader", "", "isNotNull")
        elif self.pluginName == "grib":
            parms = aParms.split("|")
            self.query.addParameter("modelInfo.modelName",parms[0].upper() )
        elif self.pluginName == "ncgrib":
            parms = aParms.split("|")
            for ii in range(len(parms)):
                if ii == 0: 
                    if self.__isMixed(parms[0]):
                        self.query.addParameter("modelInfo.modelName", parms[0] )
                        #print "modelInfo.modelName set to", parms[0]
                    else:
                        self.query.addParameter("modelInfo.modelName",parms[0].upper() )
                        #print "modelInfo.modelName set to", parms[0].upper()
                elif ii == 1:
                    #print "setting eventName to", parms[1]
                    self.query.addParameter("modelInfo.eventName", parms[1])
            
#
# Returns a string with null response  
#
    def makeNullResponse(self):
        nullStr = "Database Query returned no results"
        if self.returnText:
            return nullStr
        else:
            return ResponseMessageGeneric(nullStr)    
#
# Generates a list of responses in XML format
#
    def makeResponse(self):
        convert = GempakConvert(self.pluginName, self.queryResults)
        convert2 = GempakConvert() 
        convertSt = convert.getStrings()
        returnStr = ''

        for s in convertSt:
            retTime = convert2.dbtimeToDattim(s)
            #
            # add only unique times
            #
            if returnStr.find(retTime) == -1:
                returnStr=returnStr+retTime+'|'
        
        #
        # sort times before returning
        #
        if self.returnText:
            return "|".join(sorted(returnStr[0:-1].split("|")))
        else:
            return ResponseMessageGeneric("|".join(sorted(returnStr[0:-1].split("|"))))
    
#
# Executes the query and calls appropriate response functions
#    
    def execute(self):
    	self.queryResults = self.query.execute()
        #
        # Make response based on the query results
        #        
        if self.queryResults is None:
            return self.makeNullResponse()
        else:
            return self.makeResponse()

#
# Return the product code given the description
#
    def descriptionToCode(self, aDescription):
            
        #
        # List of descriptions (keys in dictionary)
        #
        descriptionList = ["BREF 1.00", 
                           "BREF 2.00",
                           "VEL 1.00",
                           "TOPS 4.00", 
                           "SRVEL 1.00", 
                           "VIL 4.00", 
                           "PRCP1 2.00",
                           "PRCPT 2.00"]
        
        #
        # List of product codes (values in dictionary)
        #
        productCodeList = ["19",
                           "20", 
                           "27",
                           "41",
                           "56",
                           "57",
                           "78",
                           "80"]

        
        #
        # Create a dictionary for key-value relationship
        #
        
        theMap = {}
        for (key, value) in map(None, descriptionList, productCodeList):
            theMap[key] = value
        
        #
        # Return a value based on the key
        #
        
        return theMap[aDescription]