awips2/edexOsgi/com.raytheon.uf.edex.dataaccess/utility/common_static/base/python/dataaccess/JepRouter.py
Nate Jensen f4dc5f03b6 Omaha #3184 renamed valid identifiers to optional
Change-Id: I9653f9e00b3c693b46b516bc52ff029cd4fe1a81

Former-commit-id: 77d0661861 [formerly 3c1ae47a76] [formerly 77d0661861 [formerly 3c1ae47a76] [formerly 857179e08d [formerly d0e68c2fa1cc531263622410e4364b87f222139f]]]
Former-commit-id: 857179e08d
Former-commit-id: 79ae128758 [formerly f3ce06c00e]
Former-commit-id: 90e35b4745
2014-07-31 09:45:01 -05:00

139 lines
4.9 KiB
Python

# #
# This software was developed and / or modified by Raytheon Company,
# pursuant to Contract DG133W-05-CQ-1067 with the US Government.
#
# U.S. EXPORT CONTROLLED TECHNICAL DATA
# This software product contains export-restricted data whose
# export/transfer/disclosure is restricted by U.S. law. Dissemination
# to non-U.S. persons whether in the United States or abroad requires
# an export license or other authorization.
#
# Contractor Name: Raytheon Company
# Contractor Address: 6825 Pine Street, Suite 340
# Mail Stop B8
# Omaha, NE 68106
# 402.291.0100
#
# See the AWIPS II Master Rights File ("Master Rights File.pdf") for
# further licensing information.
# #
#
# Routes requests to the Data Access Framework through JEP to the Java classes.
# Returns Python objects that wrap Java objects.
#
#
#
# SOFTWARE HISTORY
#
# Date Ticket# Engineer Description
# ------------ ---------- ----------- --------------------------
# 12/10/12 njensen Initial Creation.
# 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
# and added new methods
# 07/30/14 3185 njensen Renamed valid identifiers to optional
#
#
#
from ufpy.dataaccess import IDataRequest
from com.raytheon.uf.common.dataaccess import DataAccessLayer as JavaDataAccessLayer
from com.raytheon.uf.common.dataaccess.impl import DefaultDataRequest
from com.raytheon.uf.common.time import DataTime as JavaDataTime
from com.raytheon.uf.common.geospatial import LatLonReprojection
from com.raytheon.uf.common.python import PythonNumpyFloatArray
import jep
import DataTime
import JGeometryData, JGridData, JDataRequest
import JUtil
def getAvailableTimes(request, refTimeOnly):
javaTimes = JavaDataAccessLayer.getAvailableTimes(request.toJavaObj(), refTimeOnly)
times = []
for jt in javaTimes:
times.append(DataTime.DataTime(jt))
return times
def getGridData(request, times):
if type(times) is list:
# presuming list of DataTimes
jtimes = jep.jarray(len(times), JavaDataTime)
for i in xrange(len(times)):
jtimes[i] = times[i].toJavaObj()
javaData = JavaDataAccessLayer.getGridData(request.toJavaObj(), jtimes)
else:
# presuming TimeRange
javaData = JavaDataAccessLayer.getGridData(request.toJavaObj(), times.toJavaObj())
data = []
for jd in javaData:
data.append(JGridData.JGridData(jd))
return data
def getGeometryData(request, times):
if type(times) is list:
# presuming list of DataTimes
jtimes = jep.jarray(len(times), JavaDataTime)
for i in xrange(len(times)):
jtimes[i] = times[i].toJavaObj()
javaData = JavaDataAccessLayer.getGeometryData(request.toJavaObj(), jtimes)
else:
# presuming TimeRange
javaData = JavaDataAccessLayer.getGeometryData(request.toJavaObj(), times.toJavaObj())
data = []
for jd in javaData:
data.append(JGeometryData.JGeometryData(jd))
return data
def getAvailableLocationNames(request):
jlocs = JavaDataAccessLayer.getAvailableLocationNames(request.toJavaObj())
return JUtil.javaObjToPyVal(jlocs)
def getAvailableParameters(request):
jparams = JavaDataAccessLayer.getAvailableParameters(request.toJavaObj())
return JUtil.javaObjToPyVal(jparams)
def getAvailableLevels(request):
jlevels = JavaDataAccessLayer.getAvailableLevels(request.toJavaObj())
pylevs = []
for jlev in jlevels:
pylevs.append(str(jlev))
return pylevs
def getRequiredIdentifiers(datatype):
jids = JavaDataAccessLayer.getRequiredIdentifiers(datatype)
return JUtil.javaObjToPyVal(jids)
def getOptionalIdentifiers(datatype):
jids = JavaDataAccessLayer.getOptionalIdentifiers(datatype)
return JUtil.javaObjToPyVal(jids)
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():
jsupported = JavaDataAccessLayer.getSupportedDatatypes()
return JUtil.javaObjToPyVal(jsupported)