diff --git a/cave/build/cave/memorySettings.xml b/cave/build/cave/memorySettings.xml
index fa2998cf5c..7e1d2bbfa4 100644
--- a/cave/build/cave/memorySettings.xml
+++ b/cave/build/cave/memorySettings.xml
@@ -175,11 +175,11 @@
- 256M
+ 384M
- 64M
+ 96M
diff --git a/cave/build/static/win32.x86/cave/lib/zlib1.dll b/cave/build/static/win32.x86/cave/lib/zlib1.dll
new file mode 100644
index 0000000000..076f50336d
Binary files /dev/null and b/cave/build/static/win32.x86/cave/lib/zlib1.dll differ
diff --git a/cave/com.raytheon.uf.viz.hpe/src/com/raytheon/uf/viz/hpe/rsc/HpeLabelResource.java b/cave/com.raytheon.uf.viz.hpe/src/com/raytheon/uf/viz/hpe/rsc/HpeLabelResource.java
index 1d89badae1..97793709d6 100644
--- a/cave/com.raytheon.uf.viz.hpe/src/com/raytheon/uf/viz/hpe/rsc/HpeLabelResource.java
+++ b/cave/com.raytheon.uf.viz.hpe/src/com/raytheon/uf/viz/hpe/rsc/HpeLabelResource.java
@@ -65,6 +65,7 @@ import com.raytheon.viz.grid.rsc.general.D2DGridResource;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* May 5, 2014 3026 mpduff Initial creation
+ * Dec 16, 2014 3026 mpduff Change location of text
*
*
*
@@ -121,7 +122,7 @@ public class HpeLabelResource extends
.getResourcesByTypeAsType(D2DGridResource.class);
if (!list.isEmpty()) {
double[] pixel = paintProps.getView().getDisplayCoords(
- new double[] { 125, 50 }, target);
+ new double[] { 125, 100 }, target);
RGB color = getCapability(ColorableCapability.class).getColor();
for (D2DGridResource rsc : list) {
GridRecord currentGridRec = rsc.getCurrentGridRecord();
diff --git a/cave/com.raytheon.uf.viz.hpe/src/com/raytheon/uf/viz/hpe/util/HpeUtils.java b/cave/com.raytheon.uf.viz.hpe/src/com/raytheon/uf/viz/hpe/util/HpeUtils.java
index 7d38180a93..17f528b367 100644
--- a/cave/com.raytheon.uf.viz.hpe/src/com/raytheon/uf/viz/hpe/util/HpeUtils.java
+++ b/cave/com.raytheon.uf.viz.hpe/src/com/raytheon/uf/viz/hpe/util/HpeUtils.java
@@ -32,7 +32,8 @@ import com.raytheon.uf.common.dataplugin.grid.dataset.DatasetInfoLookup;
*
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
- * May 6, 2014 3026 mpduff Initial creation
+ * May 6, 2014 3026 mpduff Initial creation.
+ * Jan 6, 2015 3026 mpduff Added Bias HPE.
*
*
*
@@ -43,6 +44,8 @@ import com.raytheon.uf.common.dataplugin.grid.dataset.DatasetInfoLookup;
public class HpeUtils {
private static final String HPE = "HPE";
+ private static final String BIAS_HPE = "BiasHPE";
+
/**
* Determine if this title represents an HPE model.
*
@@ -64,6 +67,7 @@ public class HpeUtils {
if (title == null) {
return false;
}
- return HPE.equals(title);
+
+ return HPE.equals(title) || BIAS_HPE.equals(title);
}
}
diff --git a/cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPResource.java b/cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPResource.java
index 452a15e522..70e3c8620e 100644
--- a/cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPResource.java
+++ b/cave/com.raytheon.uf.viz.monitor.ffmp/src/com/raytheon/uf/viz/monitor/ffmp/ui/rsc/FFMPResource.java
@@ -198,6 +198,7 @@ import com.vividsolutions.jts.geom.Point;
* assignments.
* Sep 23, 2014 3009 njensen Overrode recycleInternal()
* Nov 10, 2014 3026 dhladky HPE BIAS displays.
+ * Dec 16, 2014 3026 mpduff Change location of text
*
*
* @author dhladky
@@ -1495,7 +1496,7 @@ public class FFMPResource extends
private void paintProductString(IGraphicsTarget target,
PaintProperties paintProps) throws VizException {
double[] pixel = paintProps.getView().getDisplayCoords(
- new double[] { 110, 50 }, target);
+ new double[] { 110, 100 }, target);
StringBuilder sb = new StringBuilder();
if (isAutoRefresh || isQuery) {
sb.append("FFMP ").append(df.format(getTime())).append(" hour ")
@@ -4171,8 +4172,9 @@ public class FFMPResource extends
}
/**
- * This method creates the upper left legend text for HPE derived QPE sources.
- * It is only used for HPE QPE sources.
+ * This method creates the upper left legend text for HPE derived QPE
+ * sources. It is only used for HPE QPE sources.
+ *
* @param date
* @return
*/
@@ -4190,18 +4192,18 @@ public class FFMPResource extends
}
/**
- * HPE source lookup job
+ * HPE source lookup job
*
*
- *
+ *
* SOFTWARE HISTORY
- *
+ *
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Nov 11, 2014 3026 dhladky Initial creation
- *
+ *
*
- *
+ *
* @author dhladky
* @version 1.0
*/
diff --git a/cave/com.raytheon.uf.viz.thinclient.cave/src/com/raytheon/uf/viz/thinclient/cave/refresh/ThinClientDataUpdateTree.java b/cave/com.raytheon.uf.viz.thinclient.cave/src/com/raytheon/uf/viz/thinclient/cave/refresh/ThinClientDataUpdateTree.java
index 302610d774..f4763e6a2e 100644
--- a/cave/com.raytheon.uf.viz.thinclient.cave/src/com/raytheon/uf/viz/thinclient/cave/refresh/ThinClientDataUpdateTree.java
+++ b/cave/com.raytheon.uf.viz.thinclient.cave/src/com/raytheon/uf/viz/thinclient/cave/refresh/ThinClientDataUpdateTree.java
@@ -28,12 +28,12 @@ import java.util.Map;
import java.util.Set;
import java.util.TimeZone;
-import com.raytheon.uf.common.inventory.exception.DataCubeException;
import com.raytheon.uf.common.dataplugin.PluginDataObject;
import com.raytheon.uf.common.dataquery.requests.DbQueryRequest;
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
import com.raytheon.uf.common.dataquery.requests.RequestConstraint.ConstraintType;
import com.raytheon.uf.common.dataquery.responses.DbQueryResponse;
+import com.raytheon.uf.common.inventory.exception.DataCubeException;
import com.raytheon.uf.common.status.IUFStatusHandler;
import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
@@ -62,6 +62,7 @@ import com.raytheon.viz.grid.util.RadarAdapter;
* Dec 13, 2011 bsteffen Initial creation
* Feb 21, 2014 DR 16744 D. Friedman Add radar/grid updates
* Apr 1, 2014 DR 17220 D. Friedman Handle uninitialized grid inventory
+ * Dec 15, 2014 3923 bsteffen Retrieve pdo for grid instead of dataURI.
*
*
*
@@ -179,14 +180,14 @@ public class ThinClientDataUpdateTree extends DataUpdateTree {
newQuery.put("insertTime", new RequestConstraint(time,
ConstraintType.GREATER_THAN));
dbRequest.setConstraints(newQuery);
- dbRequest.addRequestField("dataURI");
DbQueryResponse response = null;
try {
response = (DbQueryResponse) ThriftClient.sendRequest(dbRequest);
- for (String dataURI : response.getFieldObjects("dataURI",
- String.class)) {
+
+ for (PluginDataObject pdo : response
+ .getEntityObjects(PluginDataObject.class)) {
AlertMessage am = new AlertMessage();
- am.dataURI = dataURI;
+ am.dataURI = pdo.getDataURI();
am.decodedAlert = RecordFactory.getInstance().loadMapFromUri(
am.dataURI);
messages.add(am);
diff --git a/cave/com.raytheon.viz.gfe/localization/gfe/userPython/textProducts/HLSTCV_Common.py b/cave/com.raytheon.viz.gfe/localization/gfe/userPython/textProducts/HLSTCV_Common.py
index 495b5f317e..8433cc49a9 100644
--- a/cave/com.raytheon.viz.gfe/localization/gfe/userPython/textProducts/HLSTCV_Common.py
+++ b/cave/com.raytheon.viz.gfe/localization/gfe/userPython/textProducts/HLSTCV_Common.py
@@ -1,35 +1,170 @@
-# Version 2014.11.21-0
+# Version 2014.12.17-0
+
import GenericHazards
import JsonSupport
+import LocalizationSupport
import string, time, os, errno, re, types, copy, collections
import LogStream, ModuleAccessor, SampleAnalysis, EditAreaUtils
import math
+import pprint
-try: # See if this is the AWIPS I environment
- import AFPS
- from AFPS import AbsTime
- from IFPDialog import Dialog
- AWIPS_ENVIRON = "AWIPS1"
-except: # Must be the AWIPS II environment
- from AbsTime import *
- from StartupDialog import IFPDialog as Dialog
- from LockingFile import File
- from com.raytheon.uf.common.localization import PathManagerFactory
- from com.raytheon.uf.common.localization import LocalizationContext_LocalizationType as LocalizationType
- AWIPS_ENVIRON = "AWIPS2"
+from AbsTime import *
+from StartupDialog import IFPDialog as Dialog
+from LockingFile import File
+AWIPS_ENVIRON = "AWIPS2"
class TextProduct(GenericHazards.TextProduct):
Definition = copy.deepcopy(GenericHazards.TextProduct.Definition)
def __init__(self):
GenericHazards.TextProduct.__init__(self)
+ self._pp = pprint.PrettyPrinter()
- ######################################################
- # Populate Product Parts for HLS and TCV
- ######################################################
+
+ ###############################################################
+ ### Hazards and Additional Hazards
+ ### allowedHazards is used for VTEC records and summary
+ ### headlines
+ ### allowedHeadlines are additional hazards reported in
+ ### certain sections
+ ###############################################################
+
+ ###############################################################
+ ### Initialization
+ ###############################################################
+
+ ###############################################################
+ ### Analysis Lists, SampleAnalysis Overrides and other
+ ### analysis related methods
+ ###############################################################
+
+ ###############################################################
+ ### Product Parts Implementation
+ ###############################################################
+
+ ###############################################################
+ ### Product Dictionary methods for creating, populating and
+ ### formatting the product dictionary
+ ###############################################################
+
+ ###############################################################
+ ### Sampling and Statistics related methods
+ ###############################################################
+
+ ###############################################################
+ ### Area, Zone and Segment related methods
+ ###############################################################
+
+ ###############################################################
+ ### Hazards related methods
+ ###############################################################
+
+ ###############################################################
+ ### Time related methods
+ ###############################################################
+
+ ###############################################################
+ ### Storm Information and TCP related methods
+ ###############################################################
+
+ ###############################################################
+ ### Advisory related methods
+ ###############################################################
+
+ ###############################################################
+ ### GUI related methods
+ ###############################################################
+
+
+ ###############################################################
+ ### Hazards and Additional Hazards
+
+ def allowedHazards(self):
+ tropicalActions = ["NEW", "EXA", "CAN", "CON"]
+ return [
+ ('HU.A',tropicalActions,'Hurricane'),
+ ('HU.W',tropicalActions,'Hurricane'),
+ ('SS.A',tropicalActions,'Surge'),
+ ('SS.W',tropicalActions,'Surge'),
+ ('TR.A',tropicalActions,'Tropical'),
+ ('TR.W',tropicalActions,'Tropical'),
+ ]
+ def allowedHeadlines(self):
+ allActions = ["NEW", "EXA", "EXB", "EXT", "CAN", "CON", "EXP"]
+ return [
+ ('FF.A', allActions, 'Flood'), # FLASH FLOOD WATCH
+ ('FA.A', allActions, 'Flood'), # FLOOD WATCH
+ ('TO.A', allActions, 'Convective'), # TORNADO WATCH
+ ]
+
+ ###############################################################
+ ### Initialization
+
+ def _initializeVariables(self, argDict):
+ # Get variables
+ error = self._getVariables(argDict)
+ if error is not None:
+ return error
+
+ self._backupFullStationID = self._fullStationID
+ self._argDict = argDict
+
+ argDict["definition"] = self._definition
+
+ self._initializeTimeVariables(argDict)
+
+ self._initializeHazardsTable(argDict)
+
+ error = self._initializeStormInformation()
+ if error is not None:
+ return error
+
+ # Set up the areaDictionary for all to use
+ accessor = ModuleAccessor.ModuleAccessor()
+ self._areaDict = accessor.variable(self._areaDictionary, "AreaDictionary")
+ self._tpc = TextProductCommon()
+ self._tpc.setUp(self._areaDict)
+
+ return None
+
+ ###############################################################
+ ### Analysis Lists, SampleAnalysis Overrides and other
+ ### analysis related methods
+
+ def moderated_dict(self, parmHisto, timeRange, componentName):
+ """
+ Specifies the lower percentages and upper percentages of
+ data to be thrown out for moderated stats.
+ """
+ # COMMENT: This dictionary defines the low and high limit at which
+ # outliers will be removed when calculating moderated stats.
+ # By convention the first value listed is the percentage
+ # allowed for low values and second the percentage allowed
+ # for high values.
+
+ # Get Baseline thresholds
+ dict = SampleAnalysis.SampleAnalysis.moderated_dict(
+ self, parmHisto, timeRange, componentName)
+
+ # Change thresholds
+ dict["Wind"] = (0, 15)
+ dict["WindGust"] = (0, 15)
+ dict["pws34int"] = (0, 5)
+ dict["pws64int"] = (0, 5)
+ dict["pwsD34"] = (0, 5)
+ dict["pwsN34"] = (0, 5)
+ dict["pwsD64"] = (0, 5)
+ dict["pwsN64"] = (0, 5)
+ dict["InundationMax"] = (0, 5)
+ dict["InundationTiming"] = (0, 5)
+ return dict
+
+ ###############################################################
+ ### Product Parts Implementation
+
################# Product Level
-
+
def _wmoHeader(self, productDict, productSegmentGroup, arguments=None):
headerDict = collections.OrderedDict()
headerDict['TTAAii'] = self._wmoID
@@ -55,7 +190,193 @@ class TextProduct(GenericHazards.TextProduct):
headerDict['issuedByString'] = self.getIssuedByString()
headerDict['issuanceTimeDate'] = self._timeLabel
productDict['productHeader'] = headerDict
+
+ ################# Mixed Level
+
+ def _ugcHeader(self, productDict, productSegmentGroup, productSegment):
+ productDict['ugcCodes'] = self._formatUGC_entries()
+ self._ugcHeader_value = self._tpc.formatUGCs(self._ugcs, self._expireTime)
+ productDict['ugcHeader'] = self._ugcHeader_value
+
+ ################# Product Parts Processing
+
+ def _processProductParts(self, productGenerator, productDict, productSegmentGroup, productParts):
+ '''
+ @param productDict
+ @param productSegmentGroup
+ @param productParts
+ @return product dictionary created from the product parts
+
+ Note that this method is called recursively such that a product part is allowed to be
+ a set of subParts specified as follows:
+ (subPartLabel, list of productParts for each subPart)
+ For example, we have
+ ('segments', [list of [segment product parts]])
+ # Product Dictionary
+ # Contains information for all formats e.g.
+ # partner XML, CAP, and Legacy text
+ '''
+
+
+ if type(productParts) is types.DictType:
+ arguments = productParts.get('arguments')
+ partsList = productParts.get('partsList')
+ else:
+ partsList = productParts
+
+ removedParts = []
+ for part in partsList:
+ if type(part) is types.TupleType:
+ # e.g. subPart == 'segments', subPartsLists == list of parts for each segment
+ subPart, subPartsLists = part
+ subParts = []
+ for subPartsList in subPartsLists:
+ subDict = collections.OrderedDict()
+ self._processProductParts(productGenerator, subDict, productSegmentGroup, subPartsList)
+ subParts.append(subDict)
+ # e.g. productDict['segments'] = segment dictionaries
+ productDict[subPart] = subParts
+ else:
+ if part not in self._noOpParts():
+ execString = 'productGenerator._'+part+'(productDict, productSegmentGroup, arguments)'
+ exec execString
+ if part not in productDict:
+ removedParts.append(part)
+
+ for part in removedParts:
+ self.debug_print("in _processProductParts - " +
+ "Removing product part = %s" % (part), 1)
+ partsList.remove(part)
+
+ ################# Product Parts Helper Methods
+
+ def _formatUGC_entries(self):
+ ugcCodeList = []
+ for ugc in self._ugcs:
+ areaDictEntry = self._areaDict.get(ugc)
+ if areaDictEntry is None:
+ # We are not localized correctly for the hazard
+ # So get the first dictionary entry
+ self.logger.info('Not Localized for the hazard area -- ugc' + ugc)
+ keys = self._areaDict.keys()
+ areaDictEntry = self._areaDict.get(keys[0])
+ ugcEntry = collections.OrderedDict()
+ ugcEntry['state'] = areaDictEntry.get('stateAbbr')
+ ugcEntry['type'] = self._getUgcInfo(ugc, 'type')
+ ugcEntry['number'] = self._getUgcInfo(ugc, 'number')
+ ugcEntry['text'] = ugc
+ ugcEntry['subArea'] = ''
+ ugcCodeList.append(ugcEntry)
+ return ugcCodeList
+
+ def _getUgcInfo(self, ugc, part='type'):
+ if part == 'type':
+ if ugc[2] == 'C':
+ return 'County'
+ else:
+ return 'Zone'
+ if part == 'number':
+ return ugc[3:]
+
+ ###############################################################
+ ### Product Dictionary methods for creating, populating and
+ ### formatting the product dictionary
+
+ def _createProductDictionary(self, segmentList):
+ # Create the product dictionary
+ productSegmentGroup = self._groupSegments(segmentList)
+
+ productDict = self._initializeProductDictionary(productSegmentGroup)
+ productParts = productSegmentGroup.get('productParts')
+ productDict['productParts'] = productParts
+ self._processProductParts(self, productDict, productSegmentGroup, productParts)
+
+ return productDict
+
+ def _initializeProductDictionary(self, productSegmentGroup):
+ '''
+ Set up the Product Dictionary for the given Product consisting of a
+ group of segments.
+
+ Fill in the dictionary information for the product header.
+
+ @param productSegmentGroup: holds meta information about the product
+ @return initialized product dictionary
+
+ ***********
+ Example segmented product:
+
+ WGUS63 KBOU 080400
+ FFABOU
+
+ URGENT - IMMEDIATE BROADCAST REQUESTED
+ FLOOD WATCH
+ NATIONAL WEATHER SERVICE DENVER CO
+ 400 AM GMT TUE FEB 8 2011
+
+ Overview Headline
+ Overview
+
+ ***********
+ Example non-segmented product:
+ WGUS63 KBOU 080400
+ FFWBOU
+
+ '''
+ self._productID = productSegmentGroup.get('productID', 'NNN')
+ if self._areaName != '':
+ self._areaName = ' FOR ' + self._areaName + '\n'
+ self._geoType = productSegmentGroup.get('geoType')
+ self._mapType = productSegmentGroup.get('mapType')
+ self._productTimeZones = []
+
+ # Fill in product dictionary information
+ productDict = collections.OrderedDict()
+ productDict['productID'] = self._productID
+ return productDict
+
+ def _formatProductDictionary(self, formatterClass, productDict):
+ formatter = formatterClass(self)
+ product = formatter.execute(productDict)
+
+ return product
+
+ ###############################################################
+ ### Sampling and Statistics related methods
+
+ def _getStatValue(self, statDict, element, method=None, dataType=None):
+ stats = statDict.get(element, None)
+ if stats is None: return None
+ if type(stats) is types.ListType:
+ stats = stats[0]
+ stats, tr = stats
+ if dataType==self.VECTOR():
+ stats, dir = stats
+ return self.getValue(stats, method)
+
+ ###############################################################
+ ### Area, Zone and Segment related methods
+
+ def _allAreas(self):
+ return self._inlandAreas() + self._coastalAreas()
+
+ def _computeIntersectAreas(self, editAreas, argDict):
+ editAreaUtils = EditAreaUtils.EditAreaUtils()
+ editAreaUtils.setUp(None, argDict)
+ surgeEditArea = editAreaUtils.getEditArea("StormSurgeWW_EditArea", argDict)
+ intersectAreas =[]
+ for (_, editAreaLabel) in editAreas:
+ editArea = editAreaUtils.getEditArea(editAreaLabel, argDict)
+ intersectAreaLabel = "intersect_"+editAreaLabel
+ intersectArea = editAreaUtils.intersectAreas(intersectAreaLabel, editArea, surgeEditArea)
+ grid = intersectArea.getGrid()
+ if grid.isAnyBitsSet():
+ editAreaUtils.saveEditAreas([intersectArea])
+ intersectAreas.append((intersectAreaLabel, intersectAreaLabel))
+
+ return intersectAreas
+
###############################################################
### Hazards related methods
@@ -72,31 +393,60 @@ class TextProduct(GenericHazards.TextProduct):
self._hazardsTable = self._getHazardsTable(argDict, self.filterMethod)
argDict["hazards"] = self._hazardsTable
-
- def _setVTECActiveTable(self, argDict):
- dataMgr = argDict["dataMgr"]
- gfeMode = dataMgr.getOpMode().name()
-
- if gfeMode == "PRACTICE":
- argDict["vtecActiveTable"] = "PRACTICE"
- else:
- argDict["vtecActiveTable"] = "active"
-
- def _getAllVTECRecords(self):
- allRecords = []
- for segment in self._segmentList:
- vtecRecords = self._hazardsTable.getHazardList(segment)
- allRecords += vtecRecords
-
- return allRecords
-
+
+ def _getHazardsTable(self, argDict, filterMethod, editAreas=None):
+ # Set up edit areas as list of lists
+ # Need to check hazards against all edit areas in the CWA MAOR
+ argDict["combinations"]= [(self._allAreas(),"Region1")]
+ dfEditAreas = argDict["combinations"]
+ editAreas = []
+ for area, label in dfEditAreas:
+ if type(area) is types.ListType:
+ editAreas.append(area)
+ elif type(area) is types.TupleType: #LatLon
+ editAreas.append([self.__getLatLonAreaName(area)])
+ else:
+ editAreas.append([area])
+ # Get Product ID and other info for HazardsTable
+ pil = self._pil.upper() # Ensure PIL is in UPPERCASE
+ stationID4 = self._fullStationID
+ productCategory = pil[0:3] #part of the pil
+ definition = argDict['definition']
+ sampleThreshold = definition.get("hazardSamplingThreshold", (10, None))
+ # Process the hazards
+ accurateCities = definition.get('accurateCities', 0)
+ cityRefData = []
+ import HazardsTable
+ hazards = HazardsTable.HazardsTable(
+ argDict["ifpClient"], editAreas, productCategory, filterMethod,
+ argDict["databaseID"],
+ stationID4, argDict["vtecActiveTable"], argDict["vtecMode"], sampleThreshold,
+ creationTime=argDict["creationTime"], accurateCities=accurateCities,
+ cityEditAreas=cityRefData, dataMgr=argDict['dataMgr'])
+ return hazards
+
def _ignoreActions(self):
# Ignore hazards with these action codes in the overview headlines
# NOTE: the VTEC and segments will still include them correctly.
return ['CAN', 'UPG']
- # In order to have the HazardsTable use the allowedHeadlines list,
- # we need to supply a filterMethod that uses allowedHeadlines instead of allowedHazards
+ def _setVTECActiveTable(self, argDict):
+ dataMgr = argDict["dataMgr"]
+ gfeMode = dataMgr.getOpMode().name()
+
+ self.debug_print("*" *100, 1)
+ self.debug_print("gfeMode = '%s'" % (gfeMode), 1)
+ self.debug_print("*" *100, 1)
+
+ if gfeMode == "PRACTICE":
+ argDict["vtecActiveTable"] = "PRACTICE"
+ else:
+ argDict["vtecActiveTable"] = "active"
+
+ def _getVtecRecords(self, segment, vtecEngine=None):
+ vtecRecords = self._hazardsTable.getHazardList(segment)
+ return vtecRecords
+
def _getAllowedHazardList(self, allowedHazardList=None):
if allowedHazardList is None:
allowedHazardList = self.allowedHazards()
@@ -107,7 +457,7 @@ class TextProduct(GenericHazards.TextProduct):
else:
hazardList.append(h)
return hazardList
-
+
def _altFilterMethod(self, hazardTable, allowedHazardsOnly=False):
# Remove hazards not in allowedHeadlines list
allowedHazardList = self._getAllowedHazardList(self.allowedHeadlines())
@@ -156,15 +506,16 @@ class TextProduct(GenericHazards.TextProduct):
for area in hazard['id']:
hazDict.setdefault((hdln, phen, sig), []).append(area)
- #self.debug_print("hazDict", hazDict
+ self.debug_print("hazDict = %s" % (self._pp.pformat(hazDict)), 1)
hazardHdlns=[]
huAreas = []
-# self.debug_print("\nAdditional Hazard Headlines"
+ self.debug_print("Additional Hazard Headlines", 1)
for key in hazDict.keys():
hdln, phen, sig = key
huAreas = huAreas + hazDict[key]
hazardHdln = ((hdln, "NEW", phen,sig), hazDict[key], [],[],[])
- #self.debug_print(" ", hazardHdln, hazDict[key]
+ self.debug_print(" %s" % (self._pp.pformat(hazardHdln)), 1)
+ self.debug_print(" %s" % (self._pp.pformat(hazDict[key])), 1)
hazardHdlns.append(hazardHdln)
return hazardHdlns, huAreas
@@ -187,14 +538,12 @@ class TextProduct(GenericHazards.TextProduct):
# Otherwise, they are ignored.
#
# E.g. hdlnList = self._checkHazard(hazardHdlns, [("FA","W")], returnList=True)
- self.debug_print("_checkHazard hazardHdlns is %s" % (hazardHdlns), 1)
- self.debug_print("_checkHazard phenSigList is %s" % (phenSigList), 1)
+ self.debug_print("_checkHazard hazardHdlns is %s" % (self._pp.pformat(hazardHdlns)), 1)
+ self.debug_print("_checkHazard phenSigList is %s" % (self._pp.pformat(phenSigList)), 1)
chosen = []
for key, landList, marineList, coastalList, inlandList in hazardHdlns:
-# self.debug_print("what is mode?", mode
- # SARAH - we do not want to consider marine hazards in this product
-# hazAreas = landList+marineList
+ # We do not want to consider marine hazards in this product
hazAreas = landList
hazValue = (key, hazAreas)
self.debug_print("hazValue is %s" % (repr(hazValue)), 1)
@@ -209,10 +558,9 @@ class TextProduct(GenericHazards.TextProduct):
# Check for land, marine, etc.
for checkAreaType in checkAreaTypes:
exec "testList = " + checkAreaType + "List"
-# self.debug_print("testList is", testList
+ self.debug_print("testList is %s" % (testList), 1)
if testList != []:
chosen.append(hazValue)
-# self.debug_print("chosen is ", chosen
elif checkAreas is not None:
acceptedAreas=[]
for hazArea in hazAreas:
@@ -224,46 +572,12 @@ class TextProduct(GenericHazards.TextProduct):
chosen.append(hazValue)
if not returnList and chosen!=[]: break
- self.debug_print("MATT _checkHazard chosen = %s" % (repr(chosen)), 1)
+ self.debug_print("In _checkHazard chosen = %s" %
+ (self._pp.pformat(chosen)), 1)
if not returnList:
return chosen!=[]
return chosen
- def getVtecRecords(self, segment, vtecEngine=None):
- vtecRecords = self._hazardsTable.getHazardList(segment)
- return vtecRecords
-
- def _getHazardsTable(self, argDict, filterMethod, editAreas=None):
- # Set up edit areas as list of lists
- # Need to check hazards against all edit areas in the CWA MAOR
- argDict["combinations"]= [(self._allAreas(),"Region1")]
- dfEditAreas = argDict["combinations"]
- editAreas = []
- for area, label in dfEditAreas:
- if type(area) is types.ListType:
- editAreas.append(area)
- elif type(area) is types.TupleType: #LatLon
- editAreas.append([self.__getLatLonAreaName(area)])
- else:
- editAreas.append([area])
- # Get Product ID and other info for HazardsTable
- pil = self._pil.upper() # Ensure PIL is in UPPERCASE
- stationID4 = self._fullStationID
- productCategory = pil[0:3] #part of the pil
- definition = argDict['definition']
- sampleThreshold = definition.get("hazardSamplingThreshold", (10, None))
- # Process the hazards
- accurateCities = definition.get('accurateCities', 0)
- cityRefData = []
- import HazardsTable
- hazards = HazardsTable.HazardsTable(
- argDict["ifpClient"], editAreas, productCategory, filterMethod,
- argDict["databaseID"],
- stationID4, argDict["vtecActiveTable"], argDict["vtecMode"], sampleThreshold,
- creationTime=argDict["creationTime"], accurateCities=accurateCities,
- cityEditAreas=cityRefData, dataMgr=argDict['dataMgr'])
- return hazards
-
###############################################################
### Time related methods
@@ -278,7 +592,7 @@ class TextProduct(GenericHazards.TextProduct):
self._expireTime = self._issueTime_secs + self._purgeTime*3600
self._timeLabel = self.getCurrentTime(
argDict, "%l%M %p %Z %a %b %e %Y", stripLeading=1)
-
+
def _determineTimeRanges(self, argDict):
# Set up the time range for 0-120 hours
@@ -298,12 +612,15 @@ class TextProduct(GenericHazards.TextProduct):
trList = []
self._periodList = []
for index, tr in enumerate(subRanges):
- # self.debug_print(tr)
+ self.debug_print("In _determineTimeRanges -> tr = %s" %
+ (self._pp.pformat(tr)), 1)
trList.append((tr, "Label"))
if index == 0:
startTime = tr.startTime()
localtime = time.localtime(startTime.unixTime())
+
+ # Determine the number of hours to the next 6AM or 6PM period
if localtime.tm_hour < 6:
periodLength = 6 - localtime.tm_hour
elif localtime.tm_hour >= 6 and localtime.tm_hour < 18:
@@ -311,6 +628,8 @@ class TextProduct(GenericHazards.TextProduct):
else:
periodLength = 30 - localtime.tm_hour
+ # Don't allow the first period to be less than 3 hours long;
+ # instead just start with the next period
if periodLength < 3:
periodStart = startTime + periodLength*3600
period = self.makeTimeRange(periodStart, periodStart+12*3600)
@@ -318,10 +637,13 @@ class TextProduct(GenericHazards.TextProduct):
period = self.makeTimeRange(startTime, startTime+periodLength*3600)
self._periodList.append(period)
+
for i in range(1,10):
startTime = period.endTime() # Start where the last period leaves off
period = self.makeTimeRange(startTime, startTime+12*3600)
self._periodList.append(period)
+ self.debug_print("final periodList =\n\n%s\n" %
+ (self._pp.pformat(self._periodList)), 1)
self._timeRangeList = trList
def _calculateStartTime(self, localCreationTime):
@@ -330,21 +652,21 @@ class TextProduct(GenericHazards.TextProduct):
day = localCreationTime[2]
hour = localCreationTime[3]
- # If we are more than halfway though a 3 hr period
- if hour % 3 > 1:
- adjust = 3 # move on to the next 3 hr block
+ # Define a variable to control which resolution we want
+ resolution = self._resolution() # 6 is also a valid option
+
+ # If we are more than halfway though a block we would want
+ if hour % resolution > resolution / 2:
+ adjust = resolution # move on to the next block
else:
adjust = 0
-# if hour % 6 > 3:
-# adjust = 6 # move on to the next 6 hr block
-# else:
-# adjust = 0
-# self.debug_print("MATT: _calculateStartTime %d adjust = %d" % (hour % 6, adjust)
+ self.debug_print("In _calculateStartTime %d adjust = %d" %
+ (hour % resolution, adjust), 1)
- # Now "truncate" to a 6-hourly boundary and compute startTime in local Time.
-# hour = int( (hour/6) * 6) + adjust
- hour = int( (hour/3) * 3) + adjust
+ # Now "truncate" to a block boundary and compute startTime in local time.
+# hour = int( (hour/3) * 3) + adjust
+ hour = int( (hour/resolution) * resolution) + adjust
if hour > 23:
hour -= 24
elif hour < 0:
@@ -363,7 +685,7 @@ class TextProduct(GenericHazards.TextProduct):
# DAY + MORNING / AFTERNOON / EVENING / OVERNIGHT.
# If wholePeriod, format FROM ... TO...
- self.debug_print("MATT Format period wholePeriod = %s, period = %s, useEndTime =%s" %
+ self.debug_print("Format period wholePeriod = %s, period = %s, useEndTime =%s" %
(str(wholePeriod), str(period), str(useEndTime)), 1)
if period is None:
return ""
@@ -372,10 +694,10 @@ class TextProduct(GenericHazards.TextProduct):
else:
startTime = period.startTime()
result = self._getTimeDesc(startTime, resolution, shiftToLocal)
- self.debug_print("MATT result = '%s'" % (result), 1)
+ self.debug_print("_getTimeDesc result = '%s'" % (result), 1)
if wholePeriod:
endResult = self._getTimeDesc(period.endTime(), resolution, shiftToLocal)
- self.debug_print("MATT endResult = '%s'" % (endResult), 1)
+ self.debug_print("_getTimeDesc endResult = '%s'" % (endResult), 1)
if result != endResult:
result=result + " TO "+ endResult
return result
@@ -445,69 +767,6 @@ class TextProduct(GenericHazards.TextProduct):
else: partOfDay = "evening"
return prevDay, partOfDay
- ###############################################################
- ### Sampling and Statistics related methods
-
- def moderated_dict(self, parmHisto, timeRange, componentName):
- """
- Specifies the lower percentages and upper percentages of
- data to be thrown out for moderated stats.
- """
- # COMMENT: This dictionary defines the low and high limit at which
- # outliers will be removed when calculating moderated stats.
- # By convention the first value listed is the percentage
- # allowed for low values and second the percentage allowed
- # for high values.
-
- # Get Baseline thresholds
- dict = SampleAnalysis.SampleAnalysis.moderated_dict(
- self, parmHisto, timeRange, componentName)
-
- # Change thresholds
- dict["Wind"] = (0, 15)
- dict["WindGust"] = (0, 15)
- dict["pws34int"] = (0, 5)
- dict["pws64int"] = (0, 5)
- dict["pwsD34"] = (0, 5)
- dict["pwsN34"] = (0, 5)
- dict["pwsD64"] = (0, 5)
- dict["pwsN64"] = (0, 5)
- dict["InundationMax"] = (0, 5)
- dict["InundationTiming"] = (0, 5)
- return dict
-
- def _getStatValue(self, statDict, element, method=None, dataType=None):
- stats = statDict.get(element, None)
- if stats is None: return None
- if type(stats) is types.ListType:
- stats = stats[0]
- stats, tr = stats
- if dataType==self.VECTOR():
- stats, dir = stats
- return self.getValue(stats, method)
-
- ###############################################################
- ### Area, Zone and Segment related methods
-
- def _allAreas(self):
- return self._inlandAreas() + self._coastalAreas()
-
- def _computeIntersectAreas(self, editAreas, argDict):
- editAreaUtils = EditAreaUtils.EditAreaUtils()
- editAreaUtils.setUp(None, argDict)
- surgeEditArea = editAreaUtils.getEditArea("StormSurgeWW_EditArea", argDict)
- intersectAreas =[]
- for (_, editAreaLabel) in editAreas:
- editArea = editAreaUtils.getEditArea(editAreaLabel, argDict)
- intersectAreaLabel = "intersect_"+editAreaLabel
- intersectArea = editAreaUtils.intersectAreas(intersectAreaLabel, editArea, surgeEditArea)
- grid = intersectArea.getGrid()
- if grid.isAnyBitsSet():
- editAreaUtils.saveEditAreas([intersectArea])
- intersectAreas.append((intersectAreaLabel, intersectAreaLabel))
-
- return intersectAreas
-
###############################################################
### Storm Information and TCP related methods
@@ -758,16 +1017,21 @@ NEXT COMPLETE ADVISORY...500 AM EDT.
$$
FORECASTER STEWART"""
-
+
###############################################################
### Advisory related methods
-
+
+ def _initializeAdvisories(self):
+ self._currentAdvisory = dict()
+ self._currentAdvisory['ZoneData'] = dict()
+ self._loadLastTwoAdvisories()
+
def _synchronizeAdvisories(self):
- pathManager = PathManagerFactory.getPathManager()
- context = pathManager.getContextForSite(LocalizationType.CAVE_STATIC, self._site)
-
+
# Retrieving a directory causes synching to occur
- file = pathManager.getLocalizationFile(context, self._getAdvisoryPath()).getFile()
+ file = LocalizationSupport.getLocalizationFile(LocalizationSupport.CAVE_STATIC,
+ LocalizationSupport.SITE, self._site,
+ self._getAdvisoryPath()).getFile()
return file
@@ -783,17 +1047,22 @@ FORECASTER STEWART"""
return path
- def _loadLastTwoAdvisories(self):
+ def _getStormAdvisoryNames(self):
advisoryDirectoryPath = self._getLocalAdvisoryDirectoryPath()
filenames = os.listdir(advisoryDirectoryPath)
allAdvisories = filter(lambda filename: filename[-5:] == ".json", filenames)
- self.debug_print("allAdvisories = %s" % (repr(allAdvisories)))
+ self.debug_print("allAdvisories = %s" % (self._pp.pformat(allAdvisories)))
stormAdvisories = filter(lambda filename: self._getStormNameFromTCP() in filename,
allAdvisories)
stormAdvisories = map(lambda filename: filename[:-5], stormAdvisories)
- self.debug_print("stormAdvisories = %s" % (repr(stormAdvisories)))
+ self.debug_print("stormAdvisories = %s" % (self._pp.pformat(stormAdvisories)))
+
+ return stormAdvisories
+
+ def _loadLastTwoAdvisories(self):
+ stormAdvisories = self._getStormAdvisoryNames()
# We need to reverse the order of the advisories so the latest
# advisories come first in this list
@@ -813,8 +1082,8 @@ FORECASTER STEWART"""
else: # Must be the HLS
lastTwoAdvisories = stormAdvisories[:2]
- self.debug_print("MATT DEBUG: last two advisories = %s" %
- (repr(lastTwoAdvisories)), 1)
+ self.debug_print("DEBUG: last two advisories = %s" %
+ (self._pp.pformat(lastTwoAdvisories)), 1)
self._previousAdvisory = None
if len(lastTwoAdvisories) >= 1:
self._previousAdvisory = self._loadAdvisory(lastTwoAdvisories[0])
@@ -828,12 +1097,12 @@ FORECASTER STEWART"""
fileName = self._getAdvisoryFilename(advisoryName)
try:
- pythonDict = JsonSupport.loadFromJson(LocalizationType.CAVE_STATIC,
+ pythonDict = JsonSupport.loadFromJson(LocalizationSupport.CAVE_STATIC,
self._site,
fileName)
- self.debug_print("SARAH: File contents for %s:" % (fileName), 1)
- self.debug_print(repr(pythonDict), 1)
+ self.debug_print("File contents for %s:" % (fileName), 1)
+ self.debug_print(self._pp.pformat(pythonDict), 1)
# Only use transmitted advisories
if pythonDict["Transmitted"] == False and advisoryName != "pending":
@@ -841,8 +1110,7 @@ FORECASTER STEWART"""
else:
return pythonDict
except Exception, e:
- self.debug_print("SARAH Load Exception for %s : %s" %
- (fileName, e), 1)
+ self.debug_print("Load Exception for %s : %s" % (fileName, e), 1)
return None
def _getAdvisoryPath(self):
@@ -857,7 +1125,7 @@ FORECASTER STEWART"""
advisoryFilename = os.path.join(self._getAdvisoryPath(),
advisoryName+".json")
return advisoryFilename
-
+
###############################################################
### GUI related methods
@@ -899,48 +1167,7 @@ FORECASTER STEWART"""
"headers": ("blue", ("Helvetica", 14, "bold")),
"instructions": (None, ("Helvetica", 12, "italic")),
}
-
- ###############################################################
- ### TCV Statistics
-
- def threatKeyOrder(self):
- return [None, "None", "Elevated", "Mod", "High", "Extreme"]
-
- def allowedHazards(self):
- tropicalActions = ["NEW", "EXA", "CAN", "CON"]
- return [
- ('HU.A',tropicalActions,'Hurricane'),
- ('HU.W',tropicalActions,'Hurricane'),
- ('SS.A',tropicalActions,'Surge'),
- ('SS.W',tropicalActions,'Surge'),
- ('TR.A',tropicalActions,'Tropical'),
- ('TR.W',tropicalActions,'Tropical'),
- ]
-
- def allowedHeadlines(self):
- allActions = ["NEW", "EXA", "EXB", "EXT", "CAN", "CON", "EXP"]
- return [
- ('FF.A', allActions, 'Flood'), # FLASH FLOOD WATCH
- ('FA.A', allActions, 'Flood'), # FLOOD WATCH
- ('TO.A', allActions, 'Convective'), # TORNADO WATCH
- ]
-
- def _initializeAdvisories(self):
- self._currentAdvisory = dict()
- self._currentAdvisory['ZoneData'] = dict()
- self._loadLastTwoAdvisories()
-
- def _initializeSegmentZoneData(self, segment):
- # The current advisory will be populated when setting a section's stats
- self._currentAdvisory['ZoneData'][segment] = {
- "WindThreat": None,
- "WindForecast": None,
- "StormSurgeThreat": None,
- "StormSurgeForecast": None,
- "FloodingRainThreat": None,
- "FloodingRainForecast": None,
- "TornadoThreat": None,
- }
+
import Tkinter
class Common_Dialog(Dialog):
@@ -950,6 +1177,7 @@ class Common_Dialog(Dialog):
self._varDict = {} # all end results must be saved here
self._infoDict = infoDict
self._parent = parent
+ self._pp = pprint.PrettyPrinter()
Dialog.__init__(self, parent=None, title=title)
def getVarDict(self):
diff --git a/cave/com.raytheon.viz.gfe/localization/gfe/userPython/utilities/TCVDictionary.py b/cave/com.raytheon.viz.gfe/localization/gfe/userPython/utilities/TCVDictionary.py
index 6bbe5711f2..4af55bc76c 100644
--- a/cave/com.raytheon.viz.gfe/localization/gfe/userPython/utilities/TCVDictionary.py
+++ b/cave/com.raytheon.viz.gfe/localization/gfe/userPython/utilities/TCVDictionary.py
@@ -630,7 +630,7 @@ PotentialImpactStatements = {
},
}
-EvacuationStatements = ["For those under evacuation orders, leave as soon as practical with a destination in mind. Gas up your vehicle well ahead of time. Be sure that you take essential materiasl from your Emergency Supplies Kit. Let others know where you are going and when you intend to arrive.",
+EvacuationStatements = ["For those under evacuation orders, leave as soon as practical with a destination in mind. Gas up your vehicle well ahead of time. Be sure that you take essential materials from your Emergency Supplies Kit. Let others know where you are going and when you intend to arrive.",
"If evacuating the area, stick to prescribed evacuation routes. Look for additional traffic information on roadway smart signs and listen to select radio channels for further travel instructions. Do not use your cell phone while driving."
"For those not under evacuation orders, understand that there are inherent risks to evacuation (such as traffic congestion, accidents, and driving in bad weather), so evacuate only if necessary. Help keep roadways open for those that are under evacuation orders."]
@@ -678,7 +678,6 @@ OtherPreparednessActions = {
"Problems with sewer backups can contaminate standing flood waters. Keep children away. Also, listen for boil water alerts relative to communities whose tap water may have become temporarily non-potable."],
}
-AdditionalSources = ["- For information on appropriate preparations see ready.gov/louisiana",
- "- For information on local evacuation shelters see www.emergency.louisana.gov/disaster_evaluation_guide.html",
+AdditionalSources = ["- For information on appropriate preparations see ready.gov",
"- For information on creating an emergency plan see getagameplan.org",
"- For additional disaster preparedness information see redcross.org"]
diff --git a/cave/com.raytheon.viz.grid/localization/menus/mrms/index.xml b/cave/com.raytheon.viz.grid/localization/menus/mrms/index.xml
index 028671a071..5dc174e36c 100644
--- a/cave/com.raytheon.viz.grid/localization/menus/mrms/index.xml
+++ b/cave/com.raytheon.viz.grid/localization/menus/mrms/index.xml
@@ -4,7 +4,7 @@
Darrel Kingfield NOAA/NSSL/CIMMS 09-02-2014 Initial File Creation
-->
-
\ No newline at end of file
diff --git a/cave/com.raytheon.viz.grid/localization/menus/mrms/mrms.xml b/cave/com.raytheon.viz.grid/localization/menus/mrms/mrms.xml
index d0f34c3b70..6fec96a168 100644
--- a/cave/com.raytheon.viz.grid/localization/menus/mrms/mrms.xml
+++ b/cave/com.raytheon.viz.grid/localization/menus/mrms/mrms.xml
@@ -5,8 +5,6 @@
-->
-
-
-
-
-
\ No newline at end of file
+
+
+
diff --git a/cave/com.raytheon.viz.grid/plugin.xml b/cave/com.raytheon.viz.grid/plugin.xml
index 6cc5628c92..a680a122ca 100644
--- a/cave/com.raytheon.viz.grid/plugin.xml
+++ b/cave/com.raytheon.viz.grid/plugin.xml
@@ -53,4 +53,21 @@
name="Grid"
category="com.raytheon.uf.viz.productbrowser.productbrowserpreferencespage"/>
+
+
+
+
+
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/DisplayFieldData.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/DisplayFieldData.java
index ecb7e731d7..6f1072b9fe 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/DisplayFieldData.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/DisplayFieldData.java
@@ -11,7 +11,7 @@ package com.raytheon.viz.mpe.ui;
* ------------ ---------- ----------- --------------------------
* Jun 9, 2011 rgeorge Initial creation
* Jun 30, 2014 17457 snaples Updated getCv_use to return name
- *
+ * Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts.
*
*
* @author rgeorge
@@ -56,7 +56,7 @@ public enum DisplayFieldData {
mlqmosaic("mpe_mlqmosaic_dir", "Q2 MultiSensor Mosaic", 3600, "PRECIP_ACCUM"),
//best estimate QPE
- Xmrg("rfcwide_xmrg_dir", "Best Estimate QPE (in)"), //
+ Xmrg("rfcwide_xmrg_dir", "Best Estimate QPE (in)", 3600, "PRECIP_ACCUM" ), //
p3lMosaic("rfcwide_p3lmosaic_dir",
"P3 Local Bias Corrected Radar-Derived Precip (in)", 3600, "PRECIP_ACCUM"), //
@@ -146,11 +146,18 @@ public enum DisplayFieldData {
}
}
+ public String getFieldName() {
+ return name().toUpperCase();
+ }
+
+
/**
* @return the cv_use
*/
public String getCv_use() {
- cv_use = name().toUpperCase();
+ if (cv_use == null) {
+ cv_use = getFieldName();
+ }
return cv_use;
}
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java
index 8e829a6cfc..7b9f897daa 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/DrawDQCStations.java
@@ -84,8 +84,6 @@ import com.raytheon.viz.mpe.util.DailyQcUtils;
public class DrawDQCStations {
private static DrawDQCStations instance = null;
-
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
private static final List pColorSetGroup = MPEColors
.build_mpe_colors();
@@ -101,13 +99,13 @@ public class DrawDQCStations {
int points_flag;
- boolean qpf_on = MPEDisplayManager.getCurrent().isQpf();
+ boolean qpf_on = false;
boolean flf_on = false;
boolean maxmin_on = false;
- int isom = dqc.isom;
+ int isom = DailyQcUtils.isom;
int pcpn_time_step = 0;
@@ -119,7 +117,7 @@ public class DrawDQCStations {
public static int grids_flag = 0;
- int dflag[] = dqc.dflag;
+ int dflag[] = DailyQcUtils.dflag;
int pcpn_time = 0;
@@ -298,25 +296,25 @@ public class DrawDQCStations {
time_pos = 0;
display_flag = 0;
hed = 0;
- plot_view = dqc.plot_view;
- contour_flag = dqc.contour_flag;
- points_flag = dqc.points_flag;
+ plot_view = DailyQcUtils.plot_view;
+ contour_flag = DailyQcUtils.contour_flag;
+ points_flag = DailyQcUtils.points_flag;
qpf_on = MPEDisplayManager.getCurrent().isQpf();
flf_on = MPEDisplayManager.getCurrent().isZflag();
maxmin_on = MPEDisplayManager.getCurrent().isMaxmin();
tbuf = new StringBuilder();
- isom = dqc.isom;
+ isom = DailyQcUtils.isom;
pcpn_time_step = MPEDisplayManager.pcpn_time_step;
- map_flag = dqc.map_flag;
- pcp_flag = dqc.pcp_flag;
- pcpn_day = dqc.pcpn_day;
- grids_flag = dqc.grids_flag;
- dflag = dqc.dflag;
- pcpn_time = dqc.pcpn_time;
-// pdata = DailyQcUtils.pdata;
- old_isom = dqc.old_isom;
-// tdata = DailyQcUtils.tdata;
-// zdata = DailyQcUtils.zdata;
+ map_flag = DailyQcUtils.map_flag;
+ pcp_flag = DailyQcUtils.pcp_flag;
+ pcpn_day = DailyQcUtils.pcpn_day;
+ grids_flag = DailyQcUtils.grids_flag;
+ dflag = DailyQcUtils.dflag;
+ pcpn_time = DailyQcUtils.pcpn_time;
+// pdata = DailyQcUtils.pdata;
+ old_isom = DailyQcUtils.old_isom;
+// tdata = DailyQcUtils.tdata;
+// zdata = DailyQcUtils.zdata;
/*
* get the token dqc_preprocessor_basetime, the default value is 12Z
@@ -431,14 +429,17 @@ public class DrawDQCStations {
if (contour_flag == 1) {
Set mode = mpd.getDisplayMode();
- if (md.getResourceList().containsRsc(pgp)) {
- md.getResourceList().removeRsc(pgp);
+ if (display.getDescriptor().getResourceList()
+ .containsRsc(pgp)) {
+ display.getDescriptor().getResourceList()
+ .removeRsc(pgp);
pgp.dispose();
}
if (mode.contains(DisplayMode.Contour)) {
// we are ok
} else {
mpd.toggleDisplayMode(DisplayMode.Contour);
+ mode = mpd.getDisplayMode();
if (mode.contains(DisplayMode.Image)) {
mpd.toggleDisplayMode(DisplayMode.Image);
}
@@ -717,7 +718,7 @@ public class DrawDQCStations {
Calendar ltime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
StringBuilder mbuf = new StringBuilder();
- int dqcEndingObsTime = dqc.getEnding6HourObsTime();
+ int dqcEndingObsTime = DailyQcUtils.getEnding6HourObsTime();
tbuf = new StringBuilder();
if (qpf_on == true) {
@@ -731,10 +732,10 @@ public class DrawDQCStations {
/* Precipitation period is always 12z-12z. */
if ((pcpn_time < 2) && (pcpn_time_step == 0)) {
- ltime.setTime(dqc.pdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.pdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.pdata[pcpn_day].data_time);
}
tbuf.append("Precipitation ");
@@ -784,18 +785,18 @@ public class DrawDQCStations {
tbuf.append(" ending at 12z");
}
- if (dqc.pdata[pcpn_day].level == 1) {
+ if (DailyQcUtils.pdata[pcpn_day].level == 1) {
tbuf.append(" - Level 1");
- } else if (dqc.pdata[pcpn_day].level == 2) {
+ } else if (DailyQcUtils.pdata[pcpn_day].level == 2) {
tbuf.append(" - Level 2");
}
- if (dqc.pdata[pcpn_day].used[ptime_pos] == 4) {
+ if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
- } else if ((dqc.pdata[pcpn_day].used[ptime_pos] == 3)
- || (dqc.pdata[pcpn_day].used[ptime_pos] == 2)) {
+ } else if ((DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 3)
+ || (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
- } else if (dqc.pdata[pcpn_day].used[ptime_pos] == 1) {
+ } else if (DailyQcUtils.pdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
@@ -810,19 +811,19 @@ public class DrawDQCStations {
if (dqcEndingObsTime == 12) {
/* Times: 18, 00, 06, 12 */
if (pcpn_time < 1) {
- ltime.setTime(dqc.zdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.zdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
}
} else {
/* Times 12, 18, 00, 06 */
if (pcpn_time < 2) {
- ltime.setTime(dqc.zdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.zdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.zdata[pcpn_day].data_time);
}
}
@@ -882,20 +883,20 @@ public class DrawDQCStations {
}
- if (dqc.zdata[pcpn_day].level[ptime_pos] == 1) {
+ if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 1) {
tbuf.append(" - Level 1");
- } else if (dqc.zdata[pcpn_day].level[ptime_pos] == 2) {
+ } else if (DailyQcUtils.zdata[pcpn_day].level[ptime_pos] == 2) {
tbuf.append(" - Level 2");
}
- if (dqc.zdata[pcpn_day].used[ptime_pos] == 6) {
+ if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 6) {
tbuf.append(" Calculated");
- } else if (dqc.zdata[pcpn_day].used[ptime_pos] == 4) {
+ } else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
- } else if ((dqc.zdata[pcpn_day].used[ptime_pos] == 3)
- || (dqc.zdata[pcpn_day].used[ptime_pos] == 2)) {
+ } else if ((DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 3)
+ || (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
- } else if (dqc.zdata[pcpn_day].used[ptime_pos] == 1) {
+ } else if (DailyQcUtils.zdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
@@ -915,18 +916,18 @@ public class DrawDQCStations {
if (dqcEndingObsTime == 12) {
if ((pcpn_time < 1) && (pcpn_time_step == 0)) {
- ltime.setTime(dqc.tdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.tdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
}
} else {
if ((pcpn_time < 2) && (pcpn_time_step == 0)) {
- ltime.setTime(dqc.tdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
ltime.add(Calendar.SECOND, -86400);
} else {
- ltime.setTime(dqc.tdata[pcpn_day].data_time);
+ ltime.setTime(DailyQcUtils.tdata[pcpn_day].data_time);
}
}
@@ -994,18 +995,18 @@ public class DrawDQCStations {
tbuf.append(" ending at 12z");
}
- if (dqc.tdata[pcpn_day].level[ptime_pos] == 1) {
+ if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 1) {
tbuf.append(" - Level 1");
- } else if (dqc.tdata[pcpn_day].level[ptime_pos] == 2) {
+ } else if (DailyQcUtils.tdata[pcpn_day].level[ptime_pos] == 2) {
tbuf.append(" - Level 2");
}
- if (dqc.tdata[pcpn_day].used[ptime_pos] == 4) {
+ if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 4) {
tbuf.append(" Saved");
- } else if ((dqc.tdata[pcpn_day].used[ptime_pos] == 3)
- || (dqc.tdata[pcpn_day].used[ptime_pos] == 2)) {
+ } else if ((DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 3)
+ || (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 2)) {
tbuf.append(" Modified");
- } else if (dqc.tdata[pcpn_day].used[ptime_pos] == 1) {
+ } else if (DailyQcUtils.tdata[pcpn_day].used[ptime_pos] == 1) {
tbuf.append(" Not Modified");
} else {
tbuf.append(" - No Data");
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/GroupEditPrecipStns.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/GroupEditPrecipStns.java
index e32d951ae6..98b0bc8d00 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/GroupEditPrecipStns.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/GroupEditPrecipStns.java
@@ -36,7 +36,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* ------------ ---------- ----------- --------------------------
* Jun 17, 2009 snaples Initial creation
* May 06, 2011 #8994 jpiatt Added set precipitation value as zero
- *
+ * Sep 04, 2014 283 cgobs Fixed possible selection of filtered-out gages
*
*
* @author snaples
@@ -45,15 +45,13 @@ import com.vividsolutions.jts.geom.Coordinate;
public class GroupEditPrecipStns {
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
-
public void group_edit_precip_stations(ReferencedCoordinate rcoord) {
int time_pos;
int i, m, k;
float lat, lon;
double testdist, maxdist;
int isave;
- int max_stations = dqc.precip_stations.size();
+ int max_stations = DailyQcUtils.precip_stations.size();
Coordinate coord = new Coordinate();
try {
@@ -64,7 +62,7 @@ public class GroupEditPrecipStns {
}
if (MPEDisplayManager.pcpn_time_step == 0) {
- time_pos = dqc.pcpn_time;
+ time_pos = DailyQcUtils.pcpn_time;
} else {
time_pos = 4;
@@ -78,47 +76,61 @@ public class GroupEditPrecipStns {
* mouse click point.
*/
for (i = 0; i < max_stations; i++) {
- if (dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].data < 0) {
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data < 0) {
continue;
}
- if (dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].data < QcPrecipOptionsDialog
+ //precip filter
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data < QcPrecipOptionsDialog
.getPointFilterValue()) {
continue;
}
+ //reverse precip filter
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].data > QcPrecipOptionsDialog
+ .getPointFilterReverseValue()) {
+ continue;
+ }
+
+ //elevation filter
+ if (DailyQcUtils.precip_stations.get(i).elev < DailyQcUtils.elevation_filter_value)
+ {
+ continue;
+ }
+
+
/* Retrieve the latitude and longitude of this station. */
- lat = dqc.precip_stations.get(i).lat;
- lon = dqc.precip_stations.get(i).lon;
+ lat = DailyQcUtils.precip_stations.get(i).lat;
+ lon = DailyQcUtils.precip_stations.get(i).lon;
- if (dqc.precip_stations.get(i).tip == 0
- && dqc.gage_char[0] == -1) {
+ if (DailyQcUtils.precip_stations.get(i).tip == 0
+ && DailyQcUtils.gage_char[0] == -1) {
continue;
}
- if (dqc.precip_stations.get(i).tip == 1
- && dqc.gage_char[1] == -1) {
+ if (DailyQcUtils.precip_stations.get(i).tip == 1
+ && DailyQcUtils.gage_char[1] == -1) {
continue;
}
- for (m = 0; m < dqc.tsmax; m++) {
+ for (m = 0; m < DailyQcUtils.tsmax; m++) {
- if ((dqc.precip_stations.get(i).parm.substring(3, 5)
- .equalsIgnoreCase(dqc.ts[m].abr))
- && dqc.dflag[m + 1] == 1) {
+ if ((DailyQcUtils.precip_stations.get(i).parm.substring(3, 5)
+ .equalsIgnoreCase(DailyQcUtils.ts[m].abr))
+ && DailyQcUtils.dflag[m + 1] == 1) {
break;
}
}
- if (m == dqc.tsmax) {
+ if (m == DailyQcUtils.tsmax) {
continue;
}
for (m = 0; m < 9; m++) {
- if (m == dqc.pdata[dqc.pcpn_day].stn[i].frain[time_pos].qual
- && dqc.qflag[m] == 1) {
+ if (m == DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i].frain[time_pos].qual
+ && DailyQcUtils.qflag[m] == 1) {
break;
}
@@ -143,19 +155,19 @@ public class GroupEditPrecipStns {
return;
}
- if (dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual != GroupEditStationsDialog.group_qual) {
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual != GroupEditStationsDialog.group_qual) {
QcPrecipOptionsDialog.renderGridsBtn.setEnabled(true);
}
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual = (short) GroupEditStationsDialog.group_qual;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual = (short) GroupEditStationsDialog.group_qual;
if (GroupEditStationsDialog.group_qual == 1
&& time_pos == 4
- && dqc.pdata[dqc.pcpn_day].stn[isave].sflag[time_pos] == 1) {
+ && DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].sflag[time_pos] == 1) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].data = dqc.pdata[dqc.pcpn_day].stn[isave].rrain[time_pos].data;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].data = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].rrain[time_pos].data;
- dqc.pdata[dqc.pcpn_day].stn[isave].sflag[time_pos] = -1;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].sflag[time_pos] = -1;
}
@@ -164,7 +176,7 @@ public class GroupEditPrecipStns {
|| GroupEditStationsDialog.group_qual == 0 || GroupEditStationsDialog.group_qual == 8)) {
for (k = 0; k < 4; k++) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].qual = (short) GroupEditStationsDialog.group_qual;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].qual = (short) GroupEditStationsDialog.group_qual;
}
}
@@ -176,12 +188,12 @@ public class GroupEditPrecipStns {
* and QC codes to "Manual"
*/
if (GroupEditStationsDialog.group_qual == 2) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].data = 0.0f;
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[time_pos].qual = 2;
- if ((dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].data - 0.0) < 0.0001) {
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].data = 0.0f;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[time_pos].qual = 2;
+ if ((DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].data - 0.0) < 0.0001) {
for (k = 0; k < 4; k++) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].data = 0.0f;
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[k].qual = 2;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].data = 0.0f;
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[k].qual = 2;
}
}
}
@@ -190,23 +202,23 @@ public class GroupEditPrecipStns {
if (time_pos != 4
&& GroupEditStationsDialog.group_qual == 1
- && dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual != 5
- && dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual != 4) {
- dqc.pdata[dqc.pcpn_day].stn[isave].frain[4].qual = (short) GroupEditStationsDialog.group_qual;
+ && DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual != 5
+ && DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual != 4) {
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[isave].frain[4].qual = (short) GroupEditStationsDialog.group_qual;
}
for (k = 0; k < 5; k++) {
if (k < 4) {
- time_pos = dqc.pcpn_day * 4 + k;
+ time_pos = DailyQcUtils.pcpn_day * 4 + k;
} else {
- time_pos = 40 + dqc.pcpn_day;
+ time_pos = 40 + DailyQcUtils.pcpn_day;
}
- dqc.pcp_in_use[time_pos] = -1;
+ DailyQcUtils.pcp_in_use[time_pos] = -1;
- if (dqc.pdata[dqc.pcpn_day].used[k] != 0) {
- dqc.pdata[dqc.pcpn_day].used[k] = 2;
+ if (DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[k] != 0) {
+ DailyQcUtils.pdata[DailyQcUtils.pcpn_day].used[k] = 2;
}
}
return;
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java
index 2660a8a54f..10d03622d9 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/OtherPrecipOptions.java
@@ -45,7 +45,6 @@ import com.raytheon.viz.mpe.util.MakeRsel;
import com.raytheon.viz.mpe.util.QCStations;
import com.raytheon.viz.mpe.util.QCTStations;
import com.raytheon.viz.mpe.util.ReadFreezingStationList;
-import com.raytheon.viz.mpe.util.ReadPrecipStationList;
import com.raytheon.viz.mpe.util.ReadTemperatureStationList;
import com.raytheon.viz.mpe.util.RenderPcp;
import com.raytheon.viz.mpe.util.RenderT;
@@ -442,8 +441,8 @@ public class OtherPrecipOptions {
MakeRsel mr = new MakeRsel();
// Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
Calendar tmtime = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
- ReadPrecipStationList rp = new ReadPrecipStationList();
- int num_stations = rp.getNumPstations();
+// ReadPrecipStationList rp = new ReadPrecipStationList();
+ int num_stations = dqc.precip_stations.size();
String s = appsDefaults.getToken(dqc_ending_6hour_obstime_tok);
int dqc_ending_6hour_obstime = ((!(null == s)) ? Integer.parseInt(s)
: -1);
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveBestEstimate.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveBestEstimate.java
index 342cf0281c..4b94128770 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveBestEstimate.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveBestEstimate.java
@@ -16,6 +16,14 @@
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
+ *
+ *
+ * SOFTWARE HISTORY
+ *
+ * Date Ticket# Engineer Description
+ * ------------ ---------- ----------- --------------------------
+ * Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts.
+ *
**/
package com.raytheon.viz.mpe.ui.actions;
@@ -116,7 +124,7 @@ public class SaveBestEstimate {
String rfc = MPEDataManager.getInstance().getRFC();
- update_rwr_save(rfc, editDate, bestEstField.getCv_use());
+ update_rwr_save(rfc, editDate, bestEstField.getFieldName());
XmrgFile xmrgFile = MPEDisplayManager.getXmrgFile(bestEstField,
editDate);
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java
index e7cd5bc289..17bc4fb92c 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/actions/SaveLevel2Data.java
@@ -1032,7 +1032,7 @@ public class SaveLevel2Data {
/* build map file */
System.out.println("Building MAP .");
- found: for (m = 0; mean_areal_precip_global[m].hb5 != ""; m++) {
+ found: for (m = 0; mean_areal_precip_global[m] != null; m++) {
for (k = 0; k < 4; k++) {
num = j * 4 + 3 - k;
@@ -1047,9 +1047,11 @@ public class SaveLevel2Data {
}
- if (mean_areal_precip_global[m].hb5 == "") {
+ if (mean_areal_precip_global[m] != null) {
+ if (mean_areal_precip_global[m].hb5 == "") {
System.out.println("MAP.hb5 is empty, continuing. ");
continue;
+ }
}
gm.setTime(dqc.pdata[j].data_time);
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/ChooseDataPeriodDialog.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/ChooseDataPeriodDialog.java
index 54d532a304..575d32c179 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/ChooseDataPeriodDialog.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/ChooseDataPeriodDialog.java
@@ -167,7 +167,6 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
cal.setTime(prevDate);
if( prevHydDate == null ){
- // prevHydDate = prevDate;
prevHydDate = displayMgr.getCurrentEditDate();
hydroCal.setTime(prevHydDate);
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/EditPrecipStationsDialog.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/EditPrecipStationsDialog.java
index 6203fece5a..d085318e9e 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/EditPrecipStationsDialog.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/EditPrecipStationsDialog.java
@@ -387,6 +387,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
if (srain.data > -98) {
if (time_pos == HOURS_24 && srain.data >= 0) {
snow = true;
+ System.out.println("Snow data is true for station.");
}
}
@@ -476,6 +477,7 @@ public class EditPrecipStationsDialog extends AbstractMPEDialog implements
"Snow water change is %5.2f in.", srain.data));
if (time_pos == HOURS_24 && srain.data >= 0) {
snow = true;
+ System.out.println("Snow water change is available for " + selectedStation.hb5);
}
}
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/QcPrecipOptionsDialog.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/QcPrecipOptionsDialog.java
index 4e2b430a46..952b0f8a80 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/QcPrecipOptionsDialog.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/QcPrecipOptionsDialog.java
@@ -210,8 +210,8 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
Shell parent = this.getParent();
Display display = parent.getDisplay();
MPEDisplayManager displayMgr = MPEDisplayManager.getCurrent();
- Date prevDate = displayMgr.getCurrentEditDate();
- Date currDate = ChooseDataPeriodDialog.prevDate;
+ Date prevDate = ChooseDataPeriodDialog.getCurrentHydroEditDate();
+ Date currDate = ChooseDataPeriodDialog.prevHydDate;
String QcArea = ChooseDataPeriodDialog.prevArea;
AppsDefaults appDefaults = AppsDefaults.getInstance();
DisplayFieldData df = displayMgr.getDisplayFieldType();
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DeletePolygonDlg.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DeletePolygonDlg.java
index 34a1209d0f..7df54c8c8b 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DeletePolygonDlg.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DeletePolygonDlg.java
@@ -56,7 +56,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* Polygon values will now be
* displayed for polygons with
* the "sub" action.
- *
+ * Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts.
*
*
* @author mpduff
@@ -286,8 +286,8 @@ public class DeletePolygonDlg extends CaveSWTDialog {
polygonListBox.removeAll();
- String type = displayManager.getDisplayFieldType().getCv_use()
- .toUpperCase();
+ String type = displayManager.getDisplayFieldType().getFieldName();
+
productTF.setText(type);
polygonList = PolygonEditManager.getPolygonEdits(fieldData, editDate);
recreatePolygonListBox();
@@ -314,7 +314,7 @@ public class DeletePolygonDlg extends CaveSWTDialog {
PolygonEditAction action = data.getEditAction();
if (action == PolygonEditAction.SUB) {
- String value = data.getSubDrawSource().getCv_use();
+ String value = data.getSubDrawSource().getFieldName();
polygonListBox.add(String.format(format2, number, displayed,
persist, action.toPrettyName(), value));
} else {
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DrawPolygonDlg.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DrawPolygonDlg.java
index e011b4dc25..485d42cc88 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DrawPolygonDlg.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/DrawPolygonDlg.java
@@ -33,6 +33,7 @@ import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
@@ -63,6 +64,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
* Jan 29, 2014 16561 snaples Updated processDrawPrecipValue to remove polygon wireframe after setting value.
* Feb 2, 2014 16201 snaples Added saved data flag support
* Apr 28, 2014 16707 snaples Added code to save and set location of dialog box when moved.
+ * Jan 12, 2015 16993 snaples Restored code for Substitute Field Combo box.
*
*
*
@@ -78,6 +80,9 @@ public class DrawPolygonDlg extends CaveSWTDialog {
private static final String MAKE_PERSISTENT = "Make Persistent";
+ private DisplayFieldData[] displayFieldDataArray;
+ private String[] displayTypeNameArray;
+
/**
* Bold Font.
*/
@@ -88,6 +93,11 @@ public class DrawPolygonDlg extends CaveSWTDialog {
*/
private Font font = null;
+ /**
+ * The field type selection Combo control.
+ */
+ private Combo fieldTypeCombo = null;
+
/**
* The precip value spinner control.
*/
@@ -227,7 +237,7 @@ public class DrawPolygonDlg extends CaveSWTDialog {
GridData gd = new GridData(345, SWT.DEFAULT);
subGroup.setLayoutData(gd);
- getSubChecks(subGroup);
+ createFieldCombo(subGroup);
// Create Substitute button
final Button subBtn = new Button(subGroup, SWT.PUSH);
@@ -349,398 +359,80 @@ public class DrawPolygonDlg extends CaveSWTDialog {
* @param groupComp
* The group composite
*/
- private void getSubChecks(Group groupComp) {
+ private void createFieldCombo(Group groupComp) {
// Spacer
- Label spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
+
+ // Create a container to hold the label and the combo box.
+ GridData gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
+ Composite prodListComp = new Composite(shell, SWT.NONE);
+ GridLayout prodListCompLayout = new GridLayout(2, false);
+ prodListComp.setLayout(prodListCompLayout);
+ prodListComp.setLayoutData(gd);
- Button radarMosaicChk = new Button(groupComp, SWT.RADIO);
- GridData gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- radarMosaicChk.setLayoutData(gd);
- radarMosaicChk.setText("Radar Mosaic");
- radarMosaicChk.setFont(font);
- radarMosaicChk.setLayoutData(gd);
- // Default to radar mosaic on dialog creation
- radarMosaicChk.setSelection(true);
- subType = DisplayFieldData.rMosaic;
- radarMosaicChk.addSelectionListener(new SelectionAdapter() {
+ gd = new GridData(SWT.FILL, SWT.CENTER, true, false);
+ Label fieldTypeLabel = new Label(prodListComp, SWT.CENTER);
+ fieldTypeLabel.setText(SUBSTITUTE_VALUE_TEXT);
+ fieldTypeLabel.setLayoutData(gd);
+
+ gd = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
+ fieldTypeCombo = new Combo(groupComp, SWT.LEFT | SWT.DROP_DOWN
+ | SWT.READ_ONLY);
+
+ if (displayFieldDataArray == null)
+ {
+ displayFieldDataArray = MPEDisplayManager.mpe_qpe_fields;
+ }
+
+ // Label spaceLabel = new Label(groupComp, SWT.NONE);
+ // spaceLabel.setText("***** ");
+
+ int selectedFieldIndex = 0;
+
+ //find the index of the selected field
+ for (selectedFieldIndex = 0; selectedFieldIndex < displayFieldDataArray.length; selectedFieldIndex++)
+ {
+ if (displayFieldDataArray[selectedFieldIndex] == subType)
+ {
+ break;
+ }
+ }
+
+ //create and initialize the display field type name array
+ displayTypeNameArray = new String[displayFieldDataArray.length];
+
+ for (int i = 0; i < displayFieldDataArray.length; i++) {
+
+ String fieldName = displayFieldDataArray[i].toString();
+ // System.out.println("DrawPolygon.createFieldCombo(): FieldName = :" + fieldName + ":");
+ displayTypeNameArray[i] = fieldName;
+ }
+
+ //select the field
+ fieldTypeCombo.setTextLimit(35);
+ fieldTypeCombo.setLayoutData(gd);
+ fieldTypeCombo.setItems(displayTypeNameArray);
+ fieldTypeCombo.select(selectedFieldIndex);
+
+ fieldTypeCombo.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.rMosaic;
- }
+ String selectedFieldString = fieldTypeCombo.getText();
+ // System.out.println("DrawPolygon.createFieldCombo(): selectedFieldString = " +
+ // selectedFieldString);
+
+ subType = DisplayFieldData.fromDisplayNameString(selectedFieldString);
+
+ // if (subType != null)
+// {
+ // System.out.println("DrawPolygon.createFieldCombo(): subType = " +
+ // subType.toString());
+ // }
+ }
});
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button avgRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- avgRadarMosaicChk.setLayoutData(gd);
- avgRadarMosaicChk.setText("Average Radar Mosaic");
- avgRadarMosaicChk.setFont(font);
- avgRadarMosaicChk.setLayoutData(gd);
- avgRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.avgrMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button maxRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- maxRadarMosaicChk.setLayoutData(gd);
- maxRadarMosaicChk.setText("Max Radar Mosaic");
- maxRadarMosaicChk.setFont(font);
- maxRadarMosaicChk.setLayoutData(gd);
- maxRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.maxrMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button fieldBiasRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- fieldBiasRadarMosaicChk.setLayoutData(gd);
- fieldBiasRadarMosaicChk.setText("Field Bias Radar Mosaic");
- fieldBiasRadarMosaicChk.setFont(font);
- fieldBiasRadarMosaicChk.setLayoutData(gd);
- fieldBiasRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.bMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button localBiasRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- localBiasRadarMosaicChk.setLayoutData(gd);
- localBiasRadarMosaicChk.setText("Local Bias Radar Mosaic");
- localBiasRadarMosaicChk.setFont(font);
- localBiasRadarMosaicChk.setLayoutData(gd);
- localBiasRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.lMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button gageOnlyChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- gageOnlyChk.setLayoutData(gd);
- gageOnlyChk.setText("Gage Only Analysis");
- gageOnlyChk.setFont(font);
- gageOnlyChk.setLayoutData(gd);
- gageOnlyChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.gageOnly;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button multiSensorMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- multiSensorMosaicChk.setLayoutData(gd);
- multiSensorMosaicChk.setText("Multisensor Mosaic");
- multiSensorMosaicChk.setFont(font);
- multiSensorMosaicChk.setLayoutData(gd);
- multiSensorMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.mMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button localBiasMultiSensorMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- localBiasMultiSensorMosaicChk.setLayoutData(gd);
- localBiasMultiSensorMosaicChk.setText("Local Bias Multisensor Mosaic");
- localBiasMultiSensorMosaicChk.setFont(font);
- localBiasMultiSensorMosaicChk.setLayoutData(gd);
- localBiasMultiSensorMosaicChk
- .addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.mlMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button satPrecipChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- satPrecipChk.setLayoutData(gd);
- satPrecipChk.setText("Satellite Precip");
- satPrecipChk.setFont(font);
- satPrecipChk.setLayoutData(gd);
- satPrecipChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.satPre;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button localBiasSatPrecipChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- localBiasSatPrecipChk.setLayoutData(gd);
- localBiasSatPrecipChk.setText("Local Bias Satellite Precip");
- localBiasSatPrecipChk.setFont(font);
- localBiasSatPrecipChk.setLayoutData(gd);
- localBiasSatPrecipChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.lsatPre;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button satRadarMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- satRadarMosaicChk.setLayoutData(gd);
- satRadarMosaicChk.setText("Satellite Radar Mosaic");
- satRadarMosaicChk.setFont(font);
- satRadarMosaicChk.setLayoutData(gd);
- satRadarMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.srMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button satGageMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- satGageMosaicChk.setLayoutData(gd);
- satGageMosaicChk.setText("Satellite Gage Mosaic");
- satGageMosaicChk.setFont(font);
- satGageMosaicChk.setLayoutData(gd);
- satGageMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.sgMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button satRadarGageMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- satRadarGageMosaicChk.setLayoutData(gd);
- satRadarGageMosaicChk.setText("Satellite Radar Gage Mosaic");
- satRadarGageMosaicChk.setFont(font);
- satRadarGageMosaicChk.setLayoutData(gd);
- satRadarGageMosaicChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.srgMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button triangulatedLocalBiasMosaicChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- triangulatedLocalBiasMosaicChk.setLayoutData(gd);
- triangulatedLocalBiasMosaicChk
- .setText("Triangulated Local Bias Mosaic");
- triangulatedLocalBiasMosaicChk.setFont(font);
- triangulatedLocalBiasMosaicChk.setLayoutData(gd);
- triangulatedLocalBiasMosaicChk
- .addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.p3lMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button bestEstQPEChk = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- bestEstQPEChk.setLayoutData(gd);
- bestEstQPEChk.setText("Best Estimate QPE");
- bestEstQPEChk.setFont(font);
- bestEstQPEChk.setLayoutData(gd);
- bestEstQPEChk.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.Xmrg;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button rfcFieldBiasMosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- rfcFieldBiasMosaic.setLayoutData(gd);
- rfcFieldBiasMosaic.setText("RFC Field Bias Mosaic");
- rfcFieldBiasMosaic.setFont(font);
- rfcFieldBiasMosaic.setLayoutData(gd);
- rfcFieldBiasMosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.rfcbMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button rfcMultiSensorMosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- rfcMultiSensorMosaic.setLayoutData(gd);
- rfcMultiSensorMosaic.setText("RFC Multisensor Mosaic");
- rfcMultiSensorMosaic.setFont(font);
- rfcMultiSensorMosaic.setLayoutData(gd);
- rfcMultiSensorMosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.rfcmMosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button rawQ2Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- rawQ2Mosaic.setLayoutData(gd);
- rawQ2Mosaic.setText("Raw Q2 Mosaic");
- rawQ2Mosaic.setFont(font);
- rawQ2Mosaic.setLayoutData(gd);
- rawQ2Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.qmosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button localBQ2Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- localBQ2Mosaic.setLayoutData(gd);
- localBQ2Mosaic.setText("Local Bias Q2 Mosaic");
- localBQ2Mosaic.setFont(font);
- localBQ2Mosaic.setLayoutData(gd);
- localBQ2Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.lqmosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button mQ2Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- mQ2Mosaic.setLayoutData(gd);
- mQ2Mosaic.setText("Multisensor Q2 Mosaic");
- mQ2Mosaic.setFont(font);
- mQ2Mosaic.setLayoutData(gd);
- mQ2Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.mlqmosaic;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button local1Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- local1Mosaic.setLayoutData(gd);
- local1Mosaic.setText("Local Field #1");
- local1Mosaic.setFont(font);
- local1Mosaic.setLayoutData(gd);
- local1Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.localField1;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button local2Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- local2Mosaic.setLayoutData(gd);
- local2Mosaic.setText("Local Field #2");
- local2Mosaic.setFont(font);
- local2Mosaic.setLayoutData(gd);
- local2Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.localField2;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button local3Mosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- local3Mosaic.setLayoutData(gd);
- local3Mosaic.setText("Local Field #3");
- local3Mosaic.setFont(font);
- local3Mosaic.setLayoutData(gd);
- local3Mosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.localField3;
- }
- });
-
- spaceLabel = new Label(groupComp, SWT.NONE);
- spaceLabel.setText(" ");
-
- Button rfcQpeMosaic = new Button(groupComp, SWT.RADIO);
- gd = new GridData(SWT.LEFT, SWT.DEFAULT, true, false);
- rfcQpeMosaic.setLayoutData(gd);
- rfcQpeMosaic.setText("RFC QPE Mosaic");
- rfcQpeMosaic.setFont(font);
- rfcQpeMosaic.setLayoutData(gd);
- rfcQpeMosaic.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent event) {
- subType = DisplayFieldData.rfcMosaic;
- }
- });
}
+
+
/**
* Process the selection.
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/PolygonEditManager.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/PolygonEditManager.java
index 0156455054..b4c7e7d78b 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/PolygonEditManager.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/polygon/PolygonEditManager.java
@@ -16,6 +16,14 @@
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
+ *
+ *
+ * SOFTWARE HISTORY
+ *
+ * Date Ticket# Engineer Description
+ * ------------ ---------- ----------- --------------------------
+ * Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts.
+ *
**/
package com.raytheon.viz.mpe.ui.dialogs.polygon;
@@ -233,7 +241,7 @@ public class PolygonEditManager {
String polyEditStr = editAction.toPrettyName()
+ " "
- + (subDrawSource != null ? subDrawSource.getCv_use()
+ + (subDrawSource != null ? subDrawSource.getFieldName()
: String.format("%6.2f", precipValue)) + " "
+ editPoints.length + " " + (visible ? "1" : "0");
toUse.append(idx + " " + polyEditStr + "\n");
@@ -288,7 +296,7 @@ public class PolygonEditManager {
}
private static File getHourlyEditFile(DisplayFieldData fieldData, Date date) {
- String fieldname = fieldData.getCv_use();
+ String fieldname = fieldData.getFieldName();
String polygonDir = MPEDisplayManager.getPolygonEditDir();
/* Build the polygon filename. */
@@ -299,7 +307,7 @@ public class PolygonEditManager {
private static File getPersistentEditFile(DisplayFieldData fieldData,
Date date) {
- String fieldname = fieldData.getCv_use();
+ String fieldname = fieldData.getFieldName();
String polygonDir = MPEDisplayManager.getPolygonEditDir();
/* Build the persistent polygon filename. */
String persistentFilename = String.format("%s/DrawPoly%s", polygonDir,
@@ -345,7 +353,7 @@ public class PolygonEditManager {
DisplayFieldData subData = null;
for (DisplayFieldData fieldData : DisplayFieldData
.values()) {
- if (fieldData.getCv_use()
+ if (fieldData.getFieldName()
.equalsIgnoreCase(subCvUse)) {
subData = fieldData;
break;
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/PostAnalysisManager.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/PostAnalysisManager.java
index 9cb80cc03d..5226197a40 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/PostAnalysisManager.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/PostAnalysisManager.java
@@ -58,8 +58,6 @@ public class PostAnalysisManager
private XmrgFile.XmrgHeader xmrgHeader = null;
private boolean misbin[][] = getMisBin();
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
-
private static final double MISSING_VALUE = -9999.0;
private static final double MM_PER_INCH = 25.4;
@@ -88,14 +86,14 @@ public class PostAnalysisManager
}
- public Date getSelectedDate()
+ public static Date getSelectedDate()
{
- Date date = dqc.pdata[dqc.pcpn_day].data_time;
+ Date date = DailyQcUtils.pdata[DailyQcUtils.pcpn_day].data_time;
return date;
}
- public String getSelectedDateString()
+ public static String getSelectedDateString()
{
String header = "postAnalysisManager.getSelectedDateString(): ";
@@ -116,7 +114,7 @@ public class PostAnalysisManager
}
- public String get24HourGageOnlyFilePath()
+ public static String get24HourGageOnlyFilePath()
{
String filePath = null;
final String mpe_grid_precip_dir_tok = "mpe_grid_precip_dir";
@@ -124,9 +122,9 @@ public class PostAnalysisManager
String mpe_grid_precip_dir = ad.getToken(mpe_grid_precip_dir_tok);
- String currentQcArea = dqc.currentQcArea;
+ String currentQcArea = DailyQcUtils.currentQcArea;
- String dateString = getSelectedDateString();
+ String dateString = PostAnalysisManager.getSelectedDateString();
// String dateString = "20140112";
@@ -232,7 +230,7 @@ public class PostAnalysisManager
String[] fileNameArray = fileDirectory.list();
- int precipDay = dqc.pcpn_day;
+ int precipDay = DailyQcUtils.pcpn_day;
List filteredFileNameList = filterFileNames(precipDay, fileNameArray);
@@ -270,9 +268,9 @@ public class PostAnalysisManager
return endTime;
}
- public double[][] get24HourTotalPrecip(int height, int width, double scaleFactor)
+ public static double[][] get24HourTotalPrecip(int height, int width, double scaleFactor)
{
- Date endDate = getSelectedDate();
+ Date endDate = PostAnalysisManager.getSelectedDate();
// System.out.println("PostAnalysisManager.getEndTime() = " + endDate);
double missingValue = -999.0;
@@ -352,8 +350,8 @@ public class PostAnalysisManager
double distanceSquared;
double nearestDistanceSquared = 9999999.0;
- int XOR = dqc.getHrap_grid().hrap_minx;
- int YOR = dqc.getHrap_grid().hrap_miny;
+ int XOR = DailyQcUtils.getHrap_grid().hrap_minx;
+ int YOR = DailyQcUtils.getHrap_grid().hrap_miny;
// Find the distance to the nearest precip station from this HRAP
// bin at [i][j]
@@ -389,7 +387,7 @@ public class PostAnalysisManager
{
String header = "PostAnalysisManager.create3DGridArray(): ";
- Hrap_Grid hrap_grid = dqc.getHrap_grid();
+ Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxI = hrap_grid.maxi;
int maxJ = hrap_grid.maxj;
@@ -408,7 +406,7 @@ public class PostAnalysisManager
{
//String header = "PostAnalysisManager.create2DGridArray(): ";
- Hrap_Grid hrap_grid = dqc.getHrap_grid();
+ Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxCols = hrap_grid.maxi;
int maxRows = hrap_grid.maxj;
@@ -992,7 +990,7 @@ public class PostAnalysisManager
}
*/
- Hrap_Grid grid = dqc.getHrap_grid();
+ Hrap_Grid grid = DailyQcUtils.getHrap_grid();
int maxJ = grid.maxj;
int maxI = grid.maxi;
@@ -1249,8 +1247,8 @@ public class PostAnalysisManager
{
String header = "PostAnalysisManager.mergeData(): ";
- int MAXX = dqc.getHrap_grid().maxi;
- int MAXY = dqc.getHrap_grid().maxj;
+ int MAXX = DailyQcUtils.getHrap_grid().maxi;
+ int MAXY = DailyQcUtils.getHrap_grid().maxj;
double logRHat;
int i, j;
@@ -1258,10 +1256,10 @@ public class PostAnalysisManager
double weightingFactor;
int precipStationCount;
-// List precipStationList = dqc.precip_stations;
+ List precipStationList = DailyQcUtils.precip_stations;
- precipStationCount = dqc.precip_stations.size();
+ precipStationCount = precipStationList.size();
logRHat = Math.log((double) rhat);
@@ -1316,7 +1314,7 @@ public class PostAnalysisManager
//System.out.println(header + "merge section");
weightingFactor = computeObservedWeight (i, j, logRHat,
- dqc.precip_stations, precipStationCount, estimatedScale);
+ precipStationList, precipStationCount, estimatedScale);
double mergedValueInInches = weightingFactor * gageOnlyGridValueInInches +
(1.0 - weightingFactor) * qpeInches;
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/SummedHourlyMpeDlg.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/SummedHourlyMpeDlg.java
index ed6d482140..dea16fd548 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/SummedHourlyMpeDlg.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/dialogs/postanalysis/SummedHourlyMpeDlg.java
@@ -63,7 +63,6 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
private static final int SECONDS_PER_HOUR = 3600;
private static final int SECONDS_PER_DAY = 24 * SECONDS_PER_HOUR;
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
/** Bundle file location */
//private static final String BUNDLE_LOC = "bundles/MPE/postAnalysisBundle.xml";
@@ -80,11 +79,10 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
setResourceType1(PAResourceType.XMRG);
setResourceType2(PAResourceType.ASCII_XMRG);
- PostAnalysisManager paMgr = new PostAnalysisManager();
// 24 accumulated 1-hour precip grids
- Hrap_Grid grid = dqc.getHrap_grid();
+ Hrap_Grid grid = DailyQcUtils.getHrap_grid();
int wfoMinX = grid.hrap_minx;
int wfoMinY = grid.hrap_miny;
int width = grid.maxi;
@@ -97,7 +95,7 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
float scaleFactor = 25.4f * 100.0f;
- double[][] totalPrecipGrid = paMgr.get24HourTotalPrecip(height, width, scaleFactor);
+ double[][] totalPrecipGrid = PostAnalysisManager.get24HourTotalPrecip(height, width, scaleFactor);
//floatArray units are hundredths of MM
@@ -106,7 +104,7 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
setDataArray1(floatArray);
//24 hour gage only
- String dataFilePath2 = paMgr.get24HourGageOnlyFilePath();
+ String dataFilePath2 = PostAnalysisManager.get24HourGageOnlyFilePath();
setDataFileName2(dataFilePath2);
return;
@@ -116,12 +114,12 @@ public class SummedHourlyMpeDlg extends BasePostAnalysisDlg
private float[] convertToFloatArray(double[][] totalPrecipGrid, float unitConversionFactor)
{
String header = "SummedHourlyMpeDlg.convertToFloatArray(qpeAccum24hr): ";
- Hrap_Grid hrap_grid = dqc.getHrap_grid();
+ Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
int maxCols = hrap_grid.maxi;
int maxRows = hrap_grid.maxj;
- int precipDay = dqc.pcpn_day;
+ int precipDay = DailyQcUtils.pcpn_day;
- System.out.println(header + "DailyQcUtils.pcpn_day = " + dqc.pcpn_day);
+ System.out.println(header + "DailyQcUtils.pcpn_day = " + DailyQcUtils.pcpn_day);
System.out.println(header + "precipDay = " + precipDay);
float[] valueArray = new float[maxRows*maxCols];
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/DisplayMeanArealPrecipResource.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/DisplayMeanArealPrecipResource.java
index 3c518200b7..79cb501d74 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/DisplayMeanArealPrecipResource.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/DisplayMeanArealPrecipResource.java
@@ -16,6 +16,14 @@
*
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
* further licensing information.
+ *
+ *
+ * SOFTWARE HISTORY
+ *
+ * Date Ticket# Engineer Description
+ * ------------ ---------- ----------- --------------------------
+ * Jan 7, 2015 16954 cgobs Fix for cv_use issue - using getFieldName() in certain parts.
+ *
**/
package com.raytheon.viz.mpe.ui.rsc;
@@ -580,7 +588,7 @@ public class DisplayMeanArealPrecipResource extends
// this will accumulate all hours requested and display it
// this holds current xmrg values
short[] tempdata = null;
- String cv_use = displayMgr.getDisplayFieldType().getCv_use();
+ String cv_use = displayMgr.getDisplayFieldType().getFieldName();
String dirname = appsDefaults.getToken(displayMgr.getDisplayFieldType()
.getDirToken());
String fname = "";
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PlotGriddedPrecipResource.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PlotGriddedPrecipResource.java
index ce8e6d2158..63c093fea5 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PlotGriddedPrecipResource.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PlotGriddedPrecipResource.java
@@ -73,6 +73,8 @@ import com.raytheon.viz.mpe.ui.actions.DrawDQCStations;
import com.raytheon.viz.mpe.ui.actions.OtherPrecipOptions;
import com.raytheon.viz.mpe.util.CreateMap;
import com.raytheon.viz.mpe.util.DailyQcUtils;
+import com.raytheon.viz.mpe.util.DailyQcUtils.Hrap_Grid;
+import com.raytheon.viz.mpe.util.DailyQcUtils.Pcp;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
@@ -97,10 +99,6 @@ public class PlotGriddedPrecipResource extends
IMpeResource {
MPEDisplayManager displayMgr = null;
-
- private DailyQcUtils dqc = DailyQcUtils.getInstance();
-
- private DrawDQCStations ddq = DrawDQCStations.getInstance();
private GriddedImageDisplay2 gridDisplay;
@@ -124,11 +122,11 @@ public class PlotGriddedPrecipResource extends
int display_flag;
-// Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
+ Hrap_Grid hrap_grid = DailyQcUtils.getHrap_grid();
-// Pcp pcp = DailyQcUtils.pcp;
+ Pcp pcp = DailyQcUtils.pcp;
-// Pcp spf = DailyQcUtils.spf;
+ Pcp spf = DailyQcUtils.spf;
private ColorMapParameters parameters = new ColorMapParameters();
@@ -143,7 +141,7 @@ public class PlotGriddedPrecipResource extends
this.colorSet = colorSet;
}
- ColorMap precip_colormap = ddq.colorMap;
+ ColorMap precip_colormap = DrawDQCStations.colorMap;
RGB color = null;
@@ -154,8 +152,8 @@ public class PlotGriddedPrecipResource extends
public void plot_gridded_precip(String prefix, int num, int mnum) {
int pcpn_time_step = MPEDisplayManager.pcpn_time_step;
int rsmode = OtherPrecipOptions.rsmode;
- boolean wfo_all = dqc.wfo_all;
- int[] wfo_in_use = dqc.wfo_in_use;
+ boolean wfo_all = DailyQcUtils.wfo_all;
+ int[] wfo_in_use = DailyQcUtils.wfo_in_use;
CreateMap cm = new CreateMap();
float value = 0;
@@ -225,37 +223,37 @@ public class PlotGriddedPrecipResource extends
if (num == 0) {
i1 = 0;
}
- if (dqc.pcp_in_use[num + mnum] != -1
- && dqc.pcp_in_use[num + mnum - i1] != -1) {
- cm.read_file(file, num + mnum, dqc.spf);
- cm.read_file(file, num + mnum - i1, dqc.pcp);
+ if (DailyQcUtils.pcp_in_use[num + mnum] != -1
+ && DailyQcUtils.pcp_in_use[num + mnum - i1] != -1) {
+ cm.read_file(file, num + mnum, spf);
+ cm.read_file(file, num + mnum - i1, pcp);
- for (i = 0; i < (dqc.getHrap_grid().maxi - dqc.getHrap_grid().hrap_minx) - 1; i++) {
- for (j = 0; j < dqc.getHrap_grid().maxj - dqc.getHrap_grid().hrap_miny - 1; j++) {
- dqc.spf.value[i][j] = (dqc.spf.value[i][j] + dqc.pcp.value[i][j]) / 2;
+ for (i = 0; i < (hrap_grid.maxi - hrap_grid.hrap_minx) - 1; i++) {
+ for (j = 0; j < hrap_grid.maxj - hrap_grid.hrap_miny - 1; j++) {
+ spf.value[i][j] = (spf.value[i][j] + pcp.value[i][j]) / 2;
}
}
- } else if (dqc.pcp_in_use[num + mnum] == 1) {
- cm.read_file(file, num + mnum, dqc.spf);
- } else if (dqc.pcp_in_use[num + mnum - i1] == 1) {
- cm.read_file(file, num + mnum - i1, dqc.spf);
+ } else if (DailyQcUtils.pcp_in_use[num + mnum] == 1) {
+ cm.read_file(file, num + mnum, spf);
+ } else if (DailyQcUtils.pcp_in_use[num + mnum - i1] == 1) {
+ cm.read_file(file, num + mnum - i1, spf);
}
}
- if (dqc.pcp_in_use[num] == -1) {
+ if (DailyQcUtils.pcp_in_use[num] == -1) {
return;
}
- cm.read_file(file, num, dqc.pcp);
+ cm.read_file(file, num, pcp);
- buf = FloatBuffer.allocate(dqc.getHrap_grid().maxi * dqc.getHrap_grid().maxj);
+ buf = FloatBuffer.allocate(hrap_grid.maxi * hrap_grid.maxj);
/* Get value in the HRAP grid bins. */
// for (i = 0; i < (hrap_grid.maxi); i++) {
// for (j = 0; j < hrap_grid.maxj; j++) {
- for (j = dqc.getHrap_grid().maxj - 1; j >= 0; j--) {
- for (i = 0; i < dqc.getHrap_grid().maxi; i++) {
- if (dqc.getHrap_grid().owner[i][j] == -1) {
+ for (j = hrap_grid.maxj - 1; j >= 0; j--) {
+ for (i = 0; i < hrap_grid.maxi; i++) {
+ if (hrap_grid.owner[i][j] == -1) {
continue;
}
@@ -266,14 +264,14 @@ public class PlotGriddedPrecipResource extends
break;
}
- if (dqc.getHrap_grid().owner[i][j] == wfo_in_use[m]) {
+ if (hrap_grid.owner[i][j] == wfo_in_use[m]) {
break;
}
}
}
Float fg = 0f;
- value = dqc.pcp.value[i][j];
+ value = pcp.value[i][j];
// fg = (float) (value / 100.0);
if (fg.isNaN() || value < 0) {
fg = -9999f;
@@ -302,8 +300,8 @@ public class PlotGriddedPrecipResource extends
}
buf.rewind();
- Rectangle extent = new Rectangle(dqc.getHrap_grid().hrap_minx,
- dqc.getHrap_grid().hrap_miny, dqc.getHrap_grid().maxi, dqc.getHrap_grid().maxj);
+ Rectangle extent = new Rectangle(hrap_grid.hrap_minx,
+ hrap_grid.hrap_miny, hrap_grid.maxi, hrap_grid.maxj);
if (extent.x == 0 && extent.y == 0) {
Rectangle coord = null;
@@ -388,7 +386,7 @@ public class PlotGriddedPrecipResource extends
int x = p.x - extent.x;
int y = p.y - extent.y;
- short s = (short) dqc.pcp.value[x][y];
+ short s = (short) pcp.value[x][y];
double d = parameters.getDataToDisplayConverter().convert(s);
@@ -464,20 +462,21 @@ public class PlotGriddedPrecipResource extends
@Override
protected void initInternal(IGraphicsTarget target) throws VizException {
this.target = target;
- time_pos = ddq.time_pos;
- plot_gridded_precip(ddq.prefix, time_pos, 100);
+ time_pos = DrawDQCStations.time_pos;
+ plot_gridded_precip(DrawDQCStations.prefix, time_pos, 100);
}
@Override
protected void paintInternal(IGraphicsTarget target,
PaintProperties paintProps) throws VizException {
- if (buf == null || dqc.grids_flag != 1
+ if (buf == null || (DailyQcUtils.grids_flag != 1 && DailyQcUtils.contour_flag != 1)
|| displayMgr.isQpf() != true) {
return;
}
Set mode = displayMgr.getDisplayMode();
+ System.out.println("Mode is: "+mode.toString());
if (mode.contains(DisplayMode.Image)) {
if (gridDisplay == null) {
@@ -514,11 +513,11 @@ public class PlotGriddedPrecipResource extends
*/
@Override
public String getName() {
- if (ddq.qcmode == "") {
+ if (DrawDQCStations.qcmode == "") {
return "No Data Available";
}
- return ddq.qcmode;
+ return DrawDQCStations.qcmode;
}
@Override
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointFreezePlotResource.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointFreezePlotResource.java
index 5bc199ab69..0ed2a06334 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointFreezePlotResource.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointFreezePlotResource.java
@@ -57,6 +57,7 @@ import com.raytheon.uf.viz.core.PixelCoverage;
import com.raytheon.uf.viz.core.PixelExtent;
import com.raytheon.uf.viz.core.RGBColors;
import com.raytheon.uf.viz.core.data.IRenderedImageCallback;
+import com.raytheon.uf.viz.core.data.prep.IODataPreparer;
import com.raytheon.uf.viz.core.drawables.IFont;
import com.raytheon.uf.viz.core.drawables.IImage;
import com.raytheon.uf.viz.core.drawables.PaintProperties;
@@ -74,6 +75,8 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Ztn;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.index.strtree.STRtree;
+import com.raytheon.viz.mpe.ui.dialogs.EditFreezeStationsDialog;
+import com.raytheon.viz.mpe.util.DailyQcUtils.Zdata;
/**
* MPEMultiple point resource.
@@ -113,6 +116,8 @@ public class PointFreezePlotResource extends
private double scaleHeightValue = 0.0;
+ private Station gageData = null;
+
private static final String[] color_map_a = { "Cyan1", "Salmon", "Orange1",
"Yellow1", "Magenta1", "Green1", "Green4", "Gray74", "White",
"Cyan1" };
@@ -124,6 +129,10 @@ public class PointFreezePlotResource extends
private Hashtable zdataMap;
+ int pcpn_day = 0;
+
+ static int prevPcpnDay;
+
private final DailyQcUtils dqc = DailyQcUtils.getInstance();
/**
@@ -162,12 +171,13 @@ public class PointFreezePlotResource extends
dataMap = new Hashtable();
zdataMap = new Hashtable();
strTree = new STRtree();
- Station gageData = new Station();
- ArrayList station = dqc.freezing_stations;
+ gageData = dqc.new Station();
+ prevPcpnDay = 0;
+// ArrayList station = dqc.freezing_stations;
- if (!station.isEmpty()) {
+ if (!dqc.freezing_stations.isEmpty()) {
int i = 0;
- for (ListIterator it = station.listIterator(); it
+ for (ListIterator it = dqc.freezing_stations.listIterator(); it
.hasNext();) {
gageData = it.next();
Coordinate xy = new Coordinate();
@@ -195,6 +205,7 @@ public class PointFreezePlotResource extends
strTree.insert(env, data);
i++;
}
+ prevPcpnDay = dqc.pcpn_day;
}
}
diff --git a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java
index 7d2227cadd..9feff2848b 100644
--- a/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java
+++ b/cave/com.raytheon.viz.mpe.ui/src/com/raytheon/viz/mpe/ui/rsc/PointPrecipPlotResource.java
@@ -37,6 +37,8 @@ import javax.measure.unit.NonSI;
import javax.measure.unit.Unit;
import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
import org.opengis.referencing.FactoryException;
import org.opengis.referencing.operation.TransformException;
@@ -70,10 +72,8 @@ import com.raytheon.viz.mpe.ui.actions.DrawDQCStations;
import com.raytheon.viz.mpe.ui.actions.OtherPrecipOptions;
import com.raytheon.viz.mpe.ui.dialogs.QcPrecipOptionsDialog;
import com.raytheon.viz.mpe.util.DailyQcUtils;
-import com.raytheon.viz.mpe.util.DailyQcUtils.Pdata;
import com.raytheon.viz.mpe.util.DailyQcUtils.Station;
import com.raytheon.viz.mpe.util.DailyQcUtils.Stn;
-import com.raytheon.viz.mpe.util.DailyQcUtils.Ts;
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Envelope;
import com.vividsolutions.jts.index.strtree.STRtree;
@@ -132,6 +132,8 @@ public class PointPrecipPlotResource extends
private Hashtable pdataMap;
private final DailyQcUtils dqc = DailyQcUtils.getInstance();
+
+ static int prevPcpnDay;
/**
* Constructor.
@@ -148,6 +150,7 @@ public class PointPrecipPlotResource extends
public PointPrecipPlotResource(PointPrecipResourceData resourceData,
LoadProperties props) {
super(resourceData, props);
+ prevPcpnDay = 0;
df.setMaximumFractionDigits(2);
df.setMaximumIntegerDigits(4);
}
@@ -169,12 +172,13 @@ public class PointPrecipPlotResource extends
dataMap = new Hashtable();
pdataMap = new Hashtable();
strTree = new STRtree();
- gageData = new Station();
- ArrayList station = dqc.precip_stations;
- if (!station.isEmpty()) {
+ gageData = dqc.new Station();
+
+ if (!station.isEmpty()) {
+
+ if (!dqc.precip_stations.isEmpty()) {
int i = 0;
- Pdata[] pdata = dqc.pdata;
- for (ListIterator it = station.listIterator(); it
+ for (ListIterator it = dqc.precip_stations.listIterator(); it
.hasNext();) {
gageData = it.next();
Coordinate xy = new Coordinate();
@@ -187,7 +191,7 @@ public class PointPrecipPlotResource extends
kv.append(":");
kv.append(pm);
dataMap.put(kv.toString(), gageData);
- pdataMap.put(kv.toString(), pdata[dqc.pcpn_day].stn[i]);
+ pdataMap.put(kv.toString(), DailyQcUtils.pdata[DailyQcUtils.pcpn_day].stn[i]);
/* Create a small envelope around the point */
Coordinate p1 = new Coordinate(xy.x + .02, xy.y + .02);
@@ -195,11 +199,14 @@ public class PointPrecipPlotResource extends
Envelope env = new Envelope(p1, p2);
ArrayList