104 lines
3.1 KiB
Python
104 lines
3.1 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.
|
|
##
|
|
|
|
|
|
#
|
|
# Python wrapper for PointDataView
|
|
#
|
|
#
|
|
# SOFTWARE HISTORY
|
|
#
|
|
# Date Ticket# Engineer Description
|
|
# ------------ ---------- ----------- --------------------------
|
|
# 07/20/09 njensen Initial Creation.
|
|
#
|
|
#
|
|
#
|
|
|
|
##
|
|
# This is a base file that is not intended to be overridden.
|
|
##
|
|
|
|
class PointDataView:
|
|
|
|
def __init__(self, javaPointDataView):
|
|
self.__javaPdv = javaPointDataView
|
|
self.__keys = []
|
|
keyset = self.__javaPdv.getContainer().getParameters()
|
|
itr = keyset.iterator()
|
|
while itr.hasNext():
|
|
self.__keys.append(str(next(itr)))
|
|
|
|
def __getitem__(self, key):
|
|
result = None
|
|
strValType = self.getType(key)
|
|
if strValType == 'FLOAT':
|
|
result = self.__javaPdv.getFloat(key)
|
|
elif strValType == 'STRING':
|
|
result = self.__javaPdv.getString(key)
|
|
if isinstance(result, bytes):
|
|
result = result.decode()
|
|
elif strValType == 'INT':
|
|
result = self.__javaPdv.getInt(key)
|
|
elif strValType == 'LONG':
|
|
result = self.__javaPdv.getLong(key)
|
|
|
|
return result
|
|
|
|
def getType(self, key):
|
|
val = self.__javaPdv.getType(key)
|
|
if val:
|
|
val = str(val)
|
|
return val
|
|
|
|
def has_key(self, key):
|
|
return self.__keys.__contains__(key)
|
|
|
|
def keys(self):
|
|
return self.__keys
|
|
|
|
def __iter__(self):
|
|
return iter(self.keys())
|
|
|
|
def __contains__(self, key):
|
|
return key in self.__keys
|
|
|
|
def getFillValue(self, key):
|
|
# TODO if we get fill value support in pointdata, hook that up
|
|
return -9999.0
|
|
|
|
def getNumberAllLevels(self, key):
|
|
strValType = self.getType(key)
|
|
jlevels = self.__javaPdv.getNumberAllLevels(key)
|
|
levels = []
|
|
for level in jlevels:
|
|
level = str(level)
|
|
if strValType == 'FLOAT':
|
|
levels.append(float(level))
|
|
elif strValType == 'STRING':
|
|
if isinstance(level, bytes):
|
|
levels.append(level.decode())
|
|
else:
|
|
levels.append(str(level))
|
|
elif strValType == 'INT':
|
|
levels.append(int(level))
|
|
elif strValType == 'LONG':
|
|
levels.append(int(level))
|
|
return levels
|