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