diff --git a/edexOsgi/com.raytheon.uf.edex.dataaccess/.project b/edexOsgi/com.raytheon.uf.edex.dataaccess/.project index 990ffd7b5c..cc9099731d 100644 --- a/edexOsgi/com.raytheon.uf.edex.dataaccess/.project +++ b/edexOsgi/com.raytheon.uf.edex.dataaccess/.project @@ -5,6 +5,11 @@ + + org.python.pydev.PyDevBuilder + + + org.eclipse.jdt.core.javabuilder @@ -24,5 +29,6 @@ org.eclipse.pde.PluginNature org.eclipse.jdt.core.javanature + org.python.pydev.pythonNature diff --git a/edexOsgi/com.raytheon.uf.edex.dataaccess/.pydevproject b/edexOsgi/com.raytheon.uf.edex.dataaccess/.pydevproject new file mode 100644 index 0000000000..40e9f40a0a --- /dev/null +++ b/edexOsgi/com.raytheon.uf.edex.dataaccess/.pydevproject @@ -0,0 +1,5 @@ + + +Default +python 2.7 + diff --git a/edexOsgi/com.raytheon.uf.edex.dataaccess/utility/common_static/base/python/dataaccess/JepRouter.py b/edexOsgi/com.raytheon.uf.edex.dataaccess/utility/common_static/base/python/dataaccess/JepRouter.py index 90d88c9d89..f445e34674 100644 --- a/edexOsgi/com.raytheon.uf.edex.dataaccess/utility/common_static/base/python/dataaccess/JepRouter.py +++ b/edexOsgi/com.raytheon.uf.edex.dataaccess/utility/common_static/base/python/dataaccess/JepRouter.py @@ -33,6 +33,7 @@ # 02/14/13 1614 bsteffen refactor data access framework # to use single request. # 03/03/14 2673 bsteffen Add ability to query only ref times. +# 07/22/14 3185 njensen Added optional/default args to newDataRequest # # # @@ -91,6 +92,41 @@ def getGeometryData(request, times): def getAvailableLocationNames(request): return JavaDataAccessLayer.getAvailableLocationNames(request.toJavaObj()) -def newDataRequest(): - return JDataRequest.JDataRequest(DefaultDataRequest()) +def getAvailableParameters(request): + # TODO + raise Exception('Not implemented yet') + +def getAvailableLevels(request): + # TODO + raise Exception('Not implemented yet') + +def getRequiredIdentifiers(datatype): + # TODO + raise Exception('Not implemented yet') + +def getValidIdentifiers(datatype): + # TODO + raise Exception('Not implemented yet') + +def newDataRequest(datatype, parameters=[], levels=[], locationNames = [], envelope=None, **kwargs): + req = JDataRequest.JDataRequest(DefaultDataRequest()) + if datatype: + req.setDatatype(datatype) + if parameters: + req.setParameters(*parameters) + if levels: + req.setLevels(*levels) + if locationNames: + req.setLocationNames(*locationNames) + if envelope: + req.setEnvelope(envelope) + if kwargs: + # any args leftover are assumed to be identifiers + for key in kwargs: + req.addIdentifier(key, kwargs[key]) + return req + +def getSupportedDatatypes(): + # TODO + raise Exception('Not implemented yet') diff --git a/pythonPackages/ufpy/dataaccess/DataAccessLayer.py b/pythonPackages/ufpy/dataaccess/DataAccessLayer.py index 04071ddf97..6858b6eb12 100644 --- a/pythonPackages/ufpy/dataaccess/DataAccessLayer.py +++ b/pythonPackages/ufpy/dataaccess/DataAccessLayer.py @@ -33,6 +33,7 @@ # 04/10/13 1871 mnash move getLatLonCoords to JGridData and add default args # 05/29/13 2023 dgilling Hook up ThriftClientRouter. # 03/03/14 2673 bsteffen Add ability to query only ref times. +# 07/22/14 3185 njensen Added optional/default args to newDataRequest # # # @@ -115,14 +116,85 @@ def getAvailableLocationNames(request): """ return router.getAvailableLocationNames(request) -def newDataRequest(): +def getAvailableParameters(request): + """ + Gets the available parameters names that match the request without actually + requesting the data. + + Args: + request: the request to find matching parameter names for + + Returns: + a list of strings of available parameter names. + """ + return router.getAvailableParameters(request) + +def getAvailableLevels(request): + """ + Gets the available levels that match the request without actually + requesting the data. + + Args: + request: the request to find matching levels for + + Returns: + a list of strings of available levels. + """ + return router.getAvailableLevels(request) + +def getRequiredIdentifiers(datatype): + """ + Gets the required identifiers for this datatype. These identifiers + must be set on a request for the request of this datatype to succeed. + + Args: + datatype: the datatype to find required identifiers for + + Returns: + a list of strings of required identifiers + """ + return router.getRequiredIdentifiers(datatype) + +def getValidIdentifiers(datatype): + """ + Gets the valid identifiers for this datatype. + + Args: + datatype: the datatype to find valid identifiers for + + Returns: + a list of strings of valid identifiers + """ + return router.getRequiredIdentifiers(datatype) + +def newDataRequest(datatype=None, **kwargs): """" Creates a new instance of IDataRequest suitable for the runtime environment. + Args: + + Args: + datatype: the datatype to create a request for + parameters: a list of parameters to set on the request + levels: a list of levels to set on the request + locationNames: a list of locationNames to set on the request + envelope: an envelope to limit the request + **kwargs: any leftover kwargs will be set as identifiers + Returns: a new IDataRequest + """ + return router.newDataRequest(datatype, **kwargs) + +def getSupportedDatatypes(): """ - return router.newDataRequest() + Gets the datatypes that are supported by the framework + + Returns: + a list of strings of supported datatypes + """ + return router.getSupportedDatatypes() + def changeEDEXHost(newHostName): """" diff --git a/pythonPackages/ufpy/dataaccess/ThriftClientRouter.py b/pythonPackages/ufpy/dataaccess/ThriftClientRouter.py index 47364f1ef0..3c0b24d188 100644 --- a/pythonPackages/ufpy/dataaccess/ThriftClientRouter.py +++ b/pythonPackages/ufpy/dataaccess/ThriftClientRouter.py @@ -30,6 +30,7 @@ # 05/21/13 #2023 dgilling Initial Creation. # 01/06/14 #2537 bsteffen Share geometry WKT. # 03/03/14 #2673 bsteffen Add ability to query only ref times. +# 07/22/14 3185 njensen Added optional/default args to newDataRequest # @@ -117,6 +118,40 @@ class ThriftClientRouter(object): locNamesRequest.setRequestParameters(request) response = self._client.sendRequest(locNamesRequest) return response + + def getAvailableParameters(self, request): + # TODO + raise Exception('Not implemented yet') + + def getAvailableLevels(self, request): + # TODO + raise Exception('Not implemented yet') + + def getRequiredIdentifiers(self, datatype): + # TODO + raise Exception('Not implemented yet') + + def getValidIdentifiers(self, datatype): + # TODO + raise Exception('Not implemented yet') - def newDataRequest(self): - return DefaultDataRequest() + def newDataRequest(self, datatype, parameters=[], levels=[], locationNames = [], envelope=None, **kwargs): + req = DefaultDataRequest() + if datatype: + req.setDatatype(datatype) + if parameters: + req.setParameters(*parameters) + if levels: + req.setLevels(*levels) + if locationNames: + req.setLocationNames(*locationNames) + if envelope: + req.setEnvelope(envelope) + if kwargs: + # any args leftover are assumed to be identifiers + req.identifiers = kwargs + return req + + def getSupportedDatatypes(self): + # TODO + raise Exception('Not implemented yet') diff --git a/pythonPackages/ufpy/dataaccess/__init__.py b/pythonPackages/ufpy/dataaccess/__init__.py index 89c8a700d1..e581bfe3e1 100644 --- a/pythonPackages/ufpy/dataaccess/__init__.py +++ b/pythonPackages/ufpy/dataaccess/__init__.py @@ -86,7 +86,7 @@ class IDataRequest(object): Sets the levels of data to request. Not all datatypes support levels. Args: - levels: a list of strings of level abbreviations to request + levels: a list of strings of level abbreviations to request """ return