Merge branch 'ss_builds' (13.2.1-1) into development
Conflicts: cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java rpms/awips2.core/Installer.ldm/patch/etc/pqact.conf.template Former-commit-id:a966546e31
[formerly3fb7d96ec1
] [formerlya966546e31
[formerly3fb7d96ec1
] [formerly1dbb34523b
[formerly 1a07daa97b2000f31ea4fd98890a15477b85b5f3]]] Former-commit-id:1dbb34523b
Former-commit-id:79ef100838
[formerly345dfd2ca9
] Former-commit-id:cd2014bf8d
This commit is contained in:
commit
e838f2db25
83 changed files with 1589 additions and 667 deletions
|
@ -214,7 +214,10 @@
|
||||||
# Relationship Type: In Response to
|
# Relationship Type: In Response to
|
||||||
# Status: NEXTRELEASE
|
# Status: NEXTRELEASE
|
||||||
# Title: OB9.2 AvnFPS - TPO/FuelAlternate Rule Doesn't work
|
# Title: OB9.2 AvnFPS - TPO/FuelAlternate Rule Doesn't work
|
||||||
#
|
#
|
||||||
|
#################################
|
||||||
|
# Date DR. # Engineer Description
|
||||||
|
# Dec. 27, 2012 15583 zhao Fixed a bug with Wind Dir. when wind is calm
|
||||||
#
|
#
|
||||||
import copy, logging, math, sets
|
import copy, logging, math, sets
|
||||||
import Avn, MonitorP
|
import Avn, MonitorP
|
||||||
|
@ -311,6 +314,8 @@ Arguments: dd ff1"""
|
||||||
tddo = tw['dd'].get('ocnl', None)
|
tddo = tw['dd'].get('ocnl', None)
|
||||||
# variable wind: always matches
|
# variable wind: always matches
|
||||||
if 'VRB' in (mdd, tddp, tddo):
|
if 'VRB' in (mdd, tddp, tddo):
|
||||||
|
return False
|
||||||
|
if mw['ff']['lo'] == 0:
|
||||||
return False
|
return False
|
||||||
if tddp is None:
|
if tddp is None:
|
||||||
delta1= 999
|
delta1= 999
|
||||||
|
|
|
@ -135,7 +135,7 @@ Expects files from acqserver. File name determines data type.
|
||||||
return self.doMetar(bulletin)
|
return self.doMetar(bulletin)
|
||||||
elif fname.startswith('FT'):
|
elif fname.startswith('FT'):
|
||||||
return self.doTaf(bulletin)
|
return self.doTaf(bulletin)
|
||||||
elif fname.startswith('FAUS2'):
|
elif fname.startswith('FAUS2') or fname.startswith('FAUS30'):
|
||||||
return self.doCCFP(bulletin)
|
return self.doCCFP(bulletin)
|
||||||
else:
|
else:
|
||||||
_Logger.info('Unknown data type: %s' % fname)
|
_Logger.info('Unknown data type: %s' % fname)
|
||||||
|
|
|
@ -24,8 +24,14 @@
|
||||||
#
|
#
|
||||||
# PhraseBuilder.py
|
# PhraseBuilder.py
|
||||||
# Methods for building phrases for Narrative products.
|
# Methods for building phrases for Narrative products.
|
||||||
#
|
#
|
||||||
# Author: hansen
|
# Author: hansen
|
||||||
|
# History
|
||||||
|
# Time Ticket Number Developer Comments
|
||||||
|
# -----------------------------------------------------------------------------
|
||||||
|
# 12/28/2012 DR 15596 J.Zeng Added checkWeatherSimilarity
|
||||||
|
# for two lists based on Virgil's
|
||||||
|
# suggestion
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
import types
|
import types
|
||||||
|
@ -1855,10 +1861,28 @@ class PhraseBuilder(ConfigVariables.ConfigVariables,
|
||||||
stats1.sort(self.rankedSortOrder)
|
stats1.sort(self.rankedSortOrder)
|
||||||
stats2.sort(self.rankedSortOrder)
|
stats2.sort(self.rankedSortOrder)
|
||||||
|
|
||||||
|
diff = []
|
||||||
|
for element in stats1:
|
||||||
|
test = 1
|
||||||
|
for el in stats2:
|
||||||
|
if str(element) == str(el):
|
||||||
|
test = 0
|
||||||
|
if test and str(element) not in diff:
|
||||||
|
diff.append(str(element))
|
||||||
|
for element in stats2:
|
||||||
|
test = 1
|
||||||
|
for el in stats1:
|
||||||
|
if str(element) == str(el):
|
||||||
|
test = 0
|
||||||
|
if test and str(element) not in diff:
|
||||||
|
diff.append(str(element))
|
||||||
|
if len(diff) == 0:
|
||||||
|
return 1
|
||||||
|
|
||||||
if stats1 == stats2:
|
if stats1 == stats2:
|
||||||
#print 'checkWx return 1'
|
#print 'checkWx return 1'
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
# Check for equal length of statistics
|
# Check for equal length of statistics
|
||||||
if len(stats1) == len(stats2):
|
if len(stats1) == len(stats2):
|
||||||
# If there is only one subkey to worry about
|
# If there is only one subkey to worry about
|
||||||
|
|
|
@ -23,6 +23,14 @@
|
||||||
# any purpose.
|
# any purpose.
|
||||||
#
|
#
|
||||||
# SmartScript -- library of methods for Smart Tools and Procedures
|
# SmartScript -- library of methods for Smart Tools and Procedures
|
||||||
|
# History
|
||||||
|
# Time Ticket# Developer Comments
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# 01/09/2012 DR15626 J. Zeng Add methods
|
||||||
|
# enableISCsend
|
||||||
|
# clientISCSendStatus
|
||||||
|
# manualSendISC_autoMode
|
||||||
|
# manualSendISC_manualMode
|
||||||
#
|
#
|
||||||
# Author: hansen
|
# Author: hansen
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
@ -52,6 +60,7 @@ from com.raytheon.uf.common.dataplugin.gfe.discrete import DiscreteDefinition
|
||||||
from com.raytheon.uf.common.dataplugin.gfe.weather import WeatherKey
|
from com.raytheon.uf.common.dataplugin.gfe.weather import WeatherKey
|
||||||
from com.raytheon.uf.common.dataplugin.gfe.db.objects import TimeConstraints
|
from com.raytheon.uf.common.dataplugin.gfe.db.objects import TimeConstraints
|
||||||
from com.raytheon.uf.common.dataplugin.gfe.db.objects import GridParmInfo
|
from com.raytheon.uf.common.dataplugin.gfe.db.objects import GridParmInfo
|
||||||
|
from com.raytheon.uf.common.dataplugin.gfe.server.request import SendISCRequest
|
||||||
|
|
||||||
class SmartScript(BaseTool.BaseTool):
|
class SmartScript(BaseTool.BaseTool):
|
||||||
|
|
||||||
|
@ -262,6 +271,54 @@ class SmartScript(BaseTool.BaseTool):
|
||||||
#Standard, PRACTICE, TEST
|
#Standard, PRACTICE, TEST
|
||||||
return self.__dataMgr.getOpMode().name()
|
return self.__dataMgr.getOpMode().name()
|
||||||
|
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
# ISC control functions
|
||||||
|
#------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def enableISCsend(self, state):
|
||||||
|
#sets the overall isc send state. If the send state is false, then
|
||||||
|
#no ISC grids can be transmitted. To change the behavior
|
||||||
|
#when these programs (e.g., procedures) are run from the command line,
|
||||||
|
#you can enable/disable the send capability upon saving. This
|
||||||
|
#command does not send grids, but sets the system state. When
|
||||||
|
#saving grids and SendISCOnSave is set, or the manual Send ISC Dialog
|
||||||
|
#is used, then the grids will be sent.
|
||||||
|
self.__dataMgr.enableISCsend(state)
|
||||||
|
|
||||||
|
def clientISCSendStatus(self):
|
||||||
|
#returns the current state for sending isc from this program. This
|
||||||
|
#depicts the state of whether this client has been enabled to send
|
||||||
|
#ISC via the SendISCOnSave or manual Send ISC Dialog. The ifpServer
|
||||||
|
#still needs to be properly configured for sending to occur.
|
||||||
|
return self.__dataMgr.clientISCSendStatus()
|
||||||
|
|
||||||
|
def manualSendISC_autoMode(self):
|
||||||
|
#Simulates the use of the SendISCDialog. Note if the ifpServer's
|
||||||
|
#SendISCOnSave is enabled, then this routine will fail as grids are
|
||||||
|
#sent when saved and the manual operation is not allowed. The
|
||||||
|
#overall isc send state must also be True for this command to work.
|
||||||
|
req = []
|
||||||
|
parms = self.__parmMgr.getAllAvailableParms();
|
||||||
|
for parm in parms:
|
||||||
|
pid = parm.getParmID()
|
||||||
|
tr = parm.getParmTimeRange()
|
||||||
|
req.append(SendISCRequest(pid,tr))
|
||||||
|
self.__parmOp.sendISC(req)
|
||||||
|
|
||||||
|
def manualSendISC_manualMode(self, requests):
|
||||||
|
#simulates the use of the SendISCDialog. Note if the ifpServers's
|
||||||
|
#SendISCOnSave is enabled, then this routine will fail as grids are
|
||||||
|
#sent when saved and the manual operation is not allowed.
|
||||||
|
#The requests are tuples of (parmName, parmLevel, timeRange). The
|
||||||
|
#TimeRange is an AFPS.TimeRange() instance. The overall isc
|
||||||
|
#send state must also be True for this command to work.
|
||||||
|
req = []
|
||||||
|
for parmName, parmLevel, tr in requests:
|
||||||
|
pid = ParmID.ParmID(parmName, self.mutableID(),
|
||||||
|
parmLevel).toJavaObj()
|
||||||
|
req.append(SendISCRequest(pid, tr))
|
||||||
|
self.__parmOp.sendISC(req)
|
||||||
|
|
||||||
|
|
||||||
#########################################################################
|
#########################################################################
|
||||||
## Smart Tool methods ##
|
## Smart Tool methods ##
|
||||||
|
|
|
@ -25,22 +25,7 @@
|
||||||
menuText="Convective SIGMET" id="ConvSigmet">
|
menuText="Convective SIGMET" id="ConvSigmet">
|
||||||
<dataURI>/convsigmet/%</dataURI>
|
<dataURI>/convsigmet/%</dataURI>
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="bundleItem" file="bundles/BufrNcwf.xml" menuText="NCWF" id="NCWF">
|
|
||||||
<dataURI>/bufrncwf/%</dataURI>
|
|
||||||
</contribute>
|
|
||||||
<contribute xsi:type="subMenu" menuText="CCFP">
|
|
||||||
<contribute xsi:type="bundleItem" file="bundles/Ccfp.xml" menuText="2 Hour" id="CCFP2HOUR">
|
|
||||||
<dataURI>/ccfp/%</dataURI>
|
|
||||||
<substitute key="validDuration" value="7200"/>
|
|
||||||
</contribute>
|
|
||||||
<contribute xsi:type="bundleItem" file="bundles/Ccfp.xml" menuText="4 Hour" id="CCFP4HOUR">
|
|
||||||
<dataURI>/ccfp/%</dataURI>
|
|
||||||
<substitute key="validDuration" value="14400"/>
|
|
||||||
</contribute>
|
|
||||||
<contribute xsi:type="bundleItem" file="bundles/Ccfp.xml" menuText="6 Hour" id="CCFP6HOUR">
|
|
||||||
<dataURI>/ccfp/%</dataURI>
|
|
||||||
<substitute key="validDuration" value="21600"/>
|
|
||||||
</contribute> </contribute>
|
|
||||||
<contribute xsi:type="separator" id="separator1"/>
|
<contribute xsi:type="separator" id="separator1"/>
|
||||||
|
|
||||||
<contribute xsi:type="titleItem" titleText="------ Icing Products ------" />
|
<contribute xsi:type="titleItem" titleText="------ Icing Products ------" />
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
<ImmediateCause>DM \ DAM FAILURE</ImmediateCause>
|
<ImmediateCause>DM \ DAM FAILURE</ImmediateCause>
|
||||||
<ImmediateCause>DM \ DAM BREAK</ImmediateCause>
|
<ImmediateCause>DM \ DAM BREAK</ImmediateCause>
|
||||||
<ImmediateCause>RS \ RAIN AND SNOW MELT</ImmediateCause>
|
<ImmediateCause>RS \ RAIN AND SNOW MELT</ImmediateCause>
|
||||||
|
<ImmediateCause>RS \ RAIN AND MELTING SNOW</ImmediateCause>
|
||||||
<productTypeMap>
|
<productTypeMap>
|
||||||
<item>
|
<item>
|
||||||
<key>FFW</key>
|
<key>FFW</key>
|
||||||
|
|
|
@ -91,6 +91,8 @@ import com.raytheon.uf.viz.alertviz.ui.dialogs.ConfigurationFileDlg.Function;
|
||||||
* 08 Sep 2012 13528 Xiaochuan Confirmation message is not necessary when
|
* 08 Sep 2012 13528 Xiaochuan Confirmation message is not necessary when
|
||||||
* close. Add setNewConfig and run in common
|
* close. Add setNewConfig and run in common
|
||||||
* setting group to perform the updating.
|
* setting group to perform the updating.
|
||||||
|
* 20 Dec 2012 13746 Xiaochuan Add setNewConfig in omitMenuItem.addSelectionListener
|
||||||
|
* to send notify for the changing.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -738,6 +740,8 @@ public class AlertVisConfigDlg extends Dialog implements
|
||||||
}
|
}
|
||||||
setSourceColor(s, item);
|
setSourceColor(s, item);
|
||||||
sourcesList.update();
|
sourcesList.update();
|
||||||
|
setNewConfig();
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
Container
|
Container
|
||||||
.logInternal(
|
.logInternal(
|
||||||
|
|
|
@ -62,6 +62,8 @@ import com.raytheon.uf.viz.alertviz.config.AlertMetadata;
|
||||||
* 24 Mar 2011 5853 cjeanbap Check AlertMetadata for Null.
|
* 24 Mar 2011 5853 cjeanbap Check AlertMetadata for Null.
|
||||||
* 08 Sep 2012 13528 Xiaochuan Run setNewConfig to update priorities
|
* 08 Sep 2012 13528 Xiaochuan Run setNewConfig to update priorities
|
||||||
* setting.
|
* setting.
|
||||||
|
* 14 Dec 2012 4827 Xiaochuan Set toolTip on changeActionBtn.
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
|
@ -781,7 +783,8 @@ public class PriorityControls {
|
||||||
String selectedFileName = selectedFile.getName();
|
String selectedFileName = selectedFile.getName();
|
||||||
saveNeeded = !selectedFileName.equals(actionFile);
|
saveNeeded = !selectedFileName.equals(actionFile);
|
||||||
alertMetadata.setPythonScript(selectedFileName);
|
alertMetadata.setPythonScript(selectedFileName);
|
||||||
actionChk.setToolTipText(selectedFileName);
|
changeActionBtn.setToolTipText(selectedFileName);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
alertMetadata.setAudioFile(null);
|
alertMetadata.setAudioFile(null);
|
||||||
alertMetadata.setAudioEnabled(false);
|
alertMetadata.setAudioEnabled(false);
|
||||||
|
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<!--
|
||||||
|
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
|
||||||
|
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
|
||||||
|
|
||||||
|
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
|
||||||
|
This_software_product_contains_export-restricted_data_whose
|
||||||
|
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
|
||||||
|
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
|
||||||
|
an_export_license_or_other_authorization.
|
||||||
|
|
||||||
|
Contractor_Name:________Raytheon_Company
|
||||||
|
Contractor_Address:_____6825_Pine_Street,_Suite_340
|
||||||
|
________________________Mail_Stop_B8
|
||||||
|
________________________Omaha,_NE_68106
|
||||||
|
________________________402.291.0100
|
||||||
|
|
||||||
|
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
|
||||||
|
further_licensing_information.
|
||||||
|
-->
|
||||||
|
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<contribute xsi:type="subMenu" menuText="CCFP">
|
||||||
|
<contribute xsi:type="bundleItem" file="bundles/Ccfp.xml" menuText="4 Hour" id="CCFP4HOUR">
|
||||||
|
<dataURI>/ccfp/%</dataURI>
|
||||||
|
<substitute key="validDuration" value="14400"/>
|
||||||
|
</contribute>
|
||||||
|
<contribute xsi:type="bundleItem" file="bundles/Ccfp.xml" menuText="6 Hour" id="CCFP6HOUR">
|
||||||
|
<dataURI>/ccfp/%</dataURI>
|
||||||
|
<substitute key="validDuration" value="21600"/>
|
||||||
|
</contribute>
|
||||||
|
<contribute xsi:type="bundleItem" file="bundles/Ccfp.xml" menuText="8 Hour" id="CCFP8HOUR">
|
||||||
|
<dataURI>/ccfp/%</dataURI>
|
||||||
|
<substitute key="validDuration" value="28800"/>
|
||||||
|
</contribute>
|
||||||
|
</contribute>
|
||||||
|
</menuTemplate>
|
|
@ -0,0 +1,24 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<!--
|
||||||
|
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
|
||||||
|
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
|
||||||
|
|
||||||
|
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
|
||||||
|
This_software_product_contains_export-restricted_data_whose
|
||||||
|
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
|
||||||
|
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
|
||||||
|
an_export_license_or_other_authorization.
|
||||||
|
|
||||||
|
Contractor_Name:________Raytheon_Company
|
||||||
|
Contractor_Address:_____6825_Pine_Street,_Suite_340
|
||||||
|
________________________Mail_Stop_B8
|
||||||
|
________________________Omaha,_NE_68106
|
||||||
|
________________________402.291.0100
|
||||||
|
|
||||||
|
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
|
||||||
|
further_licensing_information.
|
||||||
|
-->
|
||||||
|
<menuContributionFile>
|
||||||
|
<include installTo="menu:ncepHydro?after=AWC"
|
||||||
|
fileName="menus/ccfp/baseCCFP.xml"/>
|
||||||
|
</menuContributionFile>
|
|
@ -53,6 +53,9 @@ import com.raytheon.uf.viz.core.rsc.capabilities.ColorableCapability;
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
import com.vividsolutions.jts.geom.Coordinate;
|
||||||
import com.vividsolutions.jts.geom.Geometry;
|
import com.vividsolutions.jts.geom.Geometry;
|
||||||
import com.vividsolutions.jts.geom.Point;
|
import com.vividsolutions.jts.geom.Point;
|
||||||
|
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||||
|
import com.raytheon.uf.common.status.UFStatus;
|
||||||
|
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
@ -65,6 +68,7 @@ import com.vividsolutions.jts.geom.Point;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Sep 22, 2009 3072 bsteffen Initial creation
|
* Sep 22, 2009 3072 bsteffen Initial creation
|
||||||
* Aug 23, 2012 1096 njensen Fixed memory leaks
|
* Aug 23, 2012 1096 njensen Fixed memory leaks
|
||||||
|
* Dec 20, 2012 DCS 135 tk Changes for CCFP 2010 and 2012 TIN's
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -74,15 +78,18 @@ import com.vividsolutions.jts.geom.Point;
|
||||||
public class CcfpResource extends
|
public class CcfpResource extends
|
||||||
AbstractVizResource<CcfpResourceData, MapDescriptor> {
|
AbstractVizResource<CcfpResourceData, MapDescriptor> {
|
||||||
|
|
||||||
private static final String[] coverageValues = { "", "75-100%", "50-74%",
|
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||||
"25-49%" };
|
.getHandler(CcfpResource.class);
|
||||||
|
|
||||||
|
private static final String[] coverageValues = { "", "75-100%", "40-74%",
|
||||||
|
"25-39%" };
|
||||||
|
|
||||||
private static final String[] confValues = { "", "HIGH", "", "LOW" };
|
private static final String[] confValues = { "", "HIGH", "", "LOW" };
|
||||||
|
|
||||||
private static final String[] growthValues = { "", "++", "+", "NC", "-" };
|
private static final String[] growthValues = { "", "+", "NC", "-" };
|
||||||
|
|
||||||
private static final String[] topsValues = { "", "370+", "310-370",
|
private static final String[] topsValues = { "", "400", "390", "340",
|
||||||
"250-310" };
|
"290" };
|
||||||
|
|
||||||
private static final String[] resourceTypes = { "", "Solid Coverage",
|
private static final String[] resourceTypes = { "", "Solid Coverage",
|
||||||
"Medium Coverage", "Sparse Coverage", "Line" };
|
"Medium Coverage", "Sparse Coverage", "Line" };
|
||||||
|
@ -517,7 +524,13 @@ public class CcfpResource extends
|
||||||
private void prepareLine(CcfpRecord record, DisplayFrame frame)
|
private void prepareLine(CcfpRecord record, DisplayFrame frame)
|
||||||
throws VizException {
|
throws VizException {
|
||||||
Geometry geom = record.getLocation().getGeometry();
|
Geometry geom = record.getLocation().getGeometry();
|
||||||
frame.solidPolygons.addLineSegment(geom.getCoordinates());
|
if (record.getCoverage() == 2) {
|
||||||
|
frame.dottedPolygons.addLineSegment(geom.getCoordinates());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
frame.solidPolygons.addLineSegment(geom.getCoordinates());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -562,10 +575,43 @@ public class CcfpResource extends
|
||||||
*/
|
*/
|
||||||
private String[] getFormattedData(CcfpRecord record) {
|
private String[] getFormattedData(CcfpRecord record) {
|
||||||
String[] lines = new String[4];
|
String[] lines = new String[4];
|
||||||
lines[0] = "TOPS: " + topsValues[record.getTops()];
|
|
||||||
lines[1] = "GWTH: " + growthValues[record.getGrowth()];
|
int tops = record.getTops();
|
||||||
lines[2] = "CONF: " + confValues[record.getConf()];
|
if (tops < topsValues.length) {
|
||||||
lines[3] = "CVRG: " + coverageValues[record.getCoverage()];
|
lines[0] = "TOPS: " + topsValues[tops];
|
||||||
|
} else {
|
||||||
|
lines[0] = "TOPS: ";
|
||||||
|
statusHandler.handle(Priority.EVENTA,
|
||||||
|
"Problem interogating CCFP data: tops value out of range");
|
||||||
|
}
|
||||||
|
|
||||||
|
int gwth = record.getGrowth();
|
||||||
|
if (gwth < growthValues.length) {
|
||||||
|
lines[1] = "GWTH: " + growthValues[gwth];
|
||||||
|
} else {
|
||||||
|
lines[1] = "GWTH: ";
|
||||||
|
statusHandler.handle(Priority.EVENTA,
|
||||||
|
"Problem interogating CCFP data: growth value out of range");
|
||||||
|
}
|
||||||
|
|
||||||
|
int conf = record.getConf();
|
||||||
|
if (conf < confValues.length) {
|
||||||
|
lines[2] = "CONF: " + confValues[conf];
|
||||||
|
} else {
|
||||||
|
lines[2] = "CONF: ";
|
||||||
|
statusHandler.handle(Priority.EVENTA,
|
||||||
|
"Problem interogating CCFP data: confidence value out of range");
|
||||||
|
}
|
||||||
|
|
||||||
|
int cvrg = record.getCoverage();
|
||||||
|
if (cvrg < coverageValues.length) {
|
||||||
|
lines[3] = "CVRG: " + coverageValues[cvrg];
|
||||||
|
} else {
|
||||||
|
lines[3] = "CVRG: ";
|
||||||
|
statusHandler.handle(Priority.EVENTA,
|
||||||
|
"Problem interogating CCFP data: coverage value out of range");
|
||||||
|
}
|
||||||
|
|
||||||
return lines;
|
return lines;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -430,6 +430,15 @@
|
||||||
name="xxx"
|
name="xxx"
|
||||||
visible="true">
|
visible="true">
|
||||||
</separator>
|
</separator>
|
||||||
|
<command
|
||||||
|
commandId="com.raytheon.viz.ui.actions.titleAction"
|
||||||
|
id="AWC"
|
||||||
|
label="------ AWC ------">
|
||||||
|
</command>
|
||||||
|
<separator
|
||||||
|
name="xxx"
|
||||||
|
visible="true">
|
||||||
|
</separator>
|
||||||
<command id="HYDRO"
|
<command id="HYDRO"
|
||||||
commandId="com.raytheon.viz.ui.actions.titleAction"
|
commandId="com.raytheon.viz.ui.actions.titleAction"
|
||||||
label="------ Hydro ------">
|
label="------ Hydro ------">
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
<Method name="Alias">
|
<Method name="Alias">
|
||||||
<Field abbreviation="PC"/>
|
<Field abbreviation="PC"/>
|
||||||
</Method>
|
</Method>
|
||||||
<Method name="Or" models="ETA GFS212">
|
<Method name="Or" models="ETA GFS212 GFS201 GFS160 GFS161 GFS254">
|
||||||
<Field abbreviation="TP6hr"/>
|
<Field abbreviation="TP6hr"/>
|
||||||
<Field abbreviation="TP12hr"/>
|
<Field abbreviation="TP12hr"/>
|
||||||
</Method>
|
</Method>
|
||||||
|
|
|
@ -25,6 +25,9 @@
|
||||||
<Method name="Alias" models="ECMWF-HiRes">
|
<Method name="Alias" models="ECMWF-HiRes">
|
||||||
<Field abbreviation="TP_ECMWF"/>
|
<Field abbreviation="TP_ECMWF"/>
|
||||||
</Method>
|
</Method>
|
||||||
|
<Method name="ModelRun">
|
||||||
|
<Field abbreviation="TP"/>
|
||||||
|
</Method>
|
||||||
<Method name="ModelRun">
|
<Method name="ModelRun">
|
||||||
<Field abbreviation="TP1hr"/>
|
<Field abbreviation="TP1hr"/>
|
||||||
</Method>
|
</Method>
|
||||||
|
|
|
@ -223,6 +223,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
||||||
* made non-blocking.
|
* made non-blocking.
|
||||||
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
|
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
|
||||||
* 11/05/2012 15477 zhao Trim blank lines in text in Editor when check Syntax
|
* 11/05/2012 15477 zhao Trim blank lines in text in Editor when check Syntax
|
||||||
|
* 01/09/2013 15528 zhao Modified saveFile() and restoreFile()
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -1848,18 +1849,12 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
String bbb = editorTafTabComp.getBBB();
|
String bbb = editorTafTabComp.getBBB();
|
||||||
String type;
|
String type;
|
||||||
|
|
||||||
if (ti.getText().equals(tabFillText)
|
if (ti.getText().equals(tabFillText) || editorTafTabComp.getTextEditorControl().getText().trim().length() == 0) {
|
||||||
|| editorTafTabComp.getTextEditorControl().getText()
|
MessageBox questionMB = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK );
|
||||||
.trim().length() == 0) {
|
|
||||||
MessageBox questionMB = new MessageBox(shell,
|
|
||||||
SWT.ICON_WARNING | SWT.OK | SWT.CANCEL);
|
|
||||||
questionMB.setText("Save TAF");
|
questionMB.setText("Save TAF");
|
||||||
questionMB.setMessage("Empty TAF do you want to save it?");
|
questionMB.setMessage("Cannot save Empty TAF!");
|
||||||
int result = questionMB.open();
|
questionMB.open();
|
||||||
|
return;
|
||||||
if (result == SWT.CANCEL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bbb.startsWith("AA")) {
|
if (bbb.startsWith("AA")) {
|
||||||
|
@ -2290,8 +2285,7 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
private void saveFile(String filename) {
|
private void saveFile(String filename) {
|
||||||
String tempTafPath = "aviation/tmp/";
|
String tempTafPath = "aviation/tmp/";
|
||||||
IPathManager pm = PathManagerFactory.getPathManager();
|
IPathManager pm = PathManagerFactory.getPathManager();
|
||||||
LocalizationContext context = pm.getContext(
|
LocalizationContext context = pm.getContext(LocalizationType.CAVE_STATIC, LocalizationLevel.SITE);
|
||||||
LocalizationType.CAVE_STATIC, LocalizationLevel.SITE);
|
|
||||||
String path = pm.getFile(context, tempTafPath).getAbsolutePath();
|
String path = pm.getFile(context, tempTafPath).getAbsolutePath();
|
||||||
String filepath = null;
|
String filepath = null;
|
||||||
|
|
||||||
|
@ -2311,17 +2305,14 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
if (filepath != null) {
|
if (filepath != null) {
|
||||||
try {
|
try {
|
||||||
setWaitCursor(true);
|
setWaitCursor(true);
|
||||||
String fname = tempTafPath
|
String fname = tempTafPath + filepath.substring(filepath.lastIndexOf('/') + 1);
|
||||||
+ filepath.substring(filepath.lastIndexOf('/') + 1);
|
|
||||||
LocalizationFile lFile = pm.getLocalizationFile(context, fname);
|
LocalizationFile lFile = pm.getLocalizationFile(context, fname);
|
||||||
File file = lFile.getFile();
|
File file = lFile.getFile();
|
||||||
|
|
||||||
if (filename == null && file.exists()) {
|
if (filename == null && file.exists()) {
|
||||||
MessageBox questionMB = new MessageBox(shell,
|
MessageBox questionMB = new MessageBox(shell, SWT.ICON_WARNING | SWT.OK | SWT.CANCEL);
|
||||||
SWT.ICON_WARNING | SWT.OK | SWT.CANCEL);
|
|
||||||
questionMB.setText("Save TAF");
|
questionMB.setText("Save TAF");
|
||||||
questionMB
|
questionMB.setMessage("File already exists. Do you want to overwrite it?");
|
||||||
.setMessage("File already exists. Do you want to overwrite it?");
|
|
||||||
int result = questionMB.open();
|
int result = questionMB.open();
|
||||||
|
|
||||||
if (result == SWT.CANCEL) {
|
if (result == SWT.CANCEL) {
|
||||||
|
@ -2346,17 +2337,14 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
setMessageStatusOK("File " + filepath + " saved successfully.");
|
setMessageStatusOK("File " + filepath + " saved successfully.");
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
setMessageStatusError("Unable to open file " + filepath
|
setMessageStatusError("Unable to open file " + filepath + " for writing.");
|
||||||
+ " for writing.");
|
|
||||||
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
setMessageStatusError("An IOException occured while saving file "
|
setMessageStatusError("An IOException occured while saving file " + filepath);
|
||||||
+ filepath);
|
|
||||||
} catch (LocalizationOpFailedException e) {
|
} catch (LocalizationOpFailedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
setMessageStatusError("A LocalizationOpFailedException occured while saving file "
|
setMessageStatusError("A LocalizationOpFailedException occured while saving file " + filepath);
|
||||||
+ filepath);
|
|
||||||
} finally {
|
} finally {
|
||||||
setWaitCursor(false);
|
setWaitCursor(false);
|
||||||
}
|
}
|
||||||
|
@ -2373,12 +2361,10 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
tabFolder.setSelection(editorTab);
|
tabFolder.setSelection(editorTab);
|
||||||
// Use the current tab
|
// Use the current tab
|
||||||
if (!(ti.getText().equals(tabFillText))) {
|
if (!(ti.getText().equals(tabFillText))) {
|
||||||
if (!editorTafTabComp.isTafSent()) {
|
if (!editorTafTabComp.isTafSent() && !editorTafTabComp.getTextEditorControl().getText().trim().equals("")) {
|
||||||
MessageBox questionMB = new MessageBox(shell,
|
MessageBox questionMB = new MessageBox(shell,SWT.ICON_WARNING | SWT.OK | SWT.CANCEL);
|
||||||
SWT.ICON_WARNING | SWT.OK | SWT.CANCEL);
|
|
||||||
questionMB.setText("Restore TAF");
|
questionMB.setText("Restore TAF");
|
||||||
questionMB
|
questionMB.setMessage("Forecast not saved. Do you want to continue?");
|
||||||
.setMessage("Forecast not saved. Do you want to continue?");
|
|
||||||
int result = questionMB.open();
|
int result = questionMB.open();
|
||||||
|
|
||||||
if (result == SWT.CANCEL) {
|
if (result == SWT.CANCEL) {
|
||||||
|
@ -2389,10 +2375,8 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
|
|
||||||
String tempTafPath = "aviation/tmp/";
|
String tempTafPath = "aviation/tmp/";
|
||||||
IPathManager pm = PathManagerFactory.getPathManager();
|
IPathManager pm = PathManagerFactory.getPathManager();
|
||||||
LocalizationContext context = pm.getContext(
|
LocalizationContext context = pm.getContext(LocalizationType.CAVE_STATIC, LocalizationLevel.SITE);
|
||||||
LocalizationType.CAVE_STATIC, LocalizationLevel.SITE);
|
String path = pm.getFile(context, tempTafPath).getAbsolutePath();
|
||||||
String path = pm.getFile(context, tempTafPath)
|
|
||||||
.getAbsolutePath();
|
|
||||||
String filepath = null;
|
String filepath = null;
|
||||||
|
|
||||||
File tmp = new File(path);
|
File tmp = new File(path);
|
||||||
|
@ -2413,11 +2397,8 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
|
|
||||||
try {
|
try {
|
||||||
setWaitCursor(true);
|
setWaitCursor(true);
|
||||||
String fname = tempTafPath
|
String fname = tempTafPath + filepath.substring(filepath.lastIndexOf('/') + 1);
|
||||||
+ filepath
|
LocalizationFile lFile = pm.getLocalizationFile(context, fname);
|
||||||
.substring(filepath.lastIndexOf('/') + 1);
|
|
||||||
LocalizationFile lFile = pm.getLocalizationFile(
|
|
||||||
context, fname);
|
|
||||||
File file = lFile.getFile();
|
File file = lFile.getFile();
|
||||||
FileReader reader = new FileReader(file);
|
FileReader reader = new FileReader(file);
|
||||||
BufferedReader input = new BufferedReader(reader);
|
BufferedReader input = new BufferedReader(reader);
|
||||||
|
@ -2434,20 +2415,17 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
if (values.length != 3) {
|
if (values.length != 3) {
|
||||||
errorMsg = "parse error";
|
errorMsg = "parse error";
|
||||||
contents.append(line);
|
contents.append(line);
|
||||||
contents.append(System
|
contents.append(System.getProperty("line.separator"));
|
||||||
.getProperty("line.separator"));
|
|
||||||
} else {
|
} else {
|
||||||
editorTafTabComp.setWmoIdLbl(values[0].trim());
|
editorTafTabComp.setWmoIdLbl(values[0].trim());
|
||||||
editorTafTabComp
|
editorTafTabComp.setWmoSiteLbl(values[1].trim());
|
||||||
.setWmoSiteLbl(values[1].trim());
|
|
||||||
editorTafTabComp.setLargeTF(values[2].trim());
|
editorTafTabComp.setLargeTF(values[2].trim());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((line = input.readLine()) != null) {
|
while ((line = input.readLine()) != null) {
|
||||||
contents.append(line);
|
contents.append(line);
|
||||||
contents.append(System
|
contents.append(System.getProperty("line.separator"));
|
||||||
.getProperty("line.separator"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input.close();
|
input.close();
|
||||||
|
@ -2468,25 +2446,20 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
}
|
}
|
||||||
|
|
||||||
ti.setText(icao + " " + bbb);
|
ti.setText(icao + " " + bbb);
|
||||||
editorTafTabComp.getTextEditorControl()
|
editorTafTabComp.getTextEditorControl().setText(tafText);
|
||||||
.setText(tafText);
|
|
||||||
|
|
||||||
if (editorTafTabComp.isTafSent()) {
|
if (editorTafTabComp.isTafSent()) {
|
||||||
editorTafTabComp.updateTafSent(false);
|
editorTafTabComp.updateTafSent(false);
|
||||||
}
|
}
|
||||||
} catch (FileNotFoundException e) {
|
} catch (FileNotFoundException e) {
|
||||||
setMessageStatusError("File " + filepath
|
setMessageStatusError("File " + filepath + " not found.");
|
||||||
+ " not found.");
|
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
setMessageStatusError("An IOException occured while opening file "
|
setMessageStatusError("An IOException occured while opening file " + filepath);
|
||||||
+ filepath);
|
|
||||||
} finally {
|
} finally {
|
||||||
if (errorMsg != null) {
|
if (errorMsg != null) {
|
||||||
setMessageStatusError("File " + filepath + ": "
|
setMessageStatusError("File " + filepath + ": " + errorMsg);
|
||||||
+ errorMsg);
|
|
||||||
} else {
|
} else {
|
||||||
setMessageStatusOK("File " + filepath
|
setMessageStatusOK("File " + filepath + " opened successfully.");
|
||||||
+ " opened successfully.");
|
|
||||||
}
|
}
|
||||||
setWaitCursor(false);
|
setWaitCursor(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,8 @@ import com.raytheon.viz.aviation.xml.MonitorCfg;
|
||||||
* Apr 30, 2012 14717 zhao Indicators turn gray when Metar is outdated
|
* Apr 30, 2012 14717 zhao Indicators turn gray when Metar is outdated
|
||||||
* 20JUL2012 14570 gzhang/zhao Modified for highlighting correct time groups in TAF Viewer
|
* 20JUL2012 14570 gzhang/zhao Modified for highlighting correct time groups in TAF Viewer
|
||||||
* 11AUG2012 14570 zhao Added 'cat' to alert_key_map
|
* 11AUG2012 14570 zhao Added 'cat' to alert_key_map
|
||||||
|
* 02Jan2013 15606 gzhang Remove GridData widthHint so button/label size change with GUI
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
|
@ -235,7 +237,7 @@ public class SiteMonitor implements IRequestCompleteListener<Map<?, ?>> {
|
||||||
protected Label createLabel(Composite parentComp, String text) {
|
protected Label createLabel(Composite parentComp, String text) {
|
||||||
ResourceConfigMgr configMgr = ResourceConfigMgr.getInstance();
|
ResourceConfigMgr configMgr = ResourceConfigMgr.getInstance();
|
||||||
text = " " + text.trim() + " ";
|
text = " " + text.trim() + " ";
|
||||||
GridData gd = new GridData(35, SWT.DEFAULT);
|
GridData gd = new GridData(15, SWT.DEFAULT);// GridData(35 // DR 15606
|
||||||
Label lbl = new Label(parentComp, SWT.CENTER);
|
Label lbl = new Label(parentComp, SWT.CENTER);
|
||||||
configMgr.setDefaultFontAndColors(lbl, text, gd);
|
configMgr.setDefaultFontAndColors(lbl, text, gd);
|
||||||
lbl.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
|
lbl.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_GRAY));
|
||||||
|
|
|
@ -91,7 +91,7 @@ import com.raytheon.viz.avnconfig.IStatusSettable;
|
||||||
* Viewer when a METAR changes alert status.
|
* Viewer when a METAR changes alert status.
|
||||||
* 04/26/2012 14717 zhao Indicator labels turn gray when Metar is outdated
|
* 04/26/2012 14717 zhao Indicator labels turn gray when Metar is outdated
|
||||||
* 20JUL2012 14570 gzhang/zhao Add data structure for highlighting correct time groups in TAF viewer
|
* 20JUL2012 14570 gzhang/zhao Add data structure for highlighting correct time groups in TAF viewer
|
||||||
*
|
* 01/02/2013 15606 gzhang Remove GridData widthHint so button/label size change with GUI
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
|
@ -300,7 +300,7 @@ public class TafSiteComp {
|
||||||
ResourceConfigMgr configMgr = ResourceConfigMgr.getInstance();
|
ResourceConfigMgr configMgr = ResourceConfigMgr.getInstance();
|
||||||
|
|
||||||
GridData gd = new GridData();
|
GridData gd = new GridData();
|
||||||
gd.widthHint = 70;
|
// gd.widthHint = 70; // DR 15606
|
||||||
gd.minimumWidth = 70;
|
gd.minimumWidth = 70;
|
||||||
siteIdBtn = new Button(parent, SWT.PUSH);
|
siteIdBtn = new Button(parent, SWT.PUSH);
|
||||||
configMgr.setDefaultFontAndColors(siteIdBtn, "WWWW", gd);
|
configMgr.setDefaultFontAndColors(siteIdBtn, "WWWW", gd);
|
||||||
|
@ -449,7 +449,7 @@ public class TafSiteComp {
|
||||||
|
|
||||||
GridData gd = new GridData();
|
GridData gd = new GridData();
|
||||||
gd.minimumWidth = btnMinWidth;
|
gd.minimumWidth = btnMinWidth;
|
||||||
gd.widthHint = btnMinWidth;
|
// gd.widthHint = btnMinWidth; // DR 15606
|
||||||
amdBtn = new Button(btnStatusComp, SWT.PUSH);
|
amdBtn = new Button(btnStatusComp, SWT.PUSH);
|
||||||
configMgr.setDefaultFontAndColors(amdBtn, "Amd", gd);
|
configMgr.setDefaultFontAndColors(amdBtn, "Amd", gd);
|
||||||
amdBtn.addSelectionListener(new SelectionAdapter() {
|
amdBtn.addSelectionListener(new SelectionAdapter() {
|
||||||
|
@ -466,7 +466,7 @@ public class TafSiteComp {
|
||||||
|
|
||||||
gd = new GridData();
|
gd = new GridData();
|
||||||
gd.minimumWidth = btnMinWidth;
|
gd.minimumWidth = btnMinWidth;
|
||||||
gd.widthHint = btnMinWidth;
|
// gd.widthHint = btnMinWidth; // DR 15606
|
||||||
rtdBtn = new Button(btnStatusComp, SWT.PUSH);
|
rtdBtn = new Button(btnStatusComp, SWT.PUSH);
|
||||||
configMgr.setDefaultFontAndColors(rtdBtn, "Rtd", gd);
|
configMgr.setDefaultFontAndColors(rtdBtn, "Rtd", gd);
|
||||||
rtdBtn.addSelectionListener(new SelectionAdapter() {
|
rtdBtn.addSelectionListener(new SelectionAdapter() {
|
||||||
|
@ -483,7 +483,7 @@ public class TafSiteComp {
|
||||||
|
|
||||||
gd = new GridData();
|
gd = new GridData();
|
||||||
gd.minimumWidth = btnMinWidth;
|
gd.minimumWidth = btnMinWidth;
|
||||||
gd.widthHint = btnMinWidth;
|
// gd.widthHint = btnMinWidth; // DR 15606
|
||||||
corBtn = new Button(btnStatusComp, SWT.PUSH);
|
corBtn = new Button(btnStatusComp, SWT.PUSH);
|
||||||
configMgr.setDefaultFontAndColors(corBtn, "Cor", gd);
|
configMgr.setDefaultFontAndColors(corBtn, "Cor", gd);
|
||||||
corBtn.addSelectionListener(new SelectionAdapter() {
|
corBtn.addSelectionListener(new SelectionAdapter() {
|
||||||
|
|
|
@ -142,6 +142,8 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
||||||
* 10/11/2012 1229 rferrel Changes for non-blocking TafViewerEditorDlg.
|
* 10/11/2012 1229 rferrel Changes for non-blocking TafViewerEditorDlg.
|
||||||
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
|
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
|
||||||
* 11/28/2012 1363 rferrel Dispose of PythonGuidanceJob when closing.
|
* 11/28/2012 1363 rferrel Dispose of PythonGuidanceJob when closing.
|
||||||
|
* 01/02/2013 15606 gzhang Remove GridData widthHint so button/label size change with GUI
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author grichard
|
* @author grichard
|
||||||
|
@ -752,7 +754,7 @@ public class TafMonitorDlg extends CaveSWTDialog {
|
||||||
gl.verticalSpacing = 1;
|
gl.verticalSpacing = 1;
|
||||||
scrolledComp.setLayout(gl);
|
scrolledComp.setLayout(gl);
|
||||||
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
|
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||||
gd.heightHint = SCROLLED_COMP_HEIGHT_perStn * stationList.size();
|
// gd.heightHint = SCROLLED_COMP_HEIGHT_perStn * stationList.size(); // DR 15606
|
||||||
scrolledComp.setLayoutData(gd);
|
scrolledComp.setLayoutData(gd);
|
||||||
configMgr.setDefaultColors(scrolledComp);
|
configMgr.setDefaultColors(scrolledComp);
|
||||||
|
|
||||||
|
|
|
@ -21,11 +21,12 @@ package com.raytheon.viz.gfe.actions;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.eclipse.ui.IWorkbenchWindow;
|
||||||
import org.eclipse.ui.commands.IElementUpdater;
|
import org.eclipse.ui.commands.IElementUpdater;
|
||||||
import org.eclipse.ui.menus.UIElement;
|
import org.eclipse.ui.menus.UIElement;
|
||||||
|
import com.raytheon.viz.ui.UiUtil;
|
||||||
|
|
||||||
import com.raytheon.viz.gfe.core.DataManager;
|
import com.raytheon.viz.gfe.core.DataManager;
|
||||||
import com.raytheon.viz.gfe.core.IReferenceSetManager.RefSetMode;
|
|
||||||
import com.raytheon.viz.ui.actions.AbstractDropDownMenuHandler;
|
import com.raytheon.viz.ui.actions.AbstractDropDownMenuHandler;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,6 +37,7 @@ import com.raytheon.viz.ui.actions.AbstractDropDownMenuHandler;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Apr 2, 2008 #1053 randerso Initial creation
|
* Apr 2, 2008 #1053 randerso Initial creation
|
||||||
|
* Dec 19,2012 #15535 jdynina Adjusted size for the button on demand
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -54,14 +56,15 @@ public class EditAreaModeButton extends AbstractDropDownMenuHandler implements
|
||||||
* menus.UIElement, java.util.Map)
|
* menus.UIElement, java.util.Map)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("rawtypes")
|
||||||
public void updateElement(UIElement element, Map parameters) {
|
public void updateElement(UIElement element, Map parameters) {
|
||||||
DataManager dm = DataManager.getCurrentInstance();
|
DataManager dm = DataManager.getCurrentInstance();
|
||||||
if (dm == null) {
|
if (dm == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
RefSetMode mode = dm.getRefManager().getMode();
|
element.setText(dm.getRefManager().getMode().getSymbol());
|
||||||
element.setText(mode.getSymbol());
|
UiUtil.updateWindowCoolBar((IWorkbenchWindow) parameters
|
||||||
|
.get("org.eclipse.ui.IWorkbenchWindow"));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,68 +45,42 @@ import org.eclipse.swt.widgets.ToolItem;
|
||||||
* 07/20/09 1995 bphillip Initial release
|
* 07/20/09 1995 bphillip Initial release
|
||||||
* 12/06/12 DR 15574 jzeng Change the image of
|
* 12/06/12 DR 15574 jzeng Change the image of
|
||||||
* the icon when it is activated
|
* the icon when it is activated
|
||||||
|
* 01/11/13 DR 15574 jzeng delete all fields to local variables
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author bphillip
|
* @author bphillip
|
||||||
* @version 1
|
* @version 1
|
||||||
*/
|
*/
|
||||||
public class ShowISCGridsAction extends AbstractHandler {
|
public class ShowISCGridsAction extends AbstractHandler {
|
||||||
/*
|
|
||||||
* non-active Image
|
|
||||||
*/
|
|
||||||
private Image orgImg = null;
|
|
||||||
/*
|
|
||||||
* active Image
|
|
||||||
*/
|
|
||||||
private Image actImg = null;
|
|
||||||
/*
|
|
||||||
* ImageDescriptor
|
|
||||||
*/
|
|
||||||
private ImageDescriptor id = null;
|
|
||||||
/*
|
|
||||||
* Tool item
|
|
||||||
*/
|
|
||||||
private ToolItem ti = null;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object execute(ExecutionEvent arg0) throws ExecutionException {
|
public Object execute(ExecutionEvent arg0) throws ExecutionException {
|
||||||
boolean current = Message.inquireLastMessage(ShowISCGridsMsg.class).show();
|
boolean current = Message.inquireLastMessage(ShowISCGridsMsg.class).show();
|
||||||
/*
|
|
||||||
* Get toolItem
|
|
||||||
*/
|
|
||||||
if (arg0.getTrigger() instanceof Event) {
|
if (arg0.getTrigger() instanceof Event) {
|
||||||
Event e = (Event) arg0.getTrigger();
|
Event e = (Event) arg0.getTrigger();
|
||||||
if ( e.widget instanceof ToolItem) {
|
if ( e.widget instanceof ToolItem) {
|
||||||
ti = (ToolItem) e.widget;
|
ToolItem ti = (ToolItem) e.widget;
|
||||||
}
|
if (ti != null ){
|
||||||
|
ImageDescriptor id;
|
||||||
|
|
||||||
|
if (!current){
|
||||||
|
id = Activator.imageDescriptorFromPlugin(
|
||||||
|
Activator.PLUGIN_ID, "icons/isc1.gif" );
|
||||||
|
} else {
|
||||||
|
id = Activator.imageDescriptorFromPlugin(
|
||||||
|
Activator.PLUGIN_ID, "icons/isc0.gif" );
|
||||||
|
}
|
||||||
|
|
||||||
|
if (id != null){
|
||||||
|
Image img = id.createImage();
|
||||||
|
ti.setImage(img);
|
||||||
|
img.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* Get Image when it is not activated
|
|
||||||
*/
|
|
||||||
if (orgImg == null) {
|
|
||||||
id = Activator.imageDescriptorFromPlugin(
|
|
||||||
Activator.PLUGIN_ID, "icons/isc0.gif" );
|
|
||||||
orgImg = id.createImage();
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Get Image when it is activated
|
|
||||||
*/
|
|
||||||
if (actImg == null) {
|
|
||||||
id = Activator.imageDescriptorFromPlugin(
|
|
||||||
Activator.PLUGIN_ID, "icons/isc1.gif" );
|
|
||||||
actImg = id.createImage();
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* Change the image when it is active and
|
|
||||||
* change it back when it is not activated
|
|
||||||
*/
|
|
||||||
if (ti != null) {
|
|
||||||
if (!current)
|
|
||||||
ti.setImage(actImg);
|
|
||||||
else ti.setImage(orgImg);
|
|
||||||
}
|
|
||||||
|
|
||||||
new ShowISCGridsMsg(!current).send();
|
new ShowISCGridsMsg(!current).send();
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.viz.gfe.dialogs;
|
package com.raytheon.viz.gfe.dialogs;
|
||||||
|
|
||||||
|
import java.awt.Toolkit;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
@ -29,15 +30,17 @@ import org.eclipse.jface.window.Window;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.events.SelectionEvent;
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
import org.eclipse.swt.events.SelectionListener;
|
import org.eclipse.swt.events.SelectionListener;
|
||||||
|
import org.eclipse.swt.graphics.GC;
|
||||||
import org.eclipse.swt.graphics.RGB;
|
import org.eclipse.swt.graphics.RGB;
|
||||||
|
import org.eclipse.swt.graphics.FontMetrics;
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
import org.eclipse.swt.layout.GridLayout;
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Control;
|
import org.eclipse.swt.widgets.Control;
|
||||||
import org.eclipse.swt.widgets.Group;
|
import org.eclipse.swt.widgets.Group;
|
||||||
import org.eclipse.swt.widgets.Label;
|
|
||||||
import org.eclipse.swt.widgets.Shell;
|
import org.eclipse.swt.widgets.Shell;
|
||||||
|
import org.eclipse.swt.widgets.Text;
|
||||||
|
|
||||||
import com.raytheon.edex.util.Util;
|
import com.raytheon.edex.util.Util;
|
||||||
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
|
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
|
||||||
|
@ -72,6 +75,11 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* Jun 20, 2008 #875 bphillip Implemented Dialog functionality
|
* Jun 20, 2008 #875 bphillip Implemented Dialog functionality
|
||||||
* Sep 20, 2012 #1190 dgilling Use new WsId.getHostName() method.
|
* Sep 20, 2012 #1190 dgilling Use new WsId.getHostName() method.
|
||||||
* Nov 12, 2012 #1298 rferrel Code cleanup for non-blocking dialog.
|
* Nov 12, 2012 #1298 rferrel Code cleanup for non-blocking dialog.
|
||||||
|
* Jan 10, 2013 #DR15572 jzeng add getWindowMax() and getMaxWidth(String str)
|
||||||
|
* and adjustDlg(String str),
|
||||||
|
* change gridInfoText from Label to Text
|
||||||
|
* to make sure the info get displayed inside the screen
|
||||||
|
* and can be scrolled.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -97,8 +105,15 @@ public class GridInfoDialog extends CaveJFACEDialog implements
|
||||||
"ISC History", "Weather Element Info", "Weather Element State",
|
"ISC History", "Weather Element Info", "Weather Element State",
|
||||||
"Locks", "Data Distribution" };
|
"Locks", "Data Distribution" };
|
||||||
|
|
||||||
private Label gridInfoText;
|
// set gridInfoText to be Text
|
||||||
|
private Text gridInfoText;
|
||||||
|
|
||||||
|
// width of the screen
|
||||||
|
private int WidthofScreen;
|
||||||
|
|
||||||
|
// width of the grouplist
|
||||||
|
private final int WidthofGroup = 240;
|
||||||
|
|
||||||
private SimpleDateFormat gmtFormatter;
|
private SimpleDateFormat gmtFormatter;
|
||||||
|
|
||||||
public GridInfoDialog(Shell parent, Parm parm, Date clickTime) {
|
public GridInfoDialog(Shell parent, Parm parm, Date clickTime) {
|
||||||
|
@ -112,6 +127,8 @@ public class GridInfoDialog extends CaveJFACEDialog implements
|
||||||
|
|
||||||
gmtFormatter = new SimpleDateFormat("MMM dd yy HH:mm:ss zzz");
|
gmtFormatter = new SimpleDateFormat("MMM dd yy HH:mm:ss zzz");
|
||||||
gmtFormatter.setTimeZone(TimeZone.getTimeZone("GMT"));
|
gmtFormatter.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||||
|
//make sure there is enough space for the group list
|
||||||
|
WidthofScreen = this.getWindowMax() - WidthofGroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -120,7 +137,7 @@ public class GridInfoDialog extends CaveJFACEDialog implements
|
||||||
GridLayout layout = (GridLayout) top.getLayout();
|
GridLayout layout = (GridLayout) top.getLayout();
|
||||||
layout.numColumns = 2;
|
layout.numColumns = 2;
|
||||||
layout.makeColumnsEqualWidth = false;
|
layout.makeColumnsEqualWidth = false;
|
||||||
|
|
||||||
initializeComponents();
|
initializeComponents();
|
||||||
|
|
||||||
return top;
|
return top;
|
||||||
|
@ -141,11 +158,51 @@ public class GridInfoDialog extends CaveJFACEDialog implements
|
||||||
// composite2.setLayoutData(layoutData);
|
// composite2.setLayoutData(layoutData);
|
||||||
// composite2.setLayout(new GridLayout(1, true));
|
// composite2.setLayout(new GridLayout(1, true));
|
||||||
|
|
||||||
gridInfoText = new Label(top, SWT.NONE);
|
gridInfoText = new Text(top, SWT.NONE | SWT.H_SCROLL);
|
||||||
layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
|
layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||||
|
gridInfoText.setEditable(false);
|
||||||
|
gridInfoText.setBackground(group.getBackground());
|
||||||
gridInfoText.setLayoutData(layoutData);
|
gridInfoText.setLayoutData(layoutData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* To get the width of the screen
|
||||||
|
*/
|
||||||
|
private int getWindowMax(){
|
||||||
|
Toolkit toolkit = Toolkit.getDefaultToolkit();
|
||||||
|
return toolkit.getScreenSize().width;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* adjust the width of the dialog
|
||||||
|
*/
|
||||||
|
private void adjustDlg(String infoText){
|
||||||
|
GridData gd = new GridData(SWT.FILL, SWT.FILL, true, true);
|
||||||
|
int maxLength = getMaxWidth(infoText);
|
||||||
|
if ( maxLength > WidthofScreen ) {
|
||||||
|
gd.widthHint = WidthofScreen;
|
||||||
|
gridInfoText.setLayoutData(gd);
|
||||||
|
} else {
|
||||||
|
gridInfoText.setLayoutData(gd);
|
||||||
|
}
|
||||||
|
gridInfoText.setText(infoText);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* get the maximum width of the info
|
||||||
|
*/
|
||||||
|
private int getMaxWidth(String textInfo){
|
||||||
|
String[] splits = textInfo.split("\\n");
|
||||||
|
GC gc = new GC (gridInfoText);
|
||||||
|
FontMetrics fm = gc.getFontMetrics ();
|
||||||
|
int acw = fm.getAverageCharWidth ();
|
||||||
|
int maxStr = 0;
|
||||||
|
for (String str : splits){
|
||||||
|
maxStr = Math.max(maxStr, str.length());
|
||||||
|
}
|
||||||
|
return maxStr*acw;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void createButtonsForButtonBar(Composite parent) {
|
protected void createButtonsForButtonBar(Composite parent) {
|
||||||
super.createButton(parent, Window.CANCEL, "Cancel", false);
|
super.createButton(parent, Window.CANCEL, "Cancel", false);
|
||||||
|
@ -194,19 +251,19 @@ public class GridInfoDialog extends CaveJFACEDialog implements
|
||||||
String choice = b.getText();
|
String choice = b.getText();
|
||||||
|
|
||||||
if (choice.equalsIgnoreCase("Grid Info")) {
|
if (choice.equalsIgnoreCase("Grid Info")) {
|
||||||
gridInfoText.setText(getGridInfo());
|
adjustDlg(getGridInfo());
|
||||||
} else if (choice.equalsIgnoreCase("Grid History")) {
|
} else if (choice.equalsIgnoreCase("Grid History")) {
|
||||||
gridInfoText.setText(getGridHistory());
|
adjustDlg(getGridHistory());
|
||||||
} else if (choice.equalsIgnoreCase("ISC History")) {
|
} else if (choice.equalsIgnoreCase("ISC History")) {
|
||||||
gridInfoText.setText(getISCHistory());
|
adjustDlg(getISCHistory());
|
||||||
} else if (choice.equalsIgnoreCase("Weather Element Info")) {
|
} else if (choice.equalsIgnoreCase("Weather Element Info")) {
|
||||||
gridInfoText.setText(getWEInfo());
|
adjustDlg(getWEInfo());
|
||||||
} else if (choice.equalsIgnoreCase("Weather Element State")) {
|
} else if (choice.equalsIgnoreCase("Weather Element State")) {
|
||||||
gridInfoText.setText(getWEState());
|
adjustDlg(getWEState());
|
||||||
} else if (choice.equalsIgnoreCase("Locks")) {
|
} else if (choice.equalsIgnoreCase("Locks")) {
|
||||||
gridInfoText.setText(getLockInfo());
|
adjustDlg(getLockInfo());
|
||||||
} else if (choice.equalsIgnoreCase("Data Distribution")) {
|
} else if (choice.equalsIgnoreCase("Data Distribution")) {
|
||||||
gridInfoText.setText(getDataDistribution());
|
adjustDlg(getDataDistribution());
|
||||||
} else {
|
} else {
|
||||||
gridInfoText.setText("");
|
gridInfoText.setText("");
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||||
* 28May2010 2187 cjeanbap Added StdTextProductFactory
|
* 28May2010 2187 cjeanbap Added StdTextProductFactory
|
||||||
* functionality.
|
* functionality.
|
||||||
* 09 NOV 2012 1298 rferrel Changes for non-blocking dialog.
|
* 09 NOV 2012 1298 rferrel Changes for non-blocking dialog.
|
||||||
|
* 10Jan2012 15564 mgamazaychikov Set the awipsWanPil based on productText data
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
|
@ -387,7 +388,15 @@ public class StoreTransmitDlg extends CaveSWTDialog implements
|
||||||
} else {
|
} else {
|
||||||
req = new OUPRequest();
|
req = new OUPRequest();
|
||||||
OfficialUserProduct oup = new OfficialUserProduct();
|
OfficialUserProduct oup = new OfficialUserProduct();
|
||||||
String awipsWanPil = productIdTF.getText();
|
/*
|
||||||
|
* DR15564 - set the awipsWanPil based on productText data
|
||||||
|
*/
|
||||||
|
String[] splitLines = productText.split("\n");
|
||||||
|
String[] firstLine = splitLines[0].split(" ");
|
||||||
|
String[] secondLine = splitLines[1].split(" ");
|
||||||
|
String cccc = firstLine[1];
|
||||||
|
String productNnnidXxxid = secondLine[0];
|
||||||
|
String awipsWanPil = cccc + productNnnidXxxid;
|
||||||
oup.setAwipsWanPil(awipsWanPil);
|
oup.setAwipsWanPil(awipsWanPil);
|
||||||
oup.setProductText(productText);
|
oup.setProductText(productText);
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,9 @@ import org.eclipse.swt.widgets.Shell;
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
import com.raytheon.uf.common.status.UFStatus;
|
||||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||||
|
import com.raytheon.uf.viz.core.catalog.DirectDbQuery;
|
||||||
|
import com.raytheon.uf.viz.core.catalog.DirectDbQuery.QueryLanguage;
|
||||||
|
import com.raytheon.uf.viz.core.exception.VizException;
|
||||||
import com.raytheon.viz.gfe.Activator;
|
import com.raytheon.viz.gfe.Activator;
|
||||||
import com.raytheon.viz.gfe.GFEServerException;
|
import com.raytheon.viz.gfe.GFEServerException;
|
||||||
import com.raytheon.viz.gfe.core.DataManager;
|
import com.raytheon.viz.gfe.core.DataManager;
|
||||||
|
@ -55,6 +58,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* 08/20/09 1995 lvenable Initial port
|
* 08/20/09 1995 lvenable Initial port
|
||||||
* 10/24/2008 1287 rferrel Made dialog non-blocking.
|
* 10/24/2008 1287 rferrel Made dialog non-blocking.
|
||||||
|
* 12/28/2012 DR15587 jzeng Query weather elements from fcst DB
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -226,6 +230,26 @@ public class ISCRequestReplyDlg extends CaveSWTDialog {
|
||||||
this.xml = (String) response[0];
|
this.xml = (String) response[0];
|
||||||
this.weList = (List<String>) response[1];
|
this.weList = (List<String>) response[1];
|
||||||
Collections.sort(this.weList);
|
Collections.sort(this.weList);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If the weList is empty, get it from database
|
||||||
|
*/
|
||||||
|
if (this.weList.isEmpty() ){
|
||||||
|
String query = "Select distinct (parmname) from awips.gfe";
|
||||||
|
List<Object[]> list = null;
|
||||||
|
try {
|
||||||
|
list = DirectDbQuery.executeQuery(query, "metadata",
|
||||||
|
QueryLanguage.SQL);
|
||||||
|
for (Object[] we : list){
|
||||||
|
weList.add(we[0].toString());
|
||||||
|
}
|
||||||
|
} catch (VizException e) {
|
||||||
|
statusHandler.handle(Priority.PROBLEM,
|
||||||
|
"Error querying database", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
domainDict = (Map<String, Map<String, List<Map<String, String>>>>) response[2];
|
domainDict = (Map<String, Map<String, List<Map<String, String>>>>) response[2];
|
||||||
serverDictT2S = (Map<String, Map<String, String>>) response[4];
|
serverDictT2S = (Map<String, Map<String, String>>) response[4];
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/**
|
/**
|
||||||
* This software was developed and / or modified by Raytheon Company,
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
*
|
*
|
||||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
* This software product contains export-restricted data whose
|
* This software product contains export-restricted data whose
|
||||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
* to non-U.S. persons whether in the United States or abroad requires
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
* an export license or other authorization.
|
* an export license or other authorization.
|
||||||
*
|
*
|
||||||
* Contractor Name: Raytheon Company
|
* Contractor Name: Raytheon Company
|
||||||
* Contractor Address: 6825 Pine Street, Suite 340
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
* Mail Stop B8
|
* Mail Stop B8
|
||||||
* Omaha, NE 68106
|
* Omaha, NE 68106
|
||||||
* 402.291.0100
|
* 402.291.0100
|
||||||
*
|
*
|
||||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
* further licensing information.
|
* further licensing information.
|
||||||
**/
|
**/
|
||||||
|
@ -23,8 +23,6 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.eclipse.swt.graphics.RGB;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.colormap.ColorMap;
|
import com.raytheon.uf.common.colormap.ColorMap;
|
||||||
import com.raytheon.uf.common.colormap.IColorMap;
|
import com.raytheon.uf.common.colormap.IColorMap;
|
||||||
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord.GridType;
|
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GFERecord.GridType;
|
||||||
|
@ -56,16 +54,17 @@ import com.raytheon.viz.gfe.core.wxvalue.WxValue;
|
||||||
/**
|
/**
|
||||||
* Utilities for displaying GFEResources correctly. Determines the fill color
|
* Utilities for displaying GFEResources correctly. Determines the fill color
|
||||||
* and/or pattern for discrete data (Weather or Hazard grids).
|
* and/or pattern for discrete data (Weather or Hazard grids).
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
*
|
*
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Apr 9, 2009 njensen Initial creation
|
* Apr 9, 2009 njensen Initial creation
|
||||||
*
|
* Jan 9, 2013 15648 ryu Update colormap when new discrete colrmap is selected.
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author njensen
|
* @author njensen
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
@ -74,8 +73,6 @@ public class DiscreteDisplayUtil {
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||||
.getHandler(DiscreteDisplayUtil.class);
|
.getHandler(DiscreteDisplayUtil.class);
|
||||||
|
|
||||||
private static Map<String, Map<String, RGB>> discreteParmToColorMap = new HashMap<String, Map<String, RGB>>();
|
|
||||||
|
|
||||||
private static ColorMap defaultSpectrum;
|
private static ColorMap defaultSpectrum;
|
||||||
|
|
||||||
private static synchronized ColorMap getDefaultSpectrum() {
|
private static synchronized ColorMap getDefaultSpectrum() {
|
||||||
|
@ -96,22 +93,29 @@ public class DiscreteDisplayUtil {
|
||||||
return defaultSpectrum;
|
return defaultSpectrum;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static WeatherColorTable weatherColorTable;
|
||||||
|
|
||||||
|
private static Map<String, DiscreteColorTable> discreteColorTable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete the discrete color map for parm. This should be done whenever the
|
* Delete the discrete color map for parm. This should be done whenever the
|
||||||
* color map in the resource is changed (to make getFillColor() load the new
|
* color map in the resource is changed (to make getFillColor() load the new
|
||||||
* color map), or when the parm is destroyed (to conserve storage).
|
* color map), or when the parm is destroyed (to conserve storage).
|
||||||
*
|
*
|
||||||
* @param parm
|
* @param parm
|
||||||
* The discrete parm whose color map is to be deleted.
|
* The discrete parm whose color map is to be deleted.
|
||||||
*/
|
*/
|
||||||
public static void deleteParmColorMap(Parm parm) {
|
public static synchronized void deleteParmColorMap(Parm parm) {
|
||||||
|
if (discreteColorTable == null) {
|
||||||
|
discreteColorTable = new HashMap<String, DiscreteColorTable>();
|
||||||
|
}
|
||||||
String compositeName = parm.getParmID().getCompositeName();
|
String compositeName = parm.getParmID().getCompositeName();
|
||||||
discreteParmToColorMap.put(compositeName, null);
|
discreteColorTable.remove(compositeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Given a parm, build a ColorMapParameters object for it.
|
* Given a parm, build a ColorMapParameters object for it.
|
||||||
*
|
*
|
||||||
* @param aparm
|
* @param aparm
|
||||||
* The parm for which color map parameters should be built.
|
* The parm for which color map parameters should be built.
|
||||||
* @return the ColorMapParameters for the parm.
|
* @return the ColorMapParameters for the parm.
|
||||||
|
@ -207,12 +211,9 @@ public class DiscreteDisplayUtil {
|
||||||
float logFactor = prefs.getFloat(logFactorPref);
|
float logFactor = prefs.getFloat(logFactorPref);
|
||||||
colorMP.setLogFactor(logFactor);
|
colorMP.setLogFactor(logFactor);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info.getGridType() == GridType.DISCRETE) {
|
if (info.getGridType() == GridType.DISCRETE) {
|
||||||
List<String> keys = info.getDiscreteKeys();
|
List<String> keys = info.getDiscreteKeys();
|
||||||
if (!keys.get(keys.size()-1).equalsIgnoreCase("LocalHazard")) {
|
|
||||||
keys.add("LocalHazard");
|
|
||||||
}
|
|
||||||
DataMappingPreferences dataMap = new DataMappingPreferences();
|
DataMappingPreferences dataMap = new DataMappingPreferences();
|
||||||
for (int i=0; i < keys.size(); i++) {
|
for (int i=0; i < keys.size(); i++) {
|
||||||
DataMappingEntry entry = new DataMappingEntry();
|
DataMappingEntry entry = new DataMappingEntry();
|
||||||
|
@ -232,10 +233,6 @@ public class DiscreteDisplayUtil {
|
||||||
return colorMP;
|
return colorMP;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static WeatherColorTable weatherColorTable;
|
|
||||||
|
|
||||||
private static Map<String, DiscreteColorTable> discreteColorTable;
|
|
||||||
|
|
||||||
public static List<ImageAttr> getFillAttributes(WxValue wxValue) {
|
public static List<ImageAttr> getFillAttributes(WxValue wxValue) {
|
||||||
|
|
||||||
if (wxValue instanceof WeatherWxValue) {
|
if (wxValue instanceof WeatherWxValue) {
|
||||||
|
@ -275,7 +272,6 @@ public class DiscreteDisplayUtil {
|
||||||
ColorMapParameters params = resource.getCapability(
|
ColorMapParameters params = resource.getCapability(
|
||||||
ColorMapCapability.class).getColorMapParameters();
|
ColorMapCapability.class).getColorMapParameters();
|
||||||
IColorMap colorMap = params.getColorMap();
|
IColorMap colorMap = params.getColorMap();
|
||||||
|
|
||||||
colorTable = new DiscreteColorTable(parm, colorMap);
|
colorTable = new DiscreteColorTable(parm, colorMap);
|
||||||
discreteColorTable.put(compName, colorTable);
|
discreteColorTable.put(compName, colorTable);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +1,26 @@
|
||||||
/**
|
/**
|
||||||
* This software was developed and / or modified by Raytheon Company,
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
*
|
*
|
||||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
* This software product contains export-restricted data whose
|
* This software product contains export-restricted data whose
|
||||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
* to non-U.S. persons whether in the United States or abroad requires
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
* an export license or other authorization.
|
* an export license or other authorization.
|
||||||
*
|
*
|
||||||
* Contractor Name: Raytheon Company
|
* Contractor Name: Raytheon Company
|
||||||
* Contractor Address: 6825 Pine Street, Suite 340
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
* Mail Stop B8
|
* Mail Stop B8
|
||||||
* Omaha, NE 68106
|
* Omaha, NE 68106
|
||||||
* 402.291.0100
|
* 402.291.0100
|
||||||
*
|
*
|
||||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
* further licensing information.
|
* further licensing information.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This package is associated with the classes that describe the Color bar at the
|
* This package is associated with the classes that describe the Color bar at the
|
||||||
* top of the Spatial Editor window.
|
* top of the Spatial Editor window.
|
||||||
*/
|
*/
|
||||||
package com.raytheon.viz.gfe.rsc.colorbar;
|
package com.raytheon.viz.gfe.rsc.colorbar;
|
||||||
|
|
||||||
|
@ -53,13 +53,20 @@ import com.raytheon.uf.viz.core.IGraphicsTarget.TextStyle;
|
||||||
import com.raytheon.uf.viz.core.IGraphicsTarget.VerticalAlignment;
|
import com.raytheon.uf.viz.core.IGraphicsTarget.VerticalAlignment;
|
||||||
import com.raytheon.uf.viz.core.PixelExtent;
|
import com.raytheon.uf.viz.core.PixelExtent;
|
||||||
import com.raytheon.uf.viz.core.RGBColors;
|
import com.raytheon.uf.viz.core.RGBColors;
|
||||||
|
import com.raytheon.uf.viz.core.drawables.ColorMapParameters;
|
||||||
import com.raytheon.uf.viz.core.drawables.FillPatterns;
|
import com.raytheon.uf.viz.core.drawables.FillPatterns;
|
||||||
|
import com.raytheon.uf.viz.core.drawables.IColorMapParametersListener;
|
||||||
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
import com.raytheon.uf.viz.core.drawables.PaintProperties;
|
||||||
|
import com.raytheon.uf.viz.core.drawables.ResourcePair;
|
||||||
import com.raytheon.uf.viz.core.exception.VizException;
|
import com.raytheon.uf.viz.core.exception.VizException;
|
||||||
import com.raytheon.uf.viz.core.map.IMapDescriptor;
|
import com.raytheon.uf.viz.core.map.IMapDescriptor;
|
||||||
|
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||||
|
import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability;
|
||||||
import com.raytheon.viz.gfe.Activator;
|
import com.raytheon.viz.gfe.Activator;
|
||||||
import com.raytheon.viz.gfe.colortable.ColorEntry;
|
import com.raytheon.viz.gfe.colortable.ColorEntry;
|
||||||
import com.raytheon.viz.gfe.colortable.ColorTable.ImageAttr;
|
import com.raytheon.viz.gfe.colortable.ColorTable.ImageAttr;
|
||||||
|
import com.raytheon.viz.gfe.core.DataManager;
|
||||||
|
import com.raytheon.viz.gfe.core.ISpatialDisplayManager;
|
||||||
import com.raytheon.viz.gfe.core.griddata.DiscreteGridData;
|
import com.raytheon.viz.gfe.core.griddata.DiscreteGridData;
|
||||||
import com.raytheon.viz.gfe.core.griddata.IGridData;
|
import com.raytheon.viz.gfe.core.griddata.IGridData;
|
||||||
import com.raytheon.viz.gfe.core.griddata.WeatherGridData;
|
import com.raytheon.viz.gfe.core.griddata.WeatherGridData;
|
||||||
|
@ -75,7 +82,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements a colorbar for continuous (scalar and vector) elements
|
* Implements a colorbar for continuous (scalar and vector) elements
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
|
@ -84,14 +91,16 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* Aug 20, 2008 dglazesk Updated for the new ColorMap interface
|
* Aug 20, 2008 dglazesk Updated for the new ColorMap interface
|
||||||
* Aug 20, 2012 1079 randerso Changed to display all discrete values for
|
* Aug 20, 2012 1079 randerso Changed to display all discrete values for
|
||||||
* non-overlapping discretes
|
* non-overlapping discretes
|
||||||
*
|
* Jan 9, 2013 15661 ryu Set font for drawing regular Wx/discrete parm labels.
|
||||||
|
* Jan 10, 2013 15548 ryu Update colorbar when new discrete colormap is selected
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author chammack
|
* @author chammack
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
public class DiscreteColorbar implements IColorBarDisplay,
|
public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
IGridDataChangedListener {
|
IGridDataChangedListener, IColorMapParametersListener {
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||||
.getHandler(DiscreteColorbar.class);
|
.getHandler(DiscreteColorbar.class);
|
||||||
|
|
||||||
|
@ -126,9 +135,11 @@ public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
|
|
||||||
private boolean lastIscMode;
|
private boolean lastIscMode;
|
||||||
|
|
||||||
|
private ColorMapParameters cmParams;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor for the Discrete Color Bar
|
* Constructor for the Discrete Color Bar
|
||||||
*
|
*
|
||||||
* @param parm
|
* @param parm
|
||||||
* The parm
|
* The parm
|
||||||
* @param colorbarResource
|
* @param colorbarResource
|
||||||
|
@ -143,16 +154,31 @@ public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
this.lastIscMode = parm.getDataManager().getParmManager().iscMode();
|
this.lastIscMode = parm.getDataManager().getParmManager().iscMode();
|
||||||
|
|
||||||
parm.getListeners().addGridChangedListener(this);
|
parm.getListeners().addGridChangedListener(this);
|
||||||
|
cmParams = getColorMapParameters();
|
||||||
|
cmParams.addListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ColorMapParameters getColorMapParameters() {
|
||||||
|
DataManager dataManager = parm.getDataManager();
|
||||||
|
ISpatialDisplayManager spatialDisplayManager = dataManager
|
||||||
|
.getSpatialDisplayManager();
|
||||||
|
ResourcePair resourcePair = spatialDisplayManager
|
||||||
|
.getResourcePair(parm);
|
||||||
|
AbstractVizResource<?, ?> resource = resourcePair.getResource();
|
||||||
|
ColorMapParameters params = resource.getCapability(
|
||||||
|
ColorMapCapability.class).getColorMapParameters();
|
||||||
|
return params;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.viz.gfe.rsc.colorbar.IColorBarDisplay#dispose()
|
* @see com.raytheon.viz.gfe.rsc.colorbar.IColorBarDisplay#dispose()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void dispose() {
|
public void dispose() {
|
||||||
parm.getListeners().removeGridChangedListener(this);
|
parm.getListeners().removeGridChangedListener(this);
|
||||||
|
cmParams.removeListener(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -160,9 +186,14 @@ public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
lastTime = null;
|
lastTime = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void colorMapChanged() {
|
||||||
|
lastTime = null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the Discrete Color map.
|
* Gets the Discrete Color map.
|
||||||
*
|
*
|
||||||
* @return Returns the color map used for the discrete data.
|
* @return Returns the color map used for the discrete data.
|
||||||
*/
|
*/
|
||||||
public static ColorMap getFallbackColorMap() {
|
public static ColorMap getFallbackColorMap() {
|
||||||
|
@ -171,7 +202,7 @@ public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.viz.core.drawables.IRenderable#paint(com.raytheon.viz.core
|
* com.raytheon.viz.core.drawables.IRenderable#paint(com.raytheon.viz.core
|
||||||
* .IGraphicsTarget, com.raytheon.viz.core.drawables.PaintProperties)
|
* .IGraphicsTarget, com.raytheon.viz.core.drawables.PaintProperties)
|
||||||
|
@ -395,7 +426,7 @@ public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
* Labels that do not fit their designated band on the bar will be
|
* Labels that do not fit their designated band on the bar will be
|
||||||
* truncated. Pickup value text will always be displayed in full, so any
|
* truncated. Pickup value text will always be displayed in full, so any
|
||||||
* text it overlaps will not be drawn.
|
* text it overlaps will not be drawn.
|
||||||
*
|
*
|
||||||
* @param target
|
* @param target
|
||||||
* The graphics target on which to draw
|
* The graphics target on which to draw
|
||||||
* @param colorTable
|
* @param colorTable
|
||||||
|
@ -516,6 +547,7 @@ public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
true);
|
true);
|
||||||
dstring.setText(truncatedLabel, seColorBarTextColor);
|
dstring.setText(truncatedLabel, seColorBarTextColor);
|
||||||
dstring.setCoordinates(labelLoc, center);
|
dstring.setCoordinates(labelLoc, center);
|
||||||
|
dstring.font = colorbarResource.getColorbarWxLabelFont();
|
||||||
target.drawStrings(dstring);
|
target.drawStrings(dstring);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -525,7 +557,7 @@ public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Draws the colorbar once colors and patterns have been decided.
|
* Draws the colorbar once colors and patterns have been decided.
|
||||||
*
|
*
|
||||||
* @param target
|
* @param target
|
||||||
* The graphics target on which to draw.
|
* The graphics target on which to draw.
|
||||||
* @param pixelExtent
|
* @param pixelExtent
|
||||||
|
@ -625,7 +657,7 @@ public class DiscreteColorbar implements IColorBarDisplay,
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.viz.gfe.rsc.colorbar.IColorBarDisplay#getValueAt(double[],
|
* com.raytheon.viz.gfe.rsc.colorbar.IColorBarDisplay#getValueAt(double[],
|
||||||
* int)
|
* int)
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
</loadProperties>
|
</loadProperties>
|
||||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
|
<properties isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
|
||||||
</properties>
|
</properties>
|
||||||
<resourceData xsi:type="gridResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
<resourceData xsi:type="gridResourceData" customLegend="${customLegend}" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||||
<metadataMap>
|
<metadataMap>
|
||||||
<mapping key="info.parameter.abbreviation">
|
<mapping key="info.parameter.abbreviation">
|
||||||
<constraint constraintValue="${param}" constraintType="EQUALS"/>
|
<constraint constraintValue="${param}" constraintType="EQUALS"/>
|
||||||
|
|
|
@ -37,26 +37,32 @@
|
||||||
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
||||||
menuText="0-3hr Prob > 0.1 inch" id="probGt01Inch">
|
menuText="0-3hr Prob > 0.1 inch" id="probGt01Inch">
|
||||||
<substitute key="param" value="PQPF23hr"/>
|
<substitute key="param" value="PQPF23hr"/>
|
||||||
|
<substitute key="customLegend" value="0-3hr. Probability of Rain > 0.1in."/>
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
||||||
menuText="0-3hr Prob > 0.5 inch" id="probGt05Inch">
|
menuText="0-3hr Prob > 0.5 inch" id="probGt05Inch">
|
||||||
<substitute key="param" value="PQPF33hr"/>
|
<substitute key="param" value="PQPF33hr"/>
|
||||||
|
<substitute key="customLegend" value="0-3hr. Probability of Rain > 0.5in."/>
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
||||||
menuText="0-3hr Prob > 1.0 inch" id="probGt1Inch">
|
menuText="0-3hr Prob > 1.0 inch" id="probGt1Inch">
|
||||||
<substitute key="param" value="PQPF53hr"/>
|
<substitute key="param" value="PQPF53hr"/>
|
||||||
|
<substitute key="customLegend" value="0-3hr. Probability of Rain > 1.0in."/>
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
||||||
menuText="0-3hr Prob > 2.0 inch" id="probGt2Inch">
|
menuText="0-3hr Prob > 2.0 inch" id="probGt2Inch">
|
||||||
<substitute key="param" value="PQPF63hr"/>
|
<substitute key="param" value="PQPF63hr"/>
|
||||||
|
<substitute key="customLegend" value="0-3hr. Probability of Rain > 2.0in."/>
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
||||||
menuText="0-3hr Rainfall (inch)" id="rainfall">
|
menuText="0-3hr Rainfall (inch)" id="rainfall">
|
||||||
<substitute key="param" value="SCQP3hr"/>
|
<substitute key="param" value="SCQP3hr"/>
|
||||||
|
<substitute key="customLegend" value="0-3hr. Rainfall Amount"/>
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
<contribute xsi:type="bundleItem" file="bundles/hydro/zeroToThreeHourRadarQPF.xml"
|
||||||
menuText="0-3hr Prob CG Lightning" id="probCGLightning">
|
menuText="0-3hr Prob CG Lightning" id="probCGLightning">
|
||||||
<substitute key="param" value="PVORT3hr"/>
|
<substitute key="param" value="PVORT3hr"/>
|
||||||
|
<substitute key="customLegend" value="0-3hr. CG Lightning Probability"/>
|
||||||
</contribute>
|
</contribute>
|
||||||
</contribute>
|
</contribute>
|
||||||
</menuTemplate>
|
</menuTemplate>
|
|
@ -132,7 +132,8 @@ import com.raytheon.viz.hydrocommon.util.DbUtils;
|
||||||
* to display stage value, also added checking for rating curve for both
|
* to display stage value, also added checking for rating curve for both
|
||||||
* stage and discharge.
|
* stage and discharge.
|
||||||
* 13 Nov 2012 15416 lbousaidi added a check when the colorname is null and a call to
|
* 13 Nov 2012 15416 lbousaidi added a check when the colorname is null and a call to
|
||||||
* getGroupModeColor
|
* getGroupModeColor
|
||||||
|
* 09 Jan 2012 15493 lbousaidi added code to delete data while zooming when you draw a box
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*
|
*
|
||||||
|
@ -1714,7 +1715,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (dialog.isDelete()) {
|
} else if ( traceSelected && dialog.isDelete()) {
|
||||||
if (mouseDown) {
|
if (mouseDown) {
|
||||||
int deleteX1 = selectedX;
|
int deleteX1 = selectedX;
|
||||||
int deleteY1 = selectedY;
|
int deleteY1 = selectedY;
|
||||||
|
@ -2111,8 +2112,13 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
getAgain = false;
|
getAgain = false;
|
||||||
} else if (traceSelected && dialog.isDelete() && (deleteRect != null)) {
|
} else if (traceSelected && dialog.isDelete() && (deleteRect != null)) {
|
||||||
TraceData td = graphData.getTraces().get(selectedTraceId);
|
TraceData td = graphData.getTraces().get(selectedTraceId);
|
||||||
|
TimeSeriesPoint[] pointArray= null;
|
||||||
|
if (!zoomed ){
|
||||||
|
pointArray = td.getTsData();
|
||||||
|
} else {
|
||||||
|
pointArray = td.getZoomedTsData();
|
||||||
|
}
|
||||||
|
|
||||||
TimeSeriesPoint[] pointArray = td.getTsData();
|
|
||||||
for (int i = 0; i < pointArray.length; i++) {
|
for (int i = 0; i < pointArray.length; i++) {
|
||||||
if (deleteRect.contains(pointArray[i].getPixelX(),
|
if (deleteRect.contains(pointArray[i].getPixelX(),
|
||||||
pointArray[i].getPixelY())) {
|
pointArray[i].getPixelY())) {
|
||||||
|
@ -2345,6 +2351,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
int[] dataPts = new int[pointArray.length * 2];
|
int[] dataPts = new int[pointArray.length * 2];
|
||||||
ArrayList<Integer> dataPtList = new ArrayList<Integer>();
|
ArrayList<Integer> dataPtList = new ArrayList<Integer>();
|
||||||
int dataIndex = 0;
|
int dataIndex = 0;
|
||||||
|
int zoomDataIndex=0;
|
||||||
ArrayList<Integer> al = new ArrayList<Integer>();
|
ArrayList<Integer> al = new ArrayList<Integer>();
|
||||||
for (int i = 0; i < pointArray.length; i++) {
|
for (int i = 0; i < pointArray.length; i++) {
|
||||||
if (pointArray[i].getY() != HydroConstants.MISSING_VALUE) {
|
if (pointArray[i].getY() != HydroConstants.MISSING_VALUE) {
|
||||||
|
@ -2378,11 +2385,15 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
al.add(GRAPHBORDER_LEFT
|
al.add(GRAPHBORDER_LEFT
|
||||||
+ x2pixel(graphData, pointArray[i].getX()
|
+ x2pixel(graphData, pointArray[i].getX()
|
||||||
.getTime()));
|
.getTime()));
|
||||||
|
pointArray[i].setPixelX(al.get(zoomDataIndex));
|
||||||
|
zoomDataIndex++;
|
||||||
al.add(GRAPHBORDER
|
al.add(GRAPHBORDER
|
||||||
* 2
|
* 2
|
||||||
+ graphAreaHeight
|
+ graphAreaHeight
|
||||||
- (lowerAxis - y2pixel(graphData,
|
- (lowerAxis - y2pixel(graphData,
|
||||||
pointArray[i].getY())));
|
pointArray[i].getY())));
|
||||||
|
pointArray[i].setPixely(al.get(zoomDataIndex));
|
||||||
|
zoomDataIndex++;
|
||||||
}
|
}
|
||||||
int[] pts = new int[al.size()];
|
int[] pts = new int[al.size()];
|
||||||
for (int j = 0; j < al.size(); j++) {
|
for (int j = 0; j < al.size(); j++) {
|
||||||
|
|
|
@ -38,6 +38,7 @@ import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||||
* Jul 7, 2008 1194 mpduff Initial creation
|
* Jul 7, 2008 1194 mpduff Initial creation
|
||||||
* May 11,2011 9281 lbousaid nothing get display in right y-axis when
|
* May 11,2011 9281 lbousaid nothing get display in right y-axis when
|
||||||
* there is no rating curve
|
* there is no rating curve
|
||||||
|
* Jan 03,2013 15652 wkwock Fix stage to discharge
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
|
@ -52,8 +53,10 @@ public class StageDischargeUtils {
|
||||||
|
|
||||||
private static String RATING_QUERY = "select lid,stage,discharge from rating where lid=':lid' order by stage asc";
|
private static String RATING_QUERY = "select lid,stage,discharge from rating where lid=':lid' order by stage asc";
|
||||||
|
|
||||||
private static String RATING_SHIFT_QUERY = "select lid,date,shift_amount from ratingshift where lid = ':lid' and active='T' order by date asc";
|
private static String RATING_SHIFT_QUERY = "select lid,date,shift_amount from ratingshift where lid = ':lid' and active='T' order by date desc";
|
||||||
|
|
||||||
|
private static boolean needToFindShiftAmount = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the corresponding stage value for the discharge value passed in.
|
* Returns the corresponding stage value for the discharge value passed in.
|
||||||
*
|
*
|
||||||
|
@ -78,7 +81,8 @@ public class StageDischargeUtils {
|
||||||
try {
|
try {
|
||||||
if ((ratingData == null) || !ratingData.getLid().equalsIgnoreCase(lid)) {
|
if ((ratingData == null) || !ratingData.getLid().equalsIgnoreCase(lid)) {
|
||||||
ratingData = queryRatingData(lid);
|
ratingData = queryRatingData(lid);
|
||||||
/* Check the Rating object for data and return true if data are available*/
|
needToFindShiftAmount = true;
|
||||||
|
/* Check the Rating object for data and return true if data are available*/
|
||||||
if (ratingData.getStage().size() > 2) {
|
if (ratingData.getStage().size() > 2) {
|
||||||
retVal = true;
|
retVal = true;
|
||||||
}
|
}
|
||||||
|
@ -88,7 +92,8 @@ public class StageDischargeUtils {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (ratingData.getLid().equalsIgnoreCase(lid)) {
|
if (ratingData.getLid().equalsIgnoreCase(lid)) {
|
||||||
ratingData = queryRatingData(lid);
|
ratingData = queryRatingData(lid);
|
||||||
|
needToFindShiftAmount = true;
|
||||||
if (ratingData.getStage().size() > 2) {
|
if (ratingData.getStage().size() > 2) {
|
||||||
retVal = true;
|
retVal = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -125,7 +130,6 @@ public class StageDischargeUtils {
|
||||||
}
|
}
|
||||||
|
|
||||||
double discharge = HydroConstants.MISSING_VALUE;
|
double discharge = HydroConstants.MISSING_VALUE;
|
||||||
boolean needToFindShiftAmount = false;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the lid passed in is NOT the same as the previous lid
|
* If the lid passed in is NOT the same as the previous lid
|
||||||
|
@ -133,11 +137,11 @@ public class StageDischargeUtils {
|
||||||
*/
|
*/
|
||||||
if (!lid.equals(previousLid)) {
|
if (!lid.equals(previousLid)) {
|
||||||
previousLid = lid;
|
previousLid = lid;
|
||||||
needToFindShiftAmount = true;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if ((ratingData == null) || !ratingData.getLid().equalsIgnoreCase(lid)) {
|
if ((ratingData == null) || !ratingData.getLid().equalsIgnoreCase(lid)) {
|
||||||
ratingData = queryRatingData(lid);
|
needToFindShiftAmount = true;
|
||||||
|
ratingData = queryRatingData(lid);
|
||||||
}
|
}
|
||||||
} catch (VizException e) {
|
} catch (VizException e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
|
@ -188,7 +192,8 @@ public class StageDischargeUtils {
|
||||||
stageRatingCurve.set(i, d);
|
stageRatingCurve.set(i, d);
|
||||||
}
|
}
|
||||||
ratingData.setStage(stageRatingCurve);
|
ratingData.setStage(stageRatingCurve);
|
||||||
}
|
needToFindShiftAmount = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<Double> dischargeList = ratingData.getDischarge();
|
ArrayList<Double> dischargeList = ratingData.getDischarge();
|
||||||
|
@ -291,6 +296,7 @@ public class StageDischargeUtils {
|
||||||
try {
|
try {
|
||||||
if ((ratingData == null) || !ratingData.getLid().equalsIgnoreCase(lid)) {
|
if ((ratingData == null) || !ratingData.getLid().equalsIgnoreCase(lid)) {
|
||||||
ratingData = queryRatingData(lid);
|
ratingData = queryRatingData(lid);
|
||||||
|
needToFindShiftAmount = true;
|
||||||
}
|
}
|
||||||
} catch (VizException e) {
|
} catch (VizException e) {
|
||||||
// TODO Auto-generated catch block
|
// TODO Auto-generated catch block
|
||||||
|
@ -422,10 +428,12 @@ public class StageDischargeUtils {
|
||||||
|
|
||||||
List<Object[]> results = DirectDbQuery.executeQuery(RATING_QUERY.replace(":lid", lid), HydroConstants.IHFS, QueryLanguage.SQL);
|
List<Object[]> results = DirectDbQuery.executeQuery(RATING_QUERY.replace(":lid", lid), HydroConstants.IHFS, QueryLanguage.SQL);
|
||||||
if (results != null) {
|
if (results != null) {
|
||||||
|
//the Rating constructor already add stage and discharge to it. so clear it...
|
||||||
|
rating.getStage().clear();
|
||||||
|
rating.getDischarge().clear();
|
||||||
for (int i = 0; i < results.size(); i++) {
|
for (int i = 0; i < results.size(); i++) {
|
||||||
Object[] sa = results.get(i);
|
Object[] sa = results.get(i);
|
||||||
if (((sa[1] != null) || (sa[1] != "")) && ((sa[2] != null) || (sa[2] != ""))) {
|
if (((sa[1] != null) || (sa[1] != "")) && ((sa[2] != null) || (sa[2] != ""))) {
|
||||||
// TODO check these types
|
|
||||||
rating.addStage((Double)sa[1]);
|
rating.addStage((Double)sa[1]);
|
||||||
rating.addDischarge((Double)sa[2]);
|
rating.addDischarge((Double)sa[2]);
|
||||||
}
|
}
|
||||||
|
@ -446,7 +454,7 @@ public class StageDischargeUtils {
|
||||||
/* Query the ratingShift table */
|
/* Query the ratingShift table */
|
||||||
ArrayList<Object[]> results = null;
|
ArrayList<Object[]> results = null;
|
||||||
try {
|
try {
|
||||||
results = (ArrayList<Object[]>)DirectDbQuery.executeQuery(RATING_SHIFT_QUERY, HydroConstants.IHFS, QueryLanguage.SQL);
|
results = (ArrayList<Object[]>)DirectDbQuery.executeQuery(RATING_SHIFT_QUERY.replace(":lid", lid), HydroConstants.IHFS, QueryLanguage.SQL);
|
||||||
} catch (VizException e) {
|
} catch (VizException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
|
|
|
@ -36,6 +36,8 @@ import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||||
* Nov 18, 2008 1697 askripsky Initial creation
|
* Nov 18, 2008 1697 askripsky Initial creation
|
||||||
* Dec 2, 2008 1744 askripsky Added getDBString methods
|
* Dec 2, 2008 1744 askripsky Added getDBString methods
|
||||||
* Dec 17, 2008 1782 grichard Added getDBString methods
|
* Dec 17, 2008 1782 grichard Added getDBString methods
|
||||||
|
* Jan 03, 2013 15520 lbousaidi Added getDBStringNoQuote method
|
||||||
|
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -116,4 +118,16 @@ public class HydroDBData {
|
||||||
public String getDBString(String str) {
|
public String getDBString(String str) {
|
||||||
return (str != null) ? "'" + str + "'" : "null";
|
return (str != null) ? "'" + str + "'" : "null";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns "null" if the value is set to null, else returns the value
|
||||||
|
* Doesn't add extra single quotes around the string
|
||||||
|
* @param str
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
|
||||||
|
public String getDBStringNoQuote(String str) {
|
||||||
|
return (str != null) ? str : "null";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,10 @@ import com.raytheon.viz.hydrocommon.HydroConstants;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Jan 6, 2008 1802 askripsky Initial creation
|
* Jan 6, 2008 1802 askripsky Initial creation
|
||||||
|
* Jan 3, 2013 15520 lbousaidi added a dollar-quoted string to getUpdate and
|
||||||
|
* getInsert statements to always write literally
|
||||||
|
* the string content.
|
||||||
|
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -765,7 +769,7 @@ public class RiverStatData extends HydroDBData implements IHydroDBData {
|
||||||
|
|
||||||
String rval = "INSERT INTO riverstat ( " + columns
|
String rval = "INSERT INTO riverstat ( " + columns
|
||||||
+ " ) VALUES ( %s, %s, %s, %s, %s, %s, %s,"
|
+ " ) VALUES ( %s, %s, %s, %s, %s, %s, %s,"
|
||||||
+ " %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,"
|
+ " %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, $$%s$$,%s,"
|
||||||
+ " %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s )";
|
+ " %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s )";
|
||||||
|
|
||||||
rval = String.format(rval, getDBString(lid), getDBString(primaryPE),
|
rval = String.format(rval, getDBString(lid), getDBString(primaryPE),
|
||||||
|
@ -776,7 +780,7 @@ public class RiverStatData extends HydroDBData implements IHydroDBData {
|
||||||
getDBString(level), getDBString(riverMile), getDBString(pool),
|
getDBString(level), getDBString(riverMile), getDBString(pool),
|
||||||
getDBString(periodOfRecord), getDBString(rated),
|
getDBString(periodOfRecord), getDBString(rated),
|
||||||
getDBString(latitude), getDBString(longitude),
|
getDBString(latitude), getDBString(longitude),
|
||||||
getDBString(remark), getDBString(reviseDate, dateFormat),
|
getDBStringNoQuote(remark), getDBString(reviseDate, dateFormat),
|
||||||
getDBString(latLonSource), getDBString(stream),
|
getDBString(latLonSource), getDBString(stream),
|
||||||
getDBString(tidalEffect), getDBString(backWater),
|
getDBString(tidalEffect), getDBString(backWater),
|
||||||
getDBString(verticalDatum), getDBString(actionFlow),
|
getDBString(verticalDatum), getDBString(actionFlow),
|
||||||
|
@ -809,7 +813,7 @@ public class RiverStatData extends HydroDBData implements IHydroDBData {
|
||||||
public String getUpdateStatement() {
|
public String getUpdateStatement() {
|
||||||
// Set the basic update statement
|
// Set the basic update statement
|
||||||
String rval = "UPDATE riverstat SET lid=%s, primary_pe=%s, bf=%s, cb=%s, da=%s, response_time=%s, threshold_runoff=%s,"
|
String rval = "UPDATE riverstat SET lid=%s, primary_pe=%s, bf=%s, cb=%s, da=%s, response_time=%s, threshold_runoff=%s,"
|
||||||
+ " fq=%s, fs=%s, gsno=%s, level=%s, mile=%s, pool=%s, por=%s, rated=%s, lat=%s, lon=%s, remark=%s, rrevise=%s,"
|
+ " fq=%s, fs=%s, gsno=%s, level=%s, mile=%s, pool=%s, por=%s, rated=%s, lat=%s, lon=%s, remark=$$%s$$, rrevise=%s,"
|
||||||
+ " rsource=%s, stream=%s, tide=%s, backwater=%s, vdatum=%s, action_flow=%s, wstg=%s, zd=%s, ratedat=%s,"
|
+ " rsource=%s, stream=%s, tide=%s, backwater=%s, vdatum=%s, action_flow=%s, wstg=%s, zd=%s, ratedat=%s,"
|
||||||
+ " usgs_ratenum=%s, uhgdur=%s, use_latest_fcst=%s WHERE %s";
|
+ " usgs_ratenum=%s, uhgdur=%s, use_latest_fcst=%s WHERE %s";
|
||||||
|
|
||||||
|
@ -822,7 +826,7 @@ public class RiverStatData extends HydroDBData implements IHydroDBData {
|
||||||
getDBString(level), getDBString(riverMile), getDBString(pool),
|
getDBString(level), getDBString(riverMile), getDBString(pool),
|
||||||
getDBString(periodOfRecord), getDBString(rated),
|
getDBString(periodOfRecord), getDBString(rated),
|
||||||
getDBString(latitude), getDBString(longitude),
|
getDBString(latitude), getDBString(longitude),
|
||||||
getDBString(remark), getDBString(reviseDate, dateFormat),
|
getDBStringNoQuote(remark), getDBString(reviseDate, dateFormat),
|
||||||
getDBString(latLonSource), getDBString(stream),
|
getDBString(latLonSource), getDBString(stream),
|
||||||
getDBString(tidalEffect), getDBString(backWater),
|
getDBString(tidalEffect), getDBString(backWater),
|
||||||
getDBString(verticalDatum), getDBString(actionFlow),
|
getDBString(verticalDatum), getDBString(actionFlow),
|
||||||
|
|
|
@ -94,6 +94,7 @@ import com.vividsolutions.jts.geom.GeometryFactory;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Oct 23, 2008 randerso Initial creation
|
* Oct 23, 2008 randerso Initial creation
|
||||||
* Sep 5, 2012 15079 snaples Updated interrogate method to handle values without rounding errors.
|
* Sep 5, 2012 15079 snaples Updated interrogate method to handle values without rounding errors.
|
||||||
|
* Jan 7, 2013 15483 wkwock Fix the "Radar coverage field" error
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author randerso
|
* @author randerso
|
||||||
|
@ -786,8 +787,16 @@ public class XmrgResource extends
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case Index:
|
case Index:
|
||||||
|
List<MPERadarLoc> radars= MPEDataManager.getInstance().getRadars();
|
||||||
|
for (int k=dmPref.getEntries().size();k<radars.size()+2;k++){
|
||||||
|
DataMappingEntry dme = new DataMappingEntry();
|
||||||
|
dme.setPixelValue((double) (k));
|
||||||
|
dme.setDisplayValue(Double.MAX_VALUE);
|
||||||
|
dmPref.addEntry(dme);
|
||||||
|
}
|
||||||
|
|
||||||
int j = 2;
|
int j = 2;
|
||||||
for (MPERadarLoc radar : MPEDataManager.getInstance().getRadars()) {
|
for (MPERadarLoc radar : radars) {
|
||||||
dmPref.getEntries().get(j++).setLabel(radar.getId());
|
dmPref.getEntries().get(j++).setLabel(radar.getId());
|
||||||
}
|
}
|
||||||
while (j < dmPref.getEntries().size()) {
|
while (j < dmPref.getEntries().size()) {
|
||||||
|
|
|
@ -55,6 +55,7 @@ import com.raytheon.viz.mpe.core.MPEDataManager.MPEGageData;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Oct 30, 2008 snaples Initial creation
|
* Oct 30, 2008 snaples Initial creation
|
||||||
* Aug 8, 2012 15271 snaples Updated hourly slot
|
* Aug 8, 2012 15271 snaples Updated hourly slot
|
||||||
|
* Jan 02, 2013 15565 snaples Fixed problem with wrong time being sent to mpe_fieldgen
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author snaples
|
* @author snaples
|
||||||
|
@ -277,9 +278,8 @@ public class RegenHrFlds {
|
||||||
/* Read Gage Data and store in structure */
|
/* Read Gage Data and store in structure */
|
||||||
/*-------------------------------------------------------------------------*/
|
/*-------------------------------------------------------------------------*/
|
||||||
Calendar cl = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
Calendar cl = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||||
cl.setTime(datetime);
|
cl.setTimeInMillis(datetime.getTime());
|
||||||
int hh = cl.get(Calendar.HOUR_OF_DAY);
|
int hh = cl.get(Calendar.HOUR_OF_DAY);
|
||||||
hh = hour_slot;
|
|
||||||
String hour = "" + hh;
|
String hour = "" + hh;
|
||||||
if (hh < 10) {
|
if (hh < 10) {
|
||||||
hour = "0" + hh;
|
hour = "0" + hh;
|
||||||
|
|
|
@ -23,7 +23,6 @@ import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
@ -53,6 +52,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Aug 19, 2011 bsteffen Initial creation
|
* Aug 19, 2011 bsteffen Initial creation
|
||||||
|
* Jan 10, 2013 snaples updated getBasePrecipData to use correct data for 1 hour precip.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -126,15 +126,15 @@ public class MetarPrecipDataContainer {
|
||||||
|
|
||||||
private static final long SIX_HOUR = 6 * ONE_HOUR;
|
private static final long SIX_HOUR = 6 * ONE_HOUR;
|
||||||
|
|
||||||
private int duration;
|
private final int duration;
|
||||||
|
|
||||||
private Map<String, RequestConstraint> rcMap = null;
|
private Map<String, RequestConstraint> rcMap = null;
|
||||||
|
|
||||||
private Map<Long, Map<String, PrecipData>> cache3 = new HashMap<Long, Map<String, PrecipData>>();
|
private final Map<Long, Map<String, PrecipData>> cache3 = new HashMap<Long, Map<String, PrecipData>>();
|
||||||
|
|
||||||
private Map<Long, Map<String, PrecipData>> cache6 = new HashMap<Long, Map<String, PrecipData>>();
|
private final Map<Long, Map<String, PrecipData>> cache6 = new HashMap<Long, Map<String, PrecipData>>();
|
||||||
|
|
||||||
private Map<DataTime, Set<String>> baseStations = new HashMap<DataTime, Set<String>>();
|
private final Map<DataTime, Set<String>> baseStations = new HashMap<DataTime, Set<String>>();
|
||||||
|
|
||||||
public MetarPrecipDataContainer(int duration,
|
public MetarPrecipDataContainer(int duration,
|
||||||
Map<String, RequestConstraint> rcMap) {
|
Map<String, RequestConstraint> rcMap) {
|
||||||
|
@ -148,15 +148,19 @@ public class MetarPrecipDataContainer {
|
||||||
if (duration == 1) {
|
if (duration == 1) {
|
||||||
PointDataContainer pdc = requestPointData(rcMap, validTime, 1,
|
PointDataContainer pdc = requestPointData(rcMap, validTime, 1,
|
||||||
P1_KEY);
|
P1_KEY);
|
||||||
|
Map<String, PrecipData> precipMap1 = null;
|
||||||
if (pdc != null) {
|
if (pdc != null) {
|
||||||
Map<String, PrecipData> precipMap1 = createPrecipData(pdc,
|
precipMap1 = createPrecipData(pdc,
|
||||||
validTime - ONE_HOUR, validTime, P1_KEY);
|
validTime - ONE_HOUR, validTime, P1_KEY);
|
||||||
Map<String, PrecipData> precipMap1old = createPrecipData(pdc,
|
if (precipMap1 == null) {
|
||||||
|
precipMap1 = createPrecipData(pdc,
|
||||||
validTime - ONE_HOUR + FIFTEEN_MIN, validTime
|
validTime - ONE_HOUR + FIFTEEN_MIN, validTime
|
||||||
- FIFTEEN_MIN, P1_KEY);
|
- FIFTEEN_MIN, P1_KEY);
|
||||||
|
}
|
||||||
// Data frame 15 minutes ago is better then data now for some
|
// Data frame 15 minutes ago is better then data now for some
|
||||||
// reason
|
// reason
|
||||||
precipMap = combine(precipMap1old, precipMap1);
|
precipMap = precipMap1;
|
||||||
|
|
||||||
}
|
}
|
||||||
} else if (duration == 3) {
|
} else if (duration == 3) {
|
||||||
precipMap = getRawPrecipData3(validTime);
|
precipMap = getRawPrecipData3(validTime);
|
||||||
|
|
|
@ -61,6 +61,7 @@ import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
|
||||||
* Feb 03, 2012 14317 mhuang Make alarm display window wider
|
* Feb 03, 2012 14317 mhuang Make alarm display window wider
|
||||||
* Sep 6, 2012 13365 rferrel Accumulate and Display fix.
|
* Sep 6, 2012 13365 rferrel Accumulate and Display fix.
|
||||||
* Sep 25, 2012 1196 lvenable Dialog refactor for AlarmDisplayWindow. Added DO_NOT_BLOCK.
|
* Sep 25, 2012 1196 lvenable Dialog refactor for AlarmDisplayWindow. Added DO_NOT_BLOCK.
|
||||||
|
* Dec 31, 2012 15651 mgamazaychikov Added an argument to re-factored PrintDisplay.print
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -198,7 +199,7 @@ public class AlarmDisplayWindow extends CaveSWTDialog {
|
||||||
}
|
}
|
||||||
|
|
||||||
PrintDisplay.print(lines.toString(), text.getFont()
|
PrintDisplay.print(lines.toString(), text.getFont()
|
||||||
.getFontData()[0], UFStatus
|
.getFontData()[0], -1, UFStatus
|
||||||
.getHandler(AlarmDisplayWindow.class));
|
.getHandler(AlarmDisplayWindow.class));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -207,7 +208,7 @@ public class AlarmDisplayWindow extends CaveSWTDialog {
|
||||||
@Override
|
@Override
|
||||||
public void widgetSelected(SelectionEvent event) {
|
public void widgetSelected(SelectionEvent event) {
|
||||||
PrintDisplay.print(text.getText(),
|
PrintDisplay.print(text.getText(),
|
||||||
text.getFont().getFontData()[0],
|
text.getFont().getFontData()[0], -1,
|
||||||
UFStatus.getHandler(AlarmDisplayWindow.class));
|
UFStatus.getHandler(AlarmDisplayWindow.class));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -307,6 +307,8 @@ import com.raytheon.viz.ui.dialogs.SWTMessageBox;
|
||||||
* 28Nov2012 14842 M.Gamazaychikov Re-wrote processPopup method
|
* 28Nov2012 14842 M.Gamazaychikov Re-wrote processPopup method
|
||||||
* 13Dec2012 1353 rferrel Change to make edit cancel message not
|
* 13Dec2012 1353 rferrel Change to make edit cancel message not
|
||||||
* dispaly the red had kill job message.
|
* dispaly the red had kill job message.
|
||||||
|
* 31Dec2012 15651 M.Gamazaychikov Added an argument to re-factored PrintDisplay.print
|
||||||
|
* 10JAN2012 15704 M.Gamazaychikov Added setting userKeyPressed to false in verifyText method.
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
|
@ -3538,7 +3540,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
||||||
if (textEditor.getEditable() == false) {
|
if (textEditor.getEditable() == false) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (event.keyCode == SWT.DEL || event.character == SWT.BS
|
if (event.keyCode == SWT.DEL || event.keyCode == SWT.BS
|
||||||
|| event.keyCode == SWT.SHIFT) {
|
|| event.keyCode == SWT.SHIFT) {
|
||||||
// Do nothing...
|
// Do nothing...
|
||||||
// We need to capture the Delete, Backspace and Shift
|
// We need to capture the Delete, Backspace and Shift
|
||||||
|
@ -4190,7 +4192,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
||||||
*/
|
*/
|
||||||
private void printAllText() {
|
private void printAllText() {
|
||||||
FontData fontData = textEditor.getFont().getFontData()[0];
|
FontData fontData = textEditor.getFont().getFontData()[0];
|
||||||
PrintDisplay.print(textEditor.getText(), fontData, statusHandler);
|
PrintDisplay.print(textEditor.getText(), fontData, charWrapCol, statusHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -4213,7 +4215,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
||||||
String tmpText = textEditor.getText();
|
String tmpText = textEditor.getText();
|
||||||
Point point = textEditor.getSelection();
|
Point point = textEditor.getSelection();
|
||||||
FontData fontData = textEditor.getFont().getFontData()[0];
|
FontData fontData = textEditor.getFont().getFontData()[0];
|
||||||
PrintDisplay.print(textEditor.getSelectionText(), fontData,
|
PrintDisplay.print(textEditor.getSelectionText(), fontData, charWrapCol,
|
||||||
statusHandler);
|
statusHandler);
|
||||||
textEditor.setText(tmpText);
|
textEditor.setText(tmpText);
|
||||||
textEditor.setSelection(point);
|
textEditor.setSelection(point);
|
||||||
|
@ -5142,6 +5144,11 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
||||||
int rangeEnd = rangeStart + ranges[i + 1];
|
int rangeEnd = rangeStart + ranges[i + 1];
|
||||||
if (event.start > rangeStart && event.start < rangeEnd) {
|
if (event.start > rangeStart && event.start < rangeEnd) {
|
||||||
event.doit = false;
|
event.doit = false;
|
||||||
|
/*
|
||||||
|
* DR15704 - this needs to be set so the rewrap is not called
|
||||||
|
* when locked text gets editted.
|
||||||
|
*/
|
||||||
|
userKeyPressed = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5150,6 +5157,11 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
||||||
int ranges[] = textEditor.getRanges(event.start, length);
|
int ranges[] = textEditor.getRanges(event.start, length);
|
||||||
if (inEditMode && ranges != null && ranges.length != 0) {
|
if (inEditMode && ranges != null && ranges.length != 0) {
|
||||||
event.doit = false;
|
event.doit = false;
|
||||||
|
/*
|
||||||
|
* DR15704 - this needs to be set so the rewrap is not called
|
||||||
|
* when locked text gets editted.
|
||||||
|
*/
|
||||||
|
userKeyPressed = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
|
|
|
@ -43,6 +43,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||||
* Sep 15, 2011 10557 rferrel Initial creation
|
* Sep 15, 2011 10557 rferrel Initial creation
|
||||||
* Jul 17, 2012 14274 rferrel Now use eclipse Printer instead of awt.
|
* Jul 17, 2012 14274 rferrel Now use eclipse Printer instead of awt.
|
||||||
* Text is printed using same font as the GUI
|
* Text is printed using same font as the GUI
|
||||||
|
* Dec 31, 2012 15651 mgamazaychikov Added setFont method to scale font for printing
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -52,7 +53,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||||
|
|
||||||
public class PrintDisplay {
|
public class PrintDisplay {
|
||||||
public static void print(final String printedText, final FontData fontData,
|
public static void print(final String printedText, final FontData fontData,
|
||||||
IUFStatusHandler statusHandler) {
|
int aLineWidth, IUFStatusHandler statusHandler) {
|
||||||
PrinterData data = Printer.getDefaultPrinterData();
|
PrinterData data = Printer.getDefaultPrinterData();
|
||||||
if (data == null) {
|
if (data == null) {
|
||||||
statusHandler.handle(Priority.PROBLEM,
|
statusHandler.handle(Priority.PROBLEM,
|
||||||
|
@ -66,9 +67,11 @@ public class PrintDisplay {
|
||||||
}
|
}
|
||||||
|
|
||||||
final Printer printer = new Printer(data);
|
final Printer printer = new Printer(data);
|
||||||
PrintDisplay pd = new PrintDisplay(printer, printedText, fontData);
|
PrintDisplay pd = new PrintDisplay(printer, printedText, fontData, aLineWidth);
|
||||||
pd.printJob();
|
pd.printJob();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int lineWidth;
|
||||||
|
|
||||||
private Printer printer;
|
private Printer printer;
|
||||||
|
|
||||||
|
@ -102,10 +105,16 @@ public class PrintDisplay {
|
||||||
|
|
||||||
int end;
|
int end;
|
||||||
|
|
||||||
private PrintDisplay(Printer printer, String text, FontData fontData) {
|
private PrintDisplay(Printer printer, String text, FontData fontData, int aWidth) {
|
||||||
this.printer = printer;
|
this.printer = printer;
|
||||||
this.textToPrint = text;
|
this.textToPrint = text;
|
||||||
this.printerFontData = fontData;
|
this.printerFontData = fontData;
|
||||||
|
if (aWidth == -1) {
|
||||||
|
this.lineWidth = 69;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
this.lineWidth = aWidth;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void printJob() {
|
private void printJob() {
|
||||||
|
@ -118,11 +127,43 @@ public class PrintDisplay {
|
||||||
thread.start();
|
thread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void printIt() {
|
protected void setFont() {
|
||||||
|
/*
|
||||||
|
* get the original font size and set the gc font.
|
||||||
|
*/
|
||||||
|
float origFontSize = printerFontData.getHeight();
|
||||||
|
Font printerFont = new Font(printer, printerFontData);
|
||||||
|
gc.setFont(printerFont);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a buffer for computing line width in pixels.
|
||||||
|
*/
|
||||||
|
StringBuilder aBuffer = new StringBuilder(lineWidth);
|
||||||
|
for (int i = 0; i < lineWidth; i++) {
|
||||||
|
aBuffer.append(' ');
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* Get the line width in pixels and the device's width in pixels
|
||||||
|
*/
|
||||||
|
int lineWidthPixels = gc.stringExtent(aBuffer.toString()).x;
|
||||||
|
int deviceWidthPixels = rightMargin - leftMargin;
|
||||||
|
printerFont.dispose();
|
||||||
|
/*
|
||||||
|
* Scale the original font size;
|
||||||
|
*/
|
||||||
|
float fontSize = (float)deviceWidthPixels / (float)lineWidthPixels * (float)origFontSize;
|
||||||
|
/*
|
||||||
|
* Set the printerFont Data font to the scaled font
|
||||||
|
*/
|
||||||
|
printerFontData.setHeight((int)(fontSize));
|
||||||
|
gc.setFont(new Font(printer, printerFontData));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void printIt() {
|
||||||
if (printer.startJob("Text")) { // the string is the job name - shows up
|
if (printer.startJob("Text")) { // the string is the job name - shows up
|
||||||
// in the printer's job list
|
// in the printer's job list
|
||||||
Rectangle clientArea = printer.getClientArea();
|
Rectangle clientArea = printer.getClientArea();
|
||||||
Rectangle trim = printer.computeTrim(0, 0, 0, 0);
|
Rectangle trim = printer.computeTrim(0, 0, 0, 0);
|
||||||
Point dpi = printer.getDPI();
|
Point dpi = printer.getDPI();
|
||||||
|
|
||||||
// one inch from left side of paper
|
// one inch from left side of paper
|
||||||
|
@ -145,12 +186,10 @@ public class PrintDisplay {
|
||||||
* foreground color.
|
* foreground color.
|
||||||
*/
|
*/
|
||||||
gc = new GC(printer);
|
gc = new GC(printer);
|
||||||
Font printerFont = new Font(printer, printerFontData);
|
setFont();
|
||||||
Color printerForegroundColor = new Color(printer, new RGB(0, 0, 0));
|
Color printerForegroundColor = new Color(printer, new RGB(0, 0, 0));
|
||||||
Color printerBackgroundColor = new Color(printer, new RGB(255, 255,
|
Color printerBackgroundColor = new Color(printer, new RGB(255, 255,
|
||||||
255));
|
255));
|
||||||
|
|
||||||
gc.setFont(printerFont);
|
|
||||||
gc.setForeground(printerForegroundColor);
|
gc.setForeground(printerForegroundColor);
|
||||||
gc.setBackground(printerBackgroundColor);
|
gc.setBackground(printerBackgroundColor);
|
||||||
tabWidth = gc.stringExtent(tabs).x;
|
tabWidth = gc.stringExtent(tabs).x;
|
||||||
|
@ -161,7 +200,7 @@ public class PrintDisplay {
|
||||||
printer.endJob();
|
printer.endJob();
|
||||||
|
|
||||||
// Cleanup graphics resources used in printing
|
// Cleanup graphics resources used in printing
|
||||||
printerFont.dispose();
|
|
||||||
printerForegroundColor.dispose();
|
printerForegroundColor.dispose();
|
||||||
printerBackgroundColor.dispose();
|
printerBackgroundColor.dispose();
|
||||||
gc.dispose();
|
gc.dispose();
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/**
|
/**
|
||||||
* This software was developed and / or modified by Raytheon Company,
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
*
|
*
|
||||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
* This software product contains export-restricted data whose
|
* This software product contains export-restricted data whose
|
||||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
* to non-U.S. persons whether in the United States or abroad requires
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
* an export license or other authorization.
|
* an export license or other authorization.
|
||||||
*
|
*
|
||||||
* Contractor Name: Raytheon Company
|
* Contractor Name: Raytheon Company
|
||||||
* Contractor Address: 6825 Pine Street, Suite 340
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
* Mail Stop B8
|
* Mail Stop B8
|
||||||
* Omaha, NE 68106
|
* Omaha, NE 68106
|
||||||
* 402.291.0100
|
* 402.291.0100
|
||||||
*
|
*
|
||||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
* further licensing information.
|
* further licensing information.
|
||||||
**/
|
**/
|
||||||
|
@ -28,17 +28,18 @@ import com.raytheon.viz.ui.dialogs.colordialog.ColorEditDialog;
|
||||||
import com.raytheon.viz.ui.editor.IMultiPaneEditor;
|
import com.raytheon.viz.ui.editor.IMultiPaneEditor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Allows a resource's color to be changed
|
* Allows a resource's color to be changed
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Nov 13, 2006 chammack Initial Creation.
|
* Nov 13, 2006 chammack Initial Creation.
|
||||||
*
|
* Jan 9, 2013 15648 ryu Fix NPE on closing color editor.
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author chammack
|
* @author chammack
|
||||||
* @version 1
|
* @version 1
|
||||||
*/
|
*/
|
||||||
|
@ -54,7 +55,7 @@ public class ColorEditDialogAction extends AbstractRightClickAction {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.jface.action.Action#run()
|
* @see org.eclipse.jface.action.Action#run()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -76,7 +77,8 @@ public class ColorEditDialogAction extends AbstractRightClickAction {
|
||||||
.getCurrentWindow().getShell(), container,
|
.getCurrentWindow().getShell(), container,
|
||||||
getSelectedRsc(), false, false);
|
getSelectedRsc(), false, false);
|
||||||
|
|
||||||
container.refresh();
|
if (container != null)
|
||||||
|
container.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/**
|
/**
|
||||||
* This software was developed and / or modified by Raytheon Company,
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
*
|
*
|
||||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
* This software product contains export-restricted data whose
|
* This software product contains export-restricted data whose
|
||||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
* to non-U.S. persons whether in the United States or abroad requires
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
* an export license or other authorization.
|
* an export license or other authorization.
|
||||||
*
|
*
|
||||||
* Contractor Name: Raytheon Company
|
* Contractor Name: Raytheon Company
|
||||||
* Contractor Address: 6825 Pine Street, Suite 340
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
* Mail Stop B8
|
* Mail Stop B8
|
||||||
* Omaha, NE 68106
|
* Omaha, NE 68106
|
||||||
* 402.291.0100
|
* 402.291.0100
|
||||||
*
|
*
|
||||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
* further licensing information.
|
* further licensing information.
|
||||||
**/
|
**/
|
||||||
|
@ -33,17 +33,20 @@ import com.raytheon.uf.common.colormap.ColorMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Composite for colormap editing
|
* Composite for colormap editing
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
*
|
*
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
*
|
*
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Nov 18, 2010 mschenke Initial creation
|
* Nov 18, 2010 mschenke Initial creation
|
||||||
*
|
* Jan 10, 2013 15648 ryu Editing GFE discrete colormap: a check button
|
||||||
|
* is added and duplicate entries in the colormap
|
||||||
|
* are removed when it is selected.
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author mschenke
|
* @author mschenke
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
@ -76,6 +79,11 @@ public class ColorEditComposite extends Composite implements IColorWheelAction,
|
||||||
*/
|
*/
|
||||||
private Button hsbRdo;
|
private Button hsbRdo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* GFE discrete check button.
|
||||||
|
*/
|
||||||
|
private Button gfeDiscreteCheck;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Title for the upper color wheel.
|
* Title for the upper color wheel.
|
||||||
*/
|
*/
|
||||||
|
@ -125,6 +133,9 @@ public class ColorEditComposite extends Composite implements IColorWheelAction,
|
||||||
true));
|
true));
|
||||||
// lowerColorWheel.setColor(colorArray.get(colorArray.size() - 1));
|
// lowerColorWheel.setColor(colorArray.get(colorArray.size() - 1));
|
||||||
lowerColorWheel.setColor(initial);
|
lowerColorWheel.setColor(initial);
|
||||||
|
|
||||||
|
// Create the GFE discrete check button.
|
||||||
|
createGFEDiscreteButton();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -168,6 +179,32 @@ public class ColorEditComposite extends Composite implements IColorWheelAction,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create the GFE discrete check button.
|
||||||
|
*/
|
||||||
|
private void createGFEDiscreteButton() {
|
||||||
|
// Create a group to contain the RGB and HSB radio buttons.
|
||||||
|
Group discreteGroup = new Group(getParent(), SWT.NONE);
|
||||||
|
|
||||||
|
RowLayout groupRowLayout = new RowLayout();
|
||||||
|
groupRowLayout.marginLeft = 10;
|
||||||
|
groupRowLayout.marginRight = 10;
|
||||||
|
groupRowLayout.spacing = 10;
|
||||||
|
discreteGroup.setLayout(groupRowLayout);
|
||||||
|
discreteGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
|
||||||
|
|
||||||
|
// Create the discrete check button.
|
||||||
|
gfeDiscreteCheck = new Button(discreteGroup, SWT.CHECK);
|
||||||
|
gfeDiscreteCheck.setText("GFE Discrete");
|
||||||
|
gfeDiscreteCheck.setSelection(false);
|
||||||
|
gfeDiscreteCheck.addSelectionListener(new SelectionAdapter() {
|
||||||
|
@Override
|
||||||
|
public void widgetSelected(SelectionEvent event) {
|
||||||
|
updateColorMap();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Change the upper and lower color wheel objects to display either RGB or
|
* Change the upper and lower color wheel objects to display either RGB or
|
||||||
* HSB.
|
* HSB.
|
||||||
|
@ -185,7 +222,7 @@ public class ColorEditComposite extends Composite implements IColorWheelAction,
|
||||||
/**
|
/**
|
||||||
* Fill the area between the sliders in the color bar using the color data
|
* Fill the area between the sliders in the color bar using the color data
|
||||||
* provided.
|
* provided.
|
||||||
*
|
*
|
||||||
* @param colorData
|
* @param colorData
|
||||||
* The color data object containing the RGB color and the alpha
|
* The color data object containing the RGB color and the alpha
|
||||||
* value.
|
* value.
|
||||||
|
@ -200,7 +237,7 @@ public class ColorEditComposite extends Composite implements IColorWheelAction,
|
||||||
* Set the color where the top or bottom slider is pointing. The color wheel
|
* Set the color where the top or bottom slider is pointing. The color wheel
|
||||||
* title is used to determine if the color is from the upper color wheel or
|
* title is used to determine if the color is from the upper color wheel or
|
||||||
* the lower color wheel.
|
* the lower color wheel.
|
||||||
*
|
*
|
||||||
* @param colorData
|
* @param colorData
|
||||||
* The color data object containing the RGB color and the alpha
|
* The color data object containing the RGB color and the alpha
|
||||||
* value.
|
* value.
|
||||||
|
@ -221,7 +258,7 @@ public class ColorEditComposite extends Composite implements IColorWheelAction,
|
||||||
* A callback method used by the ColorBar class. This method is called to
|
* A callback method used by the ColorBar class. This method is called to
|
||||||
* update the upper or lower color wheel when the mouse is clicked in the
|
* update the upper or lower color wheel when the mouse is clicked in the
|
||||||
* color bar and moved around.
|
* color bar and moved around.
|
||||||
*
|
*
|
||||||
* @param colorData
|
* @param colorData
|
||||||
* The color data object containing the RGB color and the alpha
|
* The color data object containing the RGB color and the alpha
|
||||||
* value.
|
* value.
|
||||||
|
@ -242,6 +279,9 @@ public class ColorEditComposite extends Composite implements IColorWheelAction,
|
||||||
*/
|
*/
|
||||||
public void updateColorMap() {
|
public void updateColorMap() {
|
||||||
colorMap = ColorUtil.buildColorMap(colorBar.getCurrentColors(), null);
|
colorMap = ColorUtil.buildColorMap(colorBar.getCurrentColors(), null);
|
||||||
|
if (isGFEDiscrete()) {
|
||||||
|
colorMap.removeDuplicates();
|
||||||
|
}
|
||||||
callback.updateColorMap(colorMap);
|
callback.updateColorMap(colorMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -277,4 +317,8 @@ public class ColorEditComposite extends Composite implements IColorWheelAction,
|
||||||
return colorMap;
|
return colorMap;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isGFEDiscrete() {
|
||||||
|
return gfeDiscreteCheck.getSelection();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/**
|
/**
|
||||||
* This software was developed and / or modified by Raytheon Company,
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
*
|
*
|
||||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
* This software product contains export-restricted data whose
|
* This software product contains export-restricted data whose
|
||||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
* to non-U.S. persons whether in the United States or abroad requires
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
* an export license or other authorization.
|
* an export license or other authorization.
|
||||||
*
|
*
|
||||||
* Contractor Name: Raytheon Company
|
* Contractor Name: Raytheon Company
|
||||||
* Contractor Address: 6825 Pine Street, Suite 340
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
* Mail Stop B8
|
* Mail Stop B8
|
||||||
* Omaha, NE 68106
|
* Omaha, NE 68106
|
||||||
* 402.291.0100
|
* 402.291.0100
|
||||||
*
|
*
|
||||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
* further licensing information.
|
* further licensing information.
|
||||||
**/
|
**/
|
||||||
|
@ -69,7 +69,7 @@ import com.raytheon.viz.ui.editor.ISelectedPanesChangedListener;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is the main dialog for the Color Edit Dialog.
|
* This is the main dialog for the Color Edit Dialog.
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
|
@ -77,9 +77,12 @@ import com.raytheon.viz.ui.editor.ISelectedPanesChangedListener;
|
||||||
* lvenable Initial Creation.
|
* lvenable Initial Creation.
|
||||||
* Jul 24, 2007 njensen Hooked into backend.
|
* Jul 24, 2007 njensen Hooked into backend.
|
||||||
* Oct 17, 2012 1229 rferrel Changes for non-blocking SaveColorMapDialog.
|
* Oct 17, 2012 1229 rferrel Changes for non-blocking SaveColorMapDialog.
|
||||||
*
|
* Jan 10, 2013 15648 ryu Editing GFE discrete colormap: a check button
|
||||||
|
* is added and duplicate entries in the colormap
|
||||||
|
* are removed when it is selected.
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
@ -172,7 +175,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*
|
*
|
||||||
* @param parent
|
* @param parent
|
||||||
* Parent shell.
|
* Parent shell.
|
||||||
*/
|
*/
|
||||||
|
@ -606,7 +609,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.uf.viz.core.IVizEditorChangedListener#editorChanged(com.
|
* com.raytheon.uf.viz.core.IVizEditorChangedListener#editorChanged(com.
|
||||||
* raytheon.uf.viz.core.IDisplayPaneContainer)
|
* raytheon.uf.viz.core.IDisplayPaneContainer)
|
||||||
|
@ -626,7 +629,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @seecom.raytheon.uf.viz.core.IRenderableDisplayChangedListener#
|
* @seecom.raytheon.uf.viz.core.IRenderableDisplayChangedListener#
|
||||||
* renderableDisplayChanged(com.raytheon.uf.viz.core.IDisplayPane,
|
* renderableDisplayChanged(com.raytheon.uf.viz.core.IDisplayPane,
|
||||||
* com.raytheon.uf.viz.core.drawables.IRenderableDisplay,
|
* com.raytheon.uf.viz.core.drawables.IRenderableDisplay,
|
||||||
|
@ -647,7 +650,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.uf.viz.core.rsc.ResourceList.RemoveListener#notifyRemove
|
* com.raytheon.uf.viz.core.rsc.ResourceList.RemoveListener#notifyRemove
|
||||||
* (com.raytheon.uf.viz.core.drawables.ResourcePair)
|
* (com.raytheon.uf.viz.core.drawables.ResourcePair)
|
||||||
|
@ -667,7 +670,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.uf.viz.core.rsc.ResourceList.AddListener#notifyAdd(com.raytheon
|
* com.raytheon.uf.viz.core.rsc.ResourceList.AddListener#notifyAdd(com.raytheon
|
||||||
* .uf.viz.core.drawables.ResourcePair)
|
* .uf.viz.core.drawables.ResourcePair)
|
||||||
|
@ -684,7 +687,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.uf.viz.core.rsc.IResourceDataChanged#resourceChanged(com
|
* com.raytheon.uf.viz.core.rsc.IResourceDataChanged#resourceChanged(com
|
||||||
* .raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType,
|
* .raytheon.uf.viz.core.rsc.IResourceDataChanged.ChangeType,
|
||||||
|
@ -713,7 +716,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param display
|
* @param display
|
||||||
*/
|
*/
|
||||||
private void removeListeners(IRenderableDisplay display) {
|
private void removeListeners(IRenderableDisplay display) {
|
||||||
|
@ -723,7 +726,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param rl
|
* @param rl
|
||||||
*/
|
*/
|
||||||
private void removeListeners(ResourceList rl) {
|
private void removeListeners(ResourceList rl) {
|
||||||
|
@ -759,7 +762,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param display
|
* @param display
|
||||||
*/
|
*/
|
||||||
private void addListeners(IRenderableDisplay display) {
|
private void addListeners(IRenderableDisplay display) {
|
||||||
|
@ -769,7 +772,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param rl
|
* @param rl
|
||||||
*/
|
*/
|
||||||
private void addListeners(ResourceList rl) {
|
private void addListeners(ResourceList rl) {
|
||||||
|
@ -793,7 +796,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.viz.ui.editor.ISelectedPaneChangedListener#selectedPaneChanged
|
* com.raytheon.viz.ui.editor.ISelectedPaneChangedListener#selectedPaneChanged
|
||||||
* (java.lang.String, com.raytheon.uf.viz.core.IDisplayPane)
|
* (java.lang.String, com.raytheon.uf.viz.core.IDisplayPane)
|
||||||
|
@ -836,10 +839,18 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ColorMap getColorMap() {
|
||||||
|
ColorMap cm = (ColorMap) cap.getColorMapParameters().getColorMap();
|
||||||
|
if (colorEditComp.isGFEDiscrete()) {
|
||||||
|
cm.removeDuplicates();
|
||||||
|
}
|
||||||
|
return cm;
|
||||||
|
}
|
||||||
|
|
||||||
private void officeSaveAs() {
|
private void officeSaveAs() {
|
||||||
if (mustCreate(officeSaveAsDialog)) {
|
if (mustCreate(officeSaveAsDialog)) {
|
||||||
officeSaveAsDialog = new SaveColorMapDialog(shell, (ColorMap) cap
|
officeSaveAsDialog = new SaveColorMapDialog(shell,
|
||||||
.getColorMapParameters().getColorMap(), true,
|
getColorMap(), true,
|
||||||
currentColormapName);
|
currentColormapName);
|
||||||
officeSaveAsDialog.setCloseCallback(new ICloseCallback() {
|
officeSaveAsDialog.setCloseCallback(new ICloseCallback() {
|
||||||
|
|
||||||
|
@ -859,8 +870,8 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
private void saveAs() {
|
private void saveAs() {
|
||||||
if (mustCreate(saveAsDialog)) {
|
if (mustCreate(saveAsDialog)) {
|
||||||
saveAsDialog = new SaveColorMapDialog(shell, (ColorMap) cap
|
saveAsDialog = new SaveColorMapDialog(shell,
|
||||||
.getColorMapParameters().getColorMap(), false,
|
getColorMap(), false,
|
||||||
currentColormapName);
|
currentColormapName);
|
||||||
saveAsDialog.setCloseCallback(new ICloseCallback() {
|
saveAsDialog.setCloseCallback(new ICloseCallback() {
|
||||||
|
|
||||||
|
@ -879,7 +890,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
}
|
}
|
||||||
|
|
||||||
private void save() {
|
private void save() {
|
||||||
ColorMap cm = (ColorMap) cap.getColorMapParameters().getColorMap();
|
ColorMap cm = getColorMap();
|
||||||
try {
|
try {
|
||||||
ColorUtil.saveColorMapLocal(cm, currentColormapName, false);
|
ColorUtil.saveColorMapLocal(cm, currentColormapName, false);
|
||||||
} catch (VizException e1) {
|
} catch (VizException e1) {
|
||||||
|
@ -914,7 +925,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.viz.ui.dialogs.colordialog.IColorBarAction#updateColor(com
|
* com.raytheon.viz.ui.dialogs.colordialog.IColorBarAction#updateColor(com
|
||||||
* .raytheon.viz.ui.dialogs.colordialog.ColorData, boolean)
|
* .raytheon.viz.ui.dialogs.colordialog.ColorData, boolean)
|
||||||
|
@ -926,7 +937,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.viz.ui.dialogs.colordialog.IColorWheelAction#setColor(com
|
* com.raytheon.viz.ui.dialogs.colordialog.IColorWheelAction#setColor(com
|
||||||
* .raytheon.viz.ui.dialogs.colordialog.ColorData, java.lang.String)
|
* .raytheon.viz.ui.dialogs.colordialog.ColorData, java.lang.String)
|
||||||
|
@ -938,7 +949,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see
|
* @see
|
||||||
* com.raytheon.viz.ui.dialogs.colordialog.IColorWheelAction#fillColor(com
|
* com.raytheon.viz.ui.dialogs.colordialog.IColorWheelAction#fillColor(com
|
||||||
* .raytheon.viz.ui.dialogs.colordialog.ColorData)
|
* .raytheon.viz.ui.dialogs.colordialog.ColorData)
|
||||||
|
@ -950,7 +961,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.viz.ui.dialogs.colordialog.IColorEditCompCallback#
|
* @see com.raytheon.viz.ui.dialogs.colordialog.IColorEditCompCallback#
|
||||||
* colorMapUpdated(com.raytheon.uf.common.colormap.ColorMap)
|
* colorMapUpdated(com.raytheon.uf.common.colormap.ColorMap)
|
||||||
*/
|
*/
|
||||||
|
@ -987,7 +998,7 @@ public class ColorEditDialog extends CaveSWTDialog implements
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.viz.ui.dialogs.colordialog.IColorEditCompCallback#
|
* @see com.raytheon.viz.ui.dialogs.colordialog.IColorEditCompCallback#
|
||||||
* getColorMapParameters()
|
* getColorMapParameters()
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -127,6 +127,8 @@ import com.vividsolutions.jts.geom.Polygon;
|
||||||
* but lock immediate cause, implemented in individual template.
|
* but lock immediate cause, implemented in individual template.
|
||||||
* Nov 02, 2012 DR 15455 Qinglu Lin Added warngenLayer.setWarningAction() in resetPressed()
|
* Nov 02, 2012 DR 15455 Qinglu Lin Added warngenLayer.setWarningAction() in resetPressed()
|
||||||
* and in updateListSelected().
|
* and in updateListSelected().
|
||||||
|
* Dec 20, 2012 DR 15537 Qinglu Lin Changed the assigned value to trackEditable from false
|
||||||
|
* to true in boxSelected().
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -1246,7 +1248,7 @@ public class WarngenDialog extends CaveSWTDialog implements
|
||||||
*/
|
*/
|
||||||
private void boxSelected() {
|
private void boxSelected() {
|
||||||
boxEditable = !polygonLocked;
|
boxEditable = !polygonLocked;
|
||||||
trackEditable = false;
|
trackEditable = true;
|
||||||
warngenLayer.getStormTrackState().editable = trackEditable;
|
warngenLayer.getStormTrackState().editable = trackEditable;
|
||||||
warngenLayer.setBoxEditable(boxEditable);
|
warngenLayer.setBoxEditable(boxEditable);
|
||||||
warngenLayer.issueRefresh();
|
warngenLayer.issueRefresh();
|
||||||
|
|
|
@ -131,7 +131,9 @@ import com.vividsolutions.jts.io.WKTReader;
|
||||||
* Nov 30, 2012 15571 Qinglu Lin For NEW, assigned simulatedTime to TMLtime; For COR, used stormLocs
|
* Nov 30, 2012 15571 Qinglu Lin For NEW, assigned simulatedTime to TMLtime; For COR, used stormLocs
|
||||||
* in oldWarn.
|
* in oldWarn.
|
||||||
* Dec 17, 2012 15571 Qinglu Lin For hydro products, resolved issue caused by calling wkt.read(loc)
|
* Dec 17, 2012 15571 Qinglu Lin For hydro products, resolved issue caused by calling wkt.read(loc)
|
||||||
* while loc is null.
|
* while loc is null.
|
||||||
|
* Jan 8, 2013 15664 Qinglu Lin Appended selectedAction to handler.handle()'s argument list.
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author njensen
|
* @author njensen
|
||||||
|
@ -790,7 +792,7 @@ public class TemplateRunner {
|
||||||
String text = script.toString();
|
String text = script.toString();
|
||||||
WarningTextHandler handler = WarningTextHandlerFactory.getHandler(
|
WarningTextHandler handler = WarningTextHandlerFactory.getHandler(
|
||||||
selectedAction, text, config.getAutoLockText());
|
selectedAction, text, config.getAutoLockText());
|
||||||
String handledText = handler.handle(text, areas, cancelareas);
|
String handledText = handler.handle(text, areas, cancelareas, selectedAction);
|
||||||
|
|
||||||
return handledText;
|
return handledText;
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,11 @@ import java.util.regex.Pattern;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||||
|
import com.raytheon.uf.common.dataplugin.warning.util.FileUtil;
|
||||||
|
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||||
|
import com.raytheon.uf.common.status.UFStatus;
|
||||||
|
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||||
import com.raytheon.viz.texteditor.util.VtecObject;
|
import com.raytheon.viz.texteditor.util.VtecObject;
|
||||||
import com.raytheon.viz.texteditor.util.VtecUtil;
|
import com.raytheon.viz.texteditor.util.VtecUtil;
|
||||||
import com.raytheon.viz.warngen.gis.AffectedAreas;
|
import com.raytheon.viz.warngen.gis.AffectedAreas;
|
||||||
|
@ -44,6 +49,10 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Sep 24, 2012 15332 jsanchez Initial creation
|
* Sep 24, 2012 15332 jsanchez Initial creation
|
||||||
* Oct 18, 2012 15332 jsanchez Updated the find method.
|
* Oct 18, 2012 15332 jsanchez Updated the find method.
|
||||||
|
* Jan 8, 2013 15664 Qinglu Lin Appended WarningAction to lock()'s parameter list;
|
||||||
|
* moved the following methods from InitialLockingBehavior to this class:
|
||||||
|
* bulletIndices(), header(), firstBullet(), secondBullet(), getImmediateCausesPtrn();
|
||||||
|
* updated body(), header(), and secondBullet();
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -81,6 +90,13 @@ abstract public class AbstractLockingBehavior implements ICommonPatterns {
|
||||||
+ "|(TORNADO WARNING)|(MARINE WEATHER STATEMENT)|(SHORT TERM FORECAST)"
|
+ "|(TORNADO WARNING)|(MARINE WEATHER STATEMENT)|(SHORT TERM FORECAST)"
|
||||||
+ "|(SPECIAL WEATHER STATEMENT)|(SPECIAL MARINE WARNING)";
|
+ "|(SPECIAL WEATHER STATEMENT)|(SPECIAL MARINE WARNING)";
|
||||||
|
|
||||||
|
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||||
|
.getHandler(AbstractLockingBehavior.class);
|
||||||
|
|
||||||
|
private static Pattern immediateCausePtrn = null;
|
||||||
|
|
||||||
|
protected WarningAction action = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Locks the particular strings in the texts based on common patterns and
|
* Locks the particular strings in the texts based on common patterns and
|
||||||
* the affected areas.
|
* the affected areas.
|
||||||
|
@ -91,8 +107,9 @@ abstract public class AbstractLockingBehavior implements ICommonPatterns {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String lock(String text, AffectedAreas[] affectedAreas,
|
public String lock(String text, AffectedAreas[] affectedAreas,
|
||||||
AffectedAreas[] canceledAreas) {
|
AffectedAreas[] canceledAreas, WarningAction action) {
|
||||||
this.text = text;
|
this.text = text;
|
||||||
|
this.action = action;
|
||||||
intialize(affectedAreas, canceledAreas);
|
intialize(affectedAreas, canceledAreas);
|
||||||
ugc();
|
ugc();
|
||||||
htec();
|
htec();
|
||||||
|
@ -110,10 +127,166 @@ abstract public class AbstractLockingBehavior implements ICommonPatterns {
|
||||||
return this.text;
|
return this.text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void body() {
|
||||||
|
header();
|
||||||
|
firstBullet();
|
||||||
|
secondBullet();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calls the sub classes implementation of the body method.
|
* Helper method to determine the index of each bullet.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
abstract protected void body();
|
private Integer[] bulletIndices() {
|
||||||
|
List<Integer> bulletIndices = new ArrayList<Integer>();
|
||||||
|
|
||||||
|
int index = text.indexOf("* ");
|
||||||
|
while (index >= 0) {
|
||||||
|
bulletIndices.add(index);
|
||||||
|
index = text.indexOf("* ", index + 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
return bulletIndices.toArray(new Integer[bulletIndices.size()]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locks the header before the first bullet.
|
||||||
|
*/
|
||||||
|
private void header() {
|
||||||
|
// LOCK_END should not be found at the beginning since the previous line
|
||||||
|
// should be blank.
|
||||||
|
String h = "^((THE NATIONAL WEATHER SERVICE IN .{1,} HAS (ISSUED A|EXTENDED THE))"
|
||||||
|
+ newline + ")$";
|
||||||
|
Pattern header = Pattern.compile(h, Pattern.MULTILINE);
|
||||||
|
find(header.matcher(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locks the affected area names in the first bullet, the immediate cause.
|
||||||
|
*
|
||||||
|
* @param start
|
||||||
|
* @param end
|
||||||
|
*/
|
||||||
|
private void firstBullet() {
|
||||||
|
Integer[] bulletIndices = bulletIndices();
|
||||||
|
|
||||||
|
// Short term forecasts don't follow normal bullets?
|
||||||
|
if (bulletIndices.length < 2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int start = bulletIndices[0];
|
||||||
|
int end = bulletIndices[1];
|
||||||
|
|
||||||
|
if (immediateCausePtrn == null) {
|
||||||
|
immediateCausePtrn = getImmediateCausesPtrn();
|
||||||
|
}
|
||||||
|
|
||||||
|
String firstBulletText = text.substring(start, end);
|
||||||
|
|
||||||
|
// According to the original WarningTextHandler, marine zone names
|
||||||
|
// should not be locked. For some reason, this differs from followups as
|
||||||
|
// stated in DR 15110. Need verification from NWS. This is a variance?
|
||||||
|
if (!isMarineProduct()) {
|
||||||
|
Matcher m = null;
|
||||||
|
for (String line : firstBulletText.split("\\n")) {
|
||||||
|
|
||||||
|
if (immediateCausePtrn != null) {
|
||||||
|
// immediate cause
|
||||||
|
m = immediateCausePtrn.matcher(line);
|
||||||
|
if (m.find()) {
|
||||||
|
String i = line.replace(line, LOCK_START + line
|
||||||
|
+ LOCK_END);
|
||||||
|
firstBulletText = firstBulletText.replace(line, i);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (AffectedAreas affectedArea : affectedAreas) {
|
||||||
|
String name = affectedArea.getName();
|
||||||
|
String areaNotation = affectedArea.getAreaNotation();
|
||||||
|
String parentRegion = affectedArea.getParentRegion();
|
||||||
|
if (name != null && name.trim().length() != 0
|
||||||
|
&& line.contains(name.toUpperCase())) {
|
||||||
|
name = name.toUpperCase();
|
||||||
|
String t = line;
|
||||||
|
if (!hasBeenLocked(line, name)) {
|
||||||
|
t = t.replace(name, LOCK_START + name + LOCK_END);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (areaNotation != null
|
||||||
|
&& areaNotation.trim().length() != 0) {
|
||||||
|
areaNotation = areaNotation.toUpperCase();
|
||||||
|
if (!hasBeenLocked(line, areaNotation.toUpperCase())) {
|
||||||
|
t = t.replace(areaNotation, LOCK_START
|
||||||
|
+ areaNotation + LOCK_END);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (parentRegion != null
|
||||||
|
&& parentRegion.trim().length() != 0) {
|
||||||
|
parentRegion = parentRegion.toUpperCase();
|
||||||
|
if (!hasBeenLocked(line, parentRegion)) {
|
||||||
|
t = t.replace(parentRegion, LOCK_START
|
||||||
|
+ parentRegion + LOCK_END);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (validate(t)) {
|
||||||
|
firstBulletText = firstBulletText.replace(line, t);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
firstBulletText = firstBulletText.replaceAll(firstBullet, LOCK_START
|
||||||
|
+ "$0" + LOCK_END);
|
||||||
|
|
||||||
|
this.text = text.replace(text.substring(start, end), firstBulletText);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Locks the second bullet.
|
||||||
|
*/
|
||||||
|
private void secondBullet() {
|
||||||
|
// LOCK_END should not be found at the beginning since the previous line
|
||||||
|
// should be blank.
|
||||||
|
String secondBullet =
|
||||||
|
"\\* UNTIL \\d{3,4} (AM|PM) \\w{3,4}( \\w{6,9}){0,1}(\\/\\d{3,4} (AM|PM) \\w{3,4}( \\w{6,9}){0,1}\\/){0,1}"
|
||||||
|
+ newline;
|
||||||
|
Pattern secondBulletPtrn = Pattern.compile(secondBullet,
|
||||||
|
Pattern.MULTILINE);
|
||||||
|
find(secondBulletPtrn.matcher(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the immediateCausePtrn with the info in immediateCause.text.
|
||||||
|
*/
|
||||||
|
private static Pattern getImmediateCausesPtrn() {
|
||||||
|
String filename = "immediateCause.txt";
|
||||||
|
StringBuffer pattern = new StringBuffer();
|
||||||
|
|
||||||
|
try {
|
||||||
|
String immediateCause = FileUtil.open(filename, "base");
|
||||||
|
pattern.append("(.*)(A DAM BREAK");
|
||||||
|
for (String ic : immediateCause.split("\n")) {
|
||||||
|
String[] parts = ic.split("\\\\");
|
||||||
|
pattern.append("| " + parts[1].trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
pattern.append(")(.*)");
|
||||||
|
return Pattern.compile(pattern.toString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
statusHandler
|
||||||
|
.handle(Priority.ERROR,
|
||||||
|
"Unable to process immediateCause.txt in the base directory",
|
||||||
|
e);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds the affect areas into the appropriate lists.
|
* Adds the affect areas into the appropriate lists.
|
||||||
|
|
|
@ -25,6 +25,7 @@ import java.util.Set;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||||
import com.raytheon.viz.warngen.gis.AffectedAreas;
|
import com.raytheon.viz.warngen.gis.AffectedAreas;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -37,6 +38,7 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Sep 24, 2012 15322 jsanchez Initial creation
|
* Sep 24, 2012 15322 jsanchez Initial creation
|
||||||
|
* Jan 8, 2013 15664 Qinglu Lin Updated body().
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -49,7 +51,10 @@ public class FollowUpLockingBehavior extends AbstractLockingBehavior {
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void body() {
|
public void body() {
|
||||||
headlines();
|
if (action != WarningAction.COR)
|
||||||
|
headlines();
|
||||||
|
else
|
||||||
|
super.body();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,17 +19,6 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.viz.warngen.text;
|
package com.raytheon.viz.warngen.text;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
|
|
||||||
import com.raytheon.uf.common.dataplugin.warning.util.FileUtil;
|
|
||||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
|
||||||
import com.raytheon.uf.common.status.UFStatus;
|
|
||||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
|
||||||
import com.raytheon.viz.warngen.gis.AffectedAreas;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Locks text patterns on initial or new warning.
|
* Locks text patterns on initial or new warning.
|
||||||
*
|
*
|
||||||
|
@ -40,6 +29,9 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Sep 24, 2012 15322 jsanchez Initial creation
|
* Sep 24, 2012 15322 jsanchez Initial creation
|
||||||
|
* Jan 8, 2013 15664 Qinglu Lin Removed the following methods (and moved them to AbstractLockingBehavior):
|
||||||
|
* body(), bulletIndices(), header(), firstBullet(), secondBullet(), getImmediateCausesPtrn();
|
||||||
|
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -47,173 +39,4 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
public class InitialLockingBehavior extends AbstractLockingBehavior {
|
public class InitialLockingBehavior extends AbstractLockingBehavior {
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
|
||||||
.getHandler(InitialLockingBehavior.class);
|
|
||||||
|
|
||||||
private static Pattern immediateCausePtrn = null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Locks the appropriate text of the body of an initial warning.
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public void body() {
|
|
||||||
header();
|
|
||||||
firstBullet();
|
|
||||||
secondBullet();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper method to determine the index of each bullet.
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
private Integer[] bulletIndices() {
|
|
||||||
List<Integer> bulletIndices = new ArrayList<Integer>();
|
|
||||||
|
|
||||||
int index = text.indexOf("* ");
|
|
||||||
while (index >= 0) {
|
|
||||||
bulletIndices.add(index);
|
|
||||||
index = text.indexOf("* ", index + 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
return bulletIndices.toArray(new Integer[bulletIndices.size()]);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Locks the header before the first bullet.
|
|
||||||
*/
|
|
||||||
private void header() {
|
|
||||||
// LOCK_END should not be found at the beginning since the previous line
|
|
||||||
// should be blank.
|
|
||||||
String h = "^((THE NATIONAL WEATHER SERVICE IN .{1,} HAS ISSUED A)"
|
|
||||||
+ newline + ")$";
|
|
||||||
Pattern header = Pattern.compile(h, Pattern.MULTILINE);
|
|
||||||
find(header.matcher(text));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Locks the affected area names in the first bullet, the immediate cause.
|
|
||||||
*
|
|
||||||
* @param start
|
|
||||||
* @param end
|
|
||||||
*/
|
|
||||||
private void firstBullet() {
|
|
||||||
Integer[] bulletIndices = bulletIndices();
|
|
||||||
|
|
||||||
// Short term forecasts don't follow normal bullets?
|
|
||||||
if (bulletIndices.length < 2) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
int start = bulletIndices[0];
|
|
||||||
int end = bulletIndices[1];
|
|
||||||
|
|
||||||
if (immediateCausePtrn == null) {
|
|
||||||
immediateCausePtrn = getImmediateCausesPtrn();
|
|
||||||
}
|
|
||||||
|
|
||||||
String firstBulletText = text.substring(start, end);
|
|
||||||
|
|
||||||
// According to the original WarningTextHandler, marine zone names
|
|
||||||
// should not be locked. For some reason, this differs from followups as
|
|
||||||
// stated in DR 15110. Need verification from NWS. This is a variance?
|
|
||||||
if (!isMarineProduct()) {
|
|
||||||
Matcher m = null;
|
|
||||||
for (String line : firstBulletText.split("\\n")) {
|
|
||||||
|
|
||||||
if (immediateCausePtrn != null) {
|
|
||||||
// immediate cause
|
|
||||||
m = immediateCausePtrn.matcher(line);
|
|
||||||
if (m.find()) {
|
|
||||||
String i = line.replace(line, LOCK_START + line
|
|
||||||
+ LOCK_END);
|
|
||||||
firstBulletText = firstBulletText.replace(line, i);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (AffectedAreas affectedArea : affectedAreas) {
|
|
||||||
String name = affectedArea.getName();
|
|
||||||
String areaNotation = affectedArea.getAreaNotation();
|
|
||||||
String parentRegion = affectedArea.getParentRegion();
|
|
||||||
if (name != null && name.trim().length() != 0
|
|
||||||
&& line.contains(name.toUpperCase())) {
|
|
||||||
name = name.toUpperCase();
|
|
||||||
String t = line;
|
|
||||||
if (!hasBeenLocked(line, name)) {
|
|
||||||
t = t.replace(name, LOCK_START + name + LOCK_END);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (areaNotation != null
|
|
||||||
&& areaNotation.trim().length() != 0) {
|
|
||||||
areaNotation = areaNotation.toUpperCase();
|
|
||||||
if (!hasBeenLocked(line, areaNotation.toUpperCase())) {
|
|
||||||
t = t.replace(areaNotation, LOCK_START
|
|
||||||
+ areaNotation + LOCK_END);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parentRegion != null
|
|
||||||
&& parentRegion.trim().length() != 0) {
|
|
||||||
parentRegion = parentRegion.toUpperCase();
|
|
||||||
if (!hasBeenLocked(line, parentRegion)) {
|
|
||||||
t = t.replace(parentRegion, LOCK_START
|
|
||||||
+ parentRegion + LOCK_END);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (validate(t)) {
|
|
||||||
firstBulletText = firstBulletText.replace(line, t);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
firstBulletText = firstBulletText.replaceAll(firstBullet, LOCK_START
|
|
||||||
+ "$0" + LOCK_END);
|
|
||||||
|
|
||||||
this.text = text.replace(text.substring(start, end), firstBulletText);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Locks the second bullet.
|
|
||||||
*/
|
|
||||||
private void secondBullet() {
|
|
||||||
// LOCK_END should not be found at the beginning since the previous line
|
|
||||||
// should be blank.
|
|
||||||
String secondBullet = "^(\\* UNTIL \\d{3,4} (AM|PM) \\w{3,4}" + newline
|
|
||||||
+ ")";
|
|
||||||
Pattern secondBulletPtrn = Pattern.compile(secondBullet,
|
|
||||||
Pattern.MULTILINE);
|
|
||||||
find(secondBulletPtrn.matcher(text));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the immediateCausePtrn with the info in immediateCause.text.
|
|
||||||
*/
|
|
||||||
private static Pattern getImmediateCausesPtrn() {
|
|
||||||
String filename = "immediateCause.txt";
|
|
||||||
StringBuffer pattern = new StringBuffer();
|
|
||||||
|
|
||||||
try {
|
|
||||||
String immediateCause = FileUtil.open(filename, "base");
|
|
||||||
pattern.append("(.*)(A DAM BREAK");
|
|
||||||
for (String ic : immediateCause.split("\n")) {
|
|
||||||
String[] parts = ic.split("\\\\");
|
|
||||||
pattern.append("| " + parts[1].trim());
|
|
||||||
}
|
|
||||||
|
|
||||||
pattern.append(")(.*)");
|
|
||||||
return Pattern.compile(pattern.toString());
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler
|
|
||||||
.handle(Priority.ERROR,
|
|
||||||
"Unable to process immediateCause.txt in the base directory",
|
|
||||||
e);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ package com.raytheon.viz.warngen.text;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||||
import com.raytheon.viz.warngen.gis.AffectedAreas;
|
import com.raytheon.viz.warngen.gis.AffectedAreas;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -34,6 +35,7 @@ import com.raytheon.viz.warngen.gis.AffectedAreas;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Sep 24, 2012 15322 jsanchez Initial creation
|
* Sep 24, 2012 15322 jsanchez Initial creation
|
||||||
|
* Jan 8, 2013 15664 Qinglu Lin Appended WarningAction to handle()'s parameter list, etc.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -47,7 +49,7 @@ public class WarningTextHandler {
|
||||||
private IModifyTextBehavior modifyTextBehavior;
|
private IModifyTextBehavior modifyTextBehavior;
|
||||||
|
|
||||||
public String handle(String text, AffectedAreas[] affectedAreas,
|
public String handle(String text, AffectedAreas[] affectedAreas,
|
||||||
AffectedAreas[] canceledAreas) {
|
AffectedAreas[] canceledAreas, WarningAction action) {
|
||||||
long t0 = System.currentTimeMillis();
|
long t0 = System.currentTimeMillis();
|
||||||
|
|
||||||
text = text.toUpperCase();
|
text = text.toUpperCase();
|
||||||
|
@ -58,7 +60,7 @@ public class WarningTextHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lockingBehavior != null) {
|
if (lockingBehavior != null) {
|
||||||
text = lockingBehavior.lock(text, affectedAreas, canceledAreas);
|
text = lockingBehavior.lock(text, affectedAreas, canceledAreas, action);
|
||||||
System.out.println("Locked text...");
|
System.out.println("Locked text...");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,8 @@ import com.raytheon.viz.warnings.DateUtil;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* May 6, 2008 bwoodle Initial creation
|
* May 6, 2008 bwoodle Initial creation
|
||||||
|
* Dec 28 2012 DR15599 mgamazaychikov Updated method getListCounties to fix the problem
|
||||||
|
* with generated list of counties.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -80,9 +82,6 @@ public class FipsUtil {
|
||||||
/** Catch the Date portion of the UGC Header */
|
/** Catch the Date portion of the UGC Header */
|
||||||
private static final String DATEPATTERN = "\\-([0-9]{6}\\-)";
|
private static final String DATEPATTERN = "\\-([0-9]{6}\\-)";
|
||||||
|
|
||||||
/** Parses a single county from a UGC Header, can be repeated */
|
|
||||||
private static final String SINGLECOUNTY = "(?:([A-Z]{3}[0-9]{3})\\-)|(?:([0-9]{3})\\-)";
|
|
||||||
|
|
||||||
/** Another RE to Catch the Date portion of the UGC Header */
|
/** Another RE to Catch the Date portion of the UGC Header */
|
||||||
private static final String DATESTR = "[0-9]{6}\\-";
|
private static final String DATESTR = "[0-9]{6}\\-";
|
||||||
|
|
||||||
|
@ -324,8 +323,11 @@ public class FipsUtil {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DR15599 - use simplifyHeader to get the correct rval
|
||||||
|
*/
|
||||||
if (difference.size() > 0) {
|
if (difference.size() > 0) {
|
||||||
rval = getUgc(difference);
|
rval = simplifyHeader(getUgc(difference));
|
||||||
}
|
}
|
||||||
rval = rval + dateStr;
|
rval = rval + dateStr;
|
||||||
return rval;
|
return rval;
|
||||||
|
@ -353,15 +355,53 @@ public class FipsUtil {
|
||||||
matchStr += "-";
|
matchStr += "-";
|
||||||
}
|
}
|
||||||
|
|
||||||
String currentState = "";
|
/*
|
||||||
pattern = Pattern.compile(SINGLECOUNTY);
|
* DR15599 - completely re-did how rval is calculated.
|
||||||
matcher = pattern.matcher(matchStr);
|
*/
|
||||||
while (matcher.find()) {
|
String[] lines = matchStr.split("[\n]");
|
||||||
if (matcher.group(1) != null && matcher.group(1).length() == 6) {
|
matchStr = "";
|
||||||
currentState = matcher.group(1).substring(0, 3);
|
for (String line : lines) {
|
||||||
rval.add(matcher.group(1));
|
matchStr += line;
|
||||||
} else {
|
}
|
||||||
rval.add(currentState + matcher.group(2));
|
|
||||||
|
String[] ranges = matchStr.split("[-]");
|
||||||
|
List<String> curList = null;
|
||||||
|
String curState = null;
|
||||||
|
for (String range : ranges) {
|
||||||
|
if (Character.isLetter(range.charAt(0))) {
|
||||||
|
/*
|
||||||
|
* range starts with a character - get the new
|
||||||
|
* state or marine zone name
|
||||||
|
*/
|
||||||
|
if (curState != null) {
|
||||||
|
for (String zone: curList) {
|
||||||
|
rval.add(curState+zone);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
curState = range.substring(0, 3);
|
||||||
|
curList = new ArrayList<String>();
|
||||||
|
range = range.substring(3);
|
||||||
|
}
|
||||||
|
if (curList != null) {
|
||||||
|
if (range.contains(">")) {
|
||||||
|
/*
|
||||||
|
* get the full range of zones/counties
|
||||||
|
*/
|
||||||
|
String left = range.substring(0, 3);
|
||||||
|
String right = range.substring(4);
|
||||||
|
int start = Integer.valueOf(left);
|
||||||
|
int end = Integer.valueOf(right);
|
||||||
|
for (int val = start; val <= end; ++val) {
|
||||||
|
curList.add(FIPS_FORMAT.format(val));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
curList.add(range);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (curState != null) {
|
||||||
|
for (String zone: curList) {
|
||||||
|
rval.add(curState+zone);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rval;
|
return rval;
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
##### Qinglu Lin 07-31-2012 DR 15217. Use roundAndPad for movement direction in DEG.
|
##### Qinglu Lin 07-31-2012 DR 15217. Use roundAndPad for movement direction in DEG.
|
||||||
##### Qinglu Lin 08-13-2012 DR 14493. Use corToNewMarker and corEventtime.
|
##### Qinglu Lin 08-13-2012 DR 14493. Use corToNewMarker and corEventtime.
|
||||||
##### D. Friedman 11-09-2012 DR 15430. Rework included watches.
|
##### D. Friedman 11-09-2012 DR 15430. Rework included watches.
|
||||||
|
##### QINGLU LIN 12-27-2012 DR 15594. Added $lock to headlineLocList.
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
Mile Marker Test Code
|
Mile Marker Test Code
|
||||||
macro "mmarkers" use (called out of VM_global_library.vm):
|
macro "mmarkers" use (called out of VM_global_library.vm):
|
||||||
|
@ -419,7 +420,7 @@ ${closestPoint.roundedDistance} ${units} #direction(${closestPoint.oppositeRound
|
||||||
## useCentralxxx = boolean to use the word CENTRAL in the County or State phrase
|
## useCentralxxx = boolean to use the word CENTRAL in the County or State phrase
|
||||||
## useExtremexxx = boolean to use the word EXTREME in the county of State phrase
|
## useExtremexxx = boolean to use the word EXTREME in the county of State phrase
|
||||||
##################################################################
|
##################################################################
|
||||||
#macro(headlineLocList $areas $useCentralCounty $useExtremeCounty $useCentralState $useExtremeState)
|
#macro(headlineLocList $areas $useCentralCounty $useExtremeCounty $useCentralState $useExtremeState $lock)
|
||||||
#set($countyCount = 0)
|
#set($countyCount = 0)
|
||||||
#set($countyCounter = 0)
|
#set($countyCounter = 0)
|
||||||
#set($itemCount = 0)
|
#set($itemCount = 0)
|
||||||
|
@ -490,30 +491,58 @@ ${closestPoint.roundedDistance} ${units} #direction(${closestPoint.oppositeRound
|
||||||
#if(${prevPartOfCounty.size()} > 0)
|
#if(${prevPartOfCounty.size()} > 0)
|
||||||
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
||||||
#end
|
#end
|
||||||
|
#if(${lock} == true)
|
||||||
<L>${prevCounty}</L>##
|
<L>${prevCounty}</L>##
|
||||||
|
#else
|
||||||
|
${prevCounty}##
|
||||||
|
#end
|
||||||
#if(${prevCountyType} != ${area.areaNotation} || ${useStates} == true)
|
#if(${prevCountyType} != ${area.areaNotation} || ${useStates} == true)
|
||||||
|
#if(${lock} == true)
|
||||||
<L> ${prevCountyType}</L>##
|
<L> ${prevCountyType}</L>##
|
||||||
|
#else
|
||||||
|
${prevCountyType}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#if(${useStates} == true)
|
#if(${useStates} == true)
|
||||||
|
#if(${lock} == true)
|
||||||
IN <L>#areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}</L>##
|
IN <L>#areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}</L>##
|
||||||
|
#else
|
||||||
|
IN #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#else
|
#else
|
||||||
AND ##
|
AND ##
|
||||||
#if(${prevPartOfCounty.size()} > 0)
|
#if(${prevPartOfCounty.size()} > 0)
|
||||||
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
||||||
#end
|
#end
|
||||||
|
#if(${lock} == true)
|
||||||
<L>${prevCounty}</L>##
|
<L>${prevCounty}</L>##
|
||||||
|
#else
|
||||||
|
${prevCounty}##
|
||||||
|
#end
|
||||||
#if(${prevCountyType} != ${area.areaNotation} || ${useStates} == true)
|
#if(${prevCountyType} != ${area.areaNotation} || ${useStates} == true)
|
||||||
#if(${countyCount} > 1)
|
#if(${countyCount} > 1)
|
||||||
#if(${prevCountiesType})
|
#if(${prevCountiesType})
|
||||||
|
#if(${lock} == true)
|
||||||
<L> ${prevCountiesType}</L>##
|
<L> ${prevCountiesType}</L>##
|
||||||
|
#else
|
||||||
|
${prevCountiesType}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#elseif(${prevCountyType})
|
#elseif(${prevCountyType})
|
||||||
|
#if(${lock} == true)
|
||||||
<L> ${prevCountyType}</L>##
|
<L> ${prevCountyType}</L>##
|
||||||
|
#else
|
||||||
|
${prevCountyType}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#if(${useStates} == true)
|
#if(${useStates} == true)
|
||||||
|
#if(${lock} == true)
|
||||||
IN <L>#areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}</L>##
|
IN <L>#areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}</L>##
|
||||||
|
#else
|
||||||
|
IN #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#set($countyCount = 1)
|
#set($countyCount = 1)
|
||||||
|
@ -526,34 +555,70 @@ ${closestPoint.roundedDistance} ${units} #direction(${closestPoint.oppositeRound
|
||||||
#if(${prevPartOfCounty.size()} > 0)
|
#if(${prevPartOfCounty.size()} > 0)
|
||||||
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
||||||
#end
|
#end
|
||||||
|
#if(${lock} == true)
|
||||||
<L>${prevCounty}</L>##
|
<L>${prevCounty}</L>##
|
||||||
|
#else
|
||||||
|
${prevCounty}##
|
||||||
|
#end
|
||||||
#if(${prevCountyType} != ${area.areaNotation} || (${prevCountyType} != ${area.areaNotation} || ((${prevState} != ${area.parentRegion} || ${prevPartOfState} != ${partOfState}) && ${useStates} == true)))
|
#if(${prevCountyType} != ${area.areaNotation} || (${prevCountyType} != ${area.areaNotation} || ((${prevState} != ${area.parentRegion} || ${prevPartOfState} != ${partOfState}) && ${useStates} == true)))
|
||||||
#if(${countyCount} > 1)
|
#if(${countyCount} > 1)
|
||||||
#if(${prevCountiesType})
|
#if(${prevCountiesType})
|
||||||
|
#if(${lock} == true)
|
||||||
<L> ${prevCountiesType}</L>##
|
<L> ${prevCountiesType}</L>##
|
||||||
|
#else
|
||||||
|
${prevCountiesType}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#elseif(${prevCountyType})
|
#elseif(${prevCountyType})
|
||||||
|
#if(${lock} == true)
|
||||||
<L> ${prevCountyType}</L>##
|
<L> ${prevCountyType}</L>##
|
||||||
|
#else
|
||||||
|
${prevCountyType}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#if((${prevCountyType} != ${area.areaNotation} || ((${prevState} != ${area.parentRegion} || ${prevPartOfState} != ${partOfState}) && ${useStates} == true)))
|
#if((${prevCountyType} != ${area.areaNotation} || ((${prevState} != ${area.parentRegion} || ${prevPartOfState} != ${partOfState}) && ${useStates} == true)))
|
||||||
|
#if(${lock} == true)
|
||||||
IN <L>#areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}</L>##
|
IN <L>#areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}</L>##
|
||||||
|
#else
|
||||||
|
IN #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
AND ##
|
AND ##
|
||||||
#if(${area.partOfArea})
|
#if(${area.partOfArea})
|
||||||
#areaFormat(${area.partOfArea} ${useCentralCounty} ${useExtremeCounty}) ##
|
#areaFormat(${area.partOfArea} ${useCentralCounty} ${useExtremeCounty}) ##
|
||||||
#end
|
#end
|
||||||
|
#if(${lock} == true)
|
||||||
<L>${area.name}##
|
<L>${area.name}##
|
||||||
|
#else
|
||||||
|
${area.name}##
|
||||||
|
#end
|
||||||
#if(${countyCount} >= 1)
|
#if(${countyCount} >= 1)
|
||||||
#if(${area.areasNotation})
|
#if(${area.areasNotation})
|
||||||
|
#if(${lock} == true)
|
||||||
<L> ${area.areasNotation}</L>##
|
<L> ${area.areasNotation}</L>##
|
||||||
|
#else
|
||||||
|
${area.areasNotation}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#elseif(${area.areaNotation})
|
#elseif(${area.areaNotation})
|
||||||
|
#if(${lock} == true)
|
||||||
<L> ${area.areaNotation}</L>##
|
<L> ${area.areaNotation}</L>##
|
||||||
|
#else
|
||||||
|
${area.areaNotation}##
|
||||||
#end
|
#end
|
||||||
|
#end
|
||||||
|
#if(${lock} == true)
|
||||||
</L>##
|
</L>##
|
||||||
|
#else
|
||||||
|
##
|
||||||
|
#end
|
||||||
#if(${useStates} == true)
|
#if(${useStates} == true)
|
||||||
|
#if(${lock} == true)
|
||||||
IN <L>#areaFormat(${partOfState} ${useCentralState} ${useExtremeState}) ${area.parentRegion}</L>##
|
IN <L>#areaFormat(${partOfState} ${useCentralState} ${useExtremeState}) ${area.parentRegion}</L>##
|
||||||
|
#else
|
||||||
|
IN #areaFormat(${partOfState} ${useCentralState} ${useExtremeState}) ${area.parentRegion}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#else
|
#else
|
||||||
#if(${countyCounter} > 1)
|
#if(${countyCounter} > 1)
|
||||||
|
@ -565,9 +630,17 @@ ${closestPoint.roundedDistance} ${units} #direction(${closestPoint.oppositeRound
|
||||||
#if(${area.partOfArea})
|
#if(${area.partOfArea})
|
||||||
#areaFormat(${area.partOfArea} ${useCentralCounty} ${useExtremeCounty}) ##
|
#areaFormat(${area.partOfArea} ${useCentralCounty} ${useExtremeCounty}) ##
|
||||||
#end
|
#end
|
||||||
|
#if(${lock} == true)
|
||||||
<L>${area.name} ${area.areaNotation}</L>##
|
<L>${area.name} ${area.areaNotation}</L>##
|
||||||
|
#else
|
||||||
|
${area.name} ${area.areaNotation}##
|
||||||
|
#end
|
||||||
#if(${useStates} == true)
|
#if(${useStates} == true)
|
||||||
|
#if(${lock} == true)
|
||||||
IN <L>#areaFormat(${partOfState} ${useCentralState} ${useExtremeState}) ${area.parentRegion}</L>##
|
IN <L>#areaFormat(${partOfState} ${useCentralState} ${useExtremeState}) ${area.parentRegion}</L>##
|
||||||
|
#else
|
||||||
|
IN #areaFormat(${partOfState} ${useCentralState} ${useExtremeState}) ${area.parentRegion}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#set($countyCount = 0)
|
#set($countyCount = 0)
|
||||||
|
@ -581,7 +654,11 @@ ${closestPoint.roundedDistance} ${units} #direction(${closestPoint.oppositeRound
|
||||||
#if(${prevPartOfCounty.size()} > 0)
|
#if(${prevPartOfCounty.size()} > 0)
|
||||||
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
||||||
#end
|
#end
|
||||||
|
#if(${lock} == true)
|
||||||
<L>${prevCounty}</L>##
|
<L>${prevCounty}</L>##
|
||||||
|
#else
|
||||||
|
${prevCounty}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#set($countyCount= $countyCount + 1)
|
#set($countyCount= $countyCount + 1)
|
||||||
#end
|
#end
|
||||||
|
@ -613,26 +690,50 @@ ${closestPoint.roundedDistance} ${units} #direction(${closestPoint.oppositeRound
|
||||||
#if(${prevPartOfCounty})
|
#if(${prevPartOfCounty})
|
||||||
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
#areaFormat(${prevPartOfCounty} ${useCentralCounty} ${useExtremeCounty}) ##
|
||||||
#end
|
#end
|
||||||
|
#if(${lock} == true)
|
||||||
<L>${prevCounty} ${prevCountyType}</L>##
|
<L>${prevCounty} ${prevCountyType}</L>##
|
||||||
|
#else
|
||||||
|
${prevCounty} ${prevCountyType}##
|
||||||
|
#end
|
||||||
#if(${useStates} == true)
|
#if(${useStates} == true)
|
||||||
|
#if(${lock} == true)
|
||||||
IN <L>#areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}</L>##
|
IN <L>#areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}</L>##
|
||||||
|
#else
|
||||||
|
IN #areaFormat(${prevPartOfState} ${useCentralState} ${useExtremeState}) ${prevState}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#if (${indepCityCount} == ${numIndepCity})
|
#if (${indepCityCount} == ${numIndepCity})
|
||||||
#if (${indepCityCount} == 1)
|
#if (${indepCityCount} == 1)
|
||||||
### COUNTIES + 1 INDEPENDENT CITY
|
### COUNTIES + 1 INDEPENDENT CITY
|
||||||
#if (${numCounties} > ${numIndepCity})
|
#if (${numCounties} > ${numIndepCity})
|
||||||
|
#if(${lock} == true)
|
||||||
AND THE <L>${area.name}</L>##
|
AND THE <L>${area.name}</L>##
|
||||||
|
#else
|
||||||
|
AND THE ${area.name}##
|
||||||
|
#end
|
||||||
### NO COUNTIES AND ONE INDEPENDENT CITY
|
### NO COUNTIES AND ONE INDEPENDENT CITY
|
||||||
#else
|
#else
|
||||||
|
#if(${lock} == true)
|
||||||
THE <L>${area.name}</L>##
|
THE <L>${area.name}</L>##
|
||||||
|
#else
|
||||||
|
THE ${area.name}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#else
|
#else
|
||||||
## MULTIPLE INDEPENDENT CITIES...LAST ITEM IN THE LIST
|
## MULTIPLE INDEPENDENT CITIES...LAST ITEM IN THE LIST
|
||||||
|
#if(${lock} == true)
|
||||||
AND THE <L>${area.name}</L>##
|
AND THE <L>${area.name}</L>##
|
||||||
|
#else
|
||||||
|
AND THE ${area.name}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#else
|
#else
|
||||||
|
#if(${lock} == true)
|
||||||
...THE <L>${area.name}</L>##
|
...THE <L>${area.name}</L>##
|
||||||
|
#else
|
||||||
|
...THE ${area.name}##
|
||||||
|
#end
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
#end
|
#end
|
||||||
|
@ -750,7 +851,7 @@ ${location.name}##
|
||||||
${otherLead} WILL REMAIN OVER MAINLY OPEN WATERS.
|
${otherLead} WILL REMAIN OVER MAINLY OPEN WATERS.
|
||||||
#else
|
#else
|
||||||
${otherLead} WILL REMAIN OVER MAINLY RURAL AREAS OF ##
|
${otherLead} WILL REMAIN OVER MAINLY RURAL AREAS OF ##
|
||||||
#headlineLocList(${areas} true true true false).##
|
#headlineLocList(${areas} true true true false false).##
|
||||||
###NOW SEARCH FOR OTHER POINTS (PRESUMABLY 3s) AND LIST THEM HERE
|
###NOW SEARCH FOR OTHER POINTS (PRESUMABLY 3s) AND LIST THEM HERE
|
||||||
### NEED TO CODE THIS ONCE SECTION IS ADDED
|
### NEED TO CODE THIS ONCE SECTION IS ADDED
|
||||||
#set($numOtherPoints = ${list.size($thirdTier)})
|
#set($numOtherPoints = ${list.size($thirdTier)})
|
||||||
|
@ -879,7 +980,7 @@ AND ${strOutput}
|
||||||
${ruralPhrase} WILL REMAIN OVER MAINLY OPEN WATERS.
|
${ruralPhrase} WILL REMAIN OVER MAINLY OPEN WATERS.
|
||||||
#else
|
#else
|
||||||
## NO MAJOR POINTS FOUND. LIST RURAL AREAS
|
## NO MAJOR POINTS FOUND. LIST RURAL AREAS
|
||||||
${ruralPhrase} WILL REMAIN OVER MAINLY RURAL AREAS OF #headlineLocList(${areas} true true true false).##
|
${ruralPhrase} WILL REMAIN OVER MAINLY RURAL AREAS OF #headlineLocList(${areas} true true true false false).##
|
||||||
#set($numMinorPoints = ${list.size($otherCityList)})
|
#set($numMinorPoints = ${list.size($otherCityList)})
|
||||||
#if(${numMinorPoints} == 1)
|
#if(${numMinorPoints} == 1)
|
||||||
..INCLUDING THE COMMUNITY OF ##
|
..INCLUDING THE COMMUNITY OF ##
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
## Mike and Phil 1-25-2012 at CRH TIM
|
## Mike and Phil 1-25-2012 at CRH TIM
|
||||||
## Evan Bookbinder 2-24-2012
|
## Evan Bookbinder 2-24-2012
|
||||||
## Phil Kurimski 2-28-2012 for OB 12.2.1-3
|
## Phil Kurimski 2-28-2012 for OB 12.2.1-3
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
##
|
##
|
||||||
#if(${action} == "EXT")
|
#if(${action} == "EXT")
|
||||||
#set($starttime = "000000T0000Z")
|
#set($starttime = "000000T0000Z")
|
||||||
|
@ -182,7 +183,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${areas} true true true false)##
|
#headlineLocList(${areas} true true true false true)##
|
||||||
...
|
...
|
||||||
|
|
||||||
#if(${list.contains($bullets, "recedingWater")})
|
#if(${list.contains($bullets, "recedingWater")})
|
||||||
|
@ -207,7 +208,7 @@ EXPIRED AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone
|
||||||
#else
|
#else
|
||||||
WILL EXPIRE AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
WILL EXPIRE AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${areas} true true true false)##
|
#headlineLocList(${areas} true true true false true)##
|
||||||
...
|
...
|
||||||
|
|
||||||
#if(${list.contains($bullets, "recedingWater")})
|
#if(${list.contains($bullets, "recedingWater")})
|
||||||
|
@ -228,7 +229,7 @@ THE HEAVY RAIN HAS ENDED...AND FLOODING IS NO LONGER EXPECTED TO POSE A THREAT.
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE ${advType} ${hycType}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...THE ${advType} ${hycType}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -351,7 +352,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)##
|
#headlineLocList(${cancelareas} true true true false true)##
|
||||||
...
|
...
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -383,7 +384,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE ${advType} REMAINS IN EFFECT UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
...THE ${advType} REMAINS IN EFFECT UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -503,7 +504,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${areas} true true true false)##
|
#headlineLocList(${areas} true true true false true)##
|
||||||
...
|
...
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -535,7 +536,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE ${advType} REMAINS IN EFFECT UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
...THE ${advType} REMAINS IN EFFECT UNTIL ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
## Created by Mike Dangelo 09-19-2011 at Alaska TIM for zones
|
## Created by Mike Dangelo 09-19-2011 at Alaska TIM for zones
|
||||||
## Edited by Mike Dangelo 01-26-2012 at CRH TIM
|
## Edited by Mike Dangelo 01-26-2012 at CRH TIM
|
||||||
## Edited by Phil Kurimski 2-29-2012
|
## Edited by Phil Kurimski 2-29-2012
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
##
|
##
|
||||||
#if(${action} == "EXT")
|
#if(${action} == "EXT")
|
||||||
#set($starttime = "000000T0000Z")
|
#set($starttime = "000000T0000Z")
|
||||||
|
@ -451,7 +452,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -642,7 +643,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
...THE ${advType} ${hycType}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
## EDITED BY EVAN BOOKBINDER 2-24-2012 ##
|
## EDITED BY EVAN BOOKBINDER 2-24-2012 ##
|
||||||
## EDITED BY PHIL KURIMSKI 2-28-2012 ##
|
## EDITED BY PHIL KURIMSKI 2-28-2012 ##
|
||||||
## EDITED BY MIKE REGA 5-02-2012 DR 14885 MND blank line ##
|
## EDITED BY MIKE REGA 5-02-2012 DR 14885 MND blank line ##
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
#################################### SET SOME VARs ###################################
|
#################################### SET SOME VARs ###################################
|
||||||
#set ($hycType = "")
|
#set ($hycType = "")
|
||||||
#set ($floodReason = "")
|
#set ($floodReason = "")
|
||||||
|
@ -112,7 +113,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#if (${hycType} != "")
|
#if (${hycType} != "")
|
||||||
<L>${hycType}</L> IN ##
|
<L>${hycType}</L> IN ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
||||||
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
||||||
|
@ -120,7 +121,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#if (${hycType} != "")
|
#if (${hycType} != "")
|
||||||
<L>${hycType}</L> IN ##
|
<L>${hycType}</L> IN ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
#end
|
#end
|
||||||
############################
|
############################
|
||||||
|
@ -197,7 +198,7 @@ THIS IS A TEST MESSAGE.##
|
||||||
FOR <L>${hycType}</L> ##
|
FOR <L>${hycType}</L> ##
|
||||||
#end
|
#end
|
||||||
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)...
|
#headlineLocList(${areas} true true true false true)...
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
#################################
|
#################################
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
## Created BY MIKE DANGELO 9-19-2011 at Alaska TIM for zones coding ##
|
## Created BY MIKE DANGELO 9-19-2011 at Alaska TIM for zones coding ##
|
||||||
## Edited by Phil kurimski 2-29-2012
|
## Edited by Phil kurimski 2-29-2012
|
||||||
## Edited by Mike Rega 5-02-2012 DR 14885-MND blank line
|
## Edited by Mike Rega 5-02-2012 DR 14885-MND blank line
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
#################################### SET SOME VARs ###################################
|
#################################### SET SOME VARs ###################################
|
||||||
#set ($hycType = "")
|
#set ($hycType = "")
|
||||||
#set ($floodReason = "")
|
#set ($floodReason = "")
|
||||||
|
@ -137,7 +138,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#if (${hycType} != "")
|
#if (${hycType} != "")
|
||||||
<L>${hycType}</L> IN ##
|
<L>${hycType}</L> IN ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
||||||
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
||||||
|
@ -145,7 +146,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#if (${hycType} != "")
|
#if (${hycType} != "")
|
||||||
<L>${hycType}</L> IN ##
|
<L>${hycType}</L> IN ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
@ -218,7 +219,7 @@ THIS IS A TEST MESSAGE.##
|
||||||
FOR <L>${hycType}</L> ##
|
FOR <L>${hycType}</L> ##
|
||||||
#end
|
#end
|
||||||
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)...
|
#headlineLocList(${areas} true true true false true)...
|
||||||
|
|
||||||
################################################
|
################################################
|
||||||
#################################
|
#################################
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
## MODIFIED EVAN BOOKBINDER 09-16-2011 OB11.0.8-8
|
## MODIFIED EVAN BOOKBINDER 09-16-2011 OB11.0.8-8
|
||||||
## Evan Bookbinder 4-25-2012 for OB 12.3.1 (corText)
|
## Evan Bookbinder 4-25-2012 for OB 12.3.1 (corText)
|
||||||
## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad
|
## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
################################################
|
################################################
|
||||||
##
|
##
|
||||||
### CREATE PHRASING DEPENDING ON WHETHER WE ISSUE EXP PRIOR TO EXPIRATION TIME OR NOT
|
### CREATE PHRASING DEPENDING ON WHETHER WE ISSUE EXP PRIOR TO EXPIRATION TIME OR NOT
|
||||||
|
@ -54,7 +55,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE. ##
|
THIS IS A TEST MESSAGE. ##
|
||||||
#end
|
#end
|
||||||
...THE EXTREME WIND WARNING FOR ##
|
...THE EXTREME WIND WARNING FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
|
|
||||||
## One line explanation
|
## One line explanation
|
||||||
|
@ -157,7 +158,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE. ##
|
THIS IS A TEST MESSAGE. ##
|
||||||
#end
|
#end
|
||||||
...AN EXTREME WIND WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...AN EXTREME WIND WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)...
|
#headlineLocList(${areas} true true true false true)...
|
||||||
## Storm current location description
|
## Storm current location description
|
||||||
|
|
||||||
#if(${productClass}=="T")
|
#if(${productClass}=="T")
|
||||||
|
@ -206,7 +207,7 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS...
|
||||||
#end
|
#end
|
||||||
#if(${list.contains($bullets, "cta1")})
|
#if(${list.contains($bullets, "cta1")})
|
||||||
WIDESPREAD DESTRUCTIVE WINDS OF !** **! TO !** **! MPH WILL SPREAD ACROSS ##
|
WIDESPREAD DESTRUCTIVE WINDS OF !** **! TO !** **! MPH WILL SPREAD ACROSS ##
|
||||||
#headlineLocList(${areas} true true true false)...PRODUCING SWATHS OF TORNADO-LIKE DAMAGE.
|
#headlineLocList(${areas} true true true false true)...PRODUCING SWATHS OF TORNADO-LIKE DAMAGE.
|
||||||
|
|
||||||
#end
|
#end
|
||||||
#if(${list.contains($bullets, "cta2")})
|
#if(${list.contains($bullets, "cta2")})
|
||||||
|
@ -314,7 +315,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE EXTREME WIND WARNING FOR##
|
...THE EXTREME WIND WARNING FOR##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
|
|
||||||
## One line explanation
|
## One line explanation
|
||||||
|
@ -362,7 +363,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...AN EXTREME WIND WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...AN EXTREME WIND WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)...
|
#headlineLocList(${areas} true true true false true)...
|
||||||
|
|
||||||
#if(${productClass}=="T")
|
#if(${productClass}=="T")
|
||||||
|
|
||||||
|
@ -462,7 +463,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE EXTREME WIND WARNING FOR##
|
...THE EXTREME WIND WARNING FOR##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
|
|
||||||
#############
|
#############
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
## Modified by MIKE DANGELO 2-23-2012
|
## Modified by MIKE DANGELO 2-23-2012
|
||||||
## Modified by EVAN BOOKBINDER 2-24-2012
|
## Modified by EVAN BOOKBINDER 2-24-2012
|
||||||
## Modified by Phil Kurimski 2-29-2012
|
## Modified by Phil Kurimski 2-29-2012
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
#################################### SET SOME VARs ###################################
|
#################################### SET SOME VARs ###################################
|
||||||
#set ($hycType = "")
|
#set ($hycType = "")
|
||||||
#set ($snowMelt = "")
|
#set ($snowMelt = "")
|
||||||
|
@ -94,7 +95,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#if (${hycType} != "")
|
#if (${hycType} != "")
|
||||||
<L>${hycType}</L> IN ##
|
<L>${hycType}</L> IN ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
||||||
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
||||||
|
@ -102,7 +103,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#if (${hycType} != "")
|
#if (${hycType} != "")
|
||||||
<L>${hycType}</L> IN ##
|
<L>${hycType}</L> IN ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
#end
|
#end
|
||||||
############################
|
############################
|
||||||
|
@ -175,7 +176,7 @@ THIS IS A TEST MESSAGE.##
|
||||||
FOR <L>${hycType}</L> ##
|
FOR <L>${hycType}</L> ##
|
||||||
#end
|
#end
|
||||||
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)...##
|
#headlineLocList(${areas} true true true false true)...##
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline #
|
## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline #
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
## done in August.
|
## done in August.
|
||||||
## Edited by Mike Dangelo 01-26-2012 at CRH TIM
|
## Edited by Mike Dangelo 01-26-2012 at CRH TIM
|
||||||
## Edited by Phil Kurimski 2-29-2012
|
## Edited by Phil Kurimski 2-29-2012
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
#################################### SET SOME VARs ###################################
|
#################################### SET SOME VARs ###################################
|
||||||
#set ($hycType = "")
|
#set ($hycType = "")
|
||||||
#set ($snowMelt = "")
|
#set ($snowMelt = "")
|
||||||
|
@ -92,7 +93,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#if (${hycType} != "")
|
#if (${hycType} != "")
|
||||||
<L>${hycType}</L> IN ##
|
<L>${hycType}</L> IN ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
||||||
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
||||||
|
@ -100,7 +101,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#if (${hycType} != "")
|
#if (${hycType} != "")
|
||||||
<L>${hycType}</L> IN ##
|
<L>${hycType}</L> IN ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
#end
|
#end
|
||||||
############################
|
############################
|
||||||
|
@ -172,7 +173,7 @@ THIS IS A TEST MESSAGE.##
|
||||||
FOR <L>${hycType}</L> ##
|
FOR <L>${hycType}</L> ##
|
||||||
#end
|
#end
|
||||||
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)...##
|
#headlineLocList(${areas} true true true false true)...##
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline #
|
## Flash Flood Emergency per NWS 10-922 Directive goes after initial headline #
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
## VERSION AWIPS II 1.1 -- 2-29-2012 OB12.2.1-4 ##
|
## VERSION AWIPS II 1.1 -- 2-29-2012 OB12.2.1-4 ##
|
||||||
## VERSION AWIPS II 1.2 -- 4-20-2012 ##
|
## VERSION AWIPS II 1.2 -- 4-20-2012 ##
|
||||||
## BY QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ##
|
## BY QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ##
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
################################################################
|
################################################################
|
||||||
##
|
##
|
||||||
###################################################################
|
###################################################################
|
||||||
|
@ -142,12 +143,12 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
##
|
##
|
||||||
#if(${action}=="EXP" || ${action}=="CAN")
|
#if(${action}=="EXP" || ${action}=="CAN")
|
||||||
...THE ${eventType} WARNING FOR ##
|
...THE ${eventType} WARNING FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
||||||
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
||||||
...THE ${eventType} WARNING FOR ##
|
...THE ${eventType} WARNING FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
#end
|
#end
|
||||||
############################
|
############################
|
||||||
|
@ -360,7 +361,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#end
|
#end
|
||||||
#if(${action}=="CANCON" || ${action}=="CON" || ${action}=="COR" || ${CORCAN}=="true")
|
#if(${action}=="CANCON" || ${action}=="CON" || ${action}=="COR" || ${CORCAN}=="true")
|
||||||
...A ${eventType} WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...A ${eventType} WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
## Evan Bookbinder -- SEP 16 2011 OB11.0.8-8 ##
|
## Evan Bookbinder -- SEP 16 2011 OB11.0.8-8 ##
|
||||||
## Phil Kurimski -- SEP 23 2011 OB11.0.8-8 ##
|
## Phil Kurimski -- SEP 23 2011 OB11.0.8-8 ##
|
||||||
## Mike Rega -- MAY 03 2012 DR 14885 MND ##
|
## Mike Rega -- MAY 03 2012 DR 14885 MND ##
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
#####################################################
|
#####################################################
|
||||||
##
|
##
|
||||||
#set($headline = "")
|
#set($headline = "")
|
||||||
|
@ -210,7 +211,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -227,7 +228,7 @@ ${endwarning}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
|
|
||||||
|
|
||||||
|
@ -398,7 +399,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -424,7 +425,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -587,7 +588,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -613,7 +614,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -764,7 +765,7 @@ EXPIRED AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone
|
||||||
#else
|
#else
|
||||||
WILL EXPIRE AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
WILL EXPIRE AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
## Evan Bookbinder -- SEP 16 2011 OB11.0.8-8 ##
|
## Evan Bookbinder -- SEP 16 2011 OB11.0.8-8 ##
|
||||||
## Phil Kurimski -- SEP 23 2011 OB11.0.8-8 ##
|
## Phil Kurimski -- SEP 23 2011 OB11.0.8-8 ##
|
||||||
## Mike Rega -- MAY 03 2012 DR 14885 MND ##
|
## Mike Rega -- MAY 03 2012 DR 14885 MND ##
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
#####################################################
|
#####################################################
|
||||||
##
|
##
|
||||||
#set($headline = "")
|
#set($headline = "")
|
||||||
|
@ -210,7 +211,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -227,7 +228,7 @@ ${endwarning}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
|
|
||||||
|
|
||||||
|
@ -393,7 +394,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -419,7 +420,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -586,7 +587,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
...THE FLASH FLOOD WARNING ${headline}HAS BEEN CANCELLED FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -612,7 +613,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
THIS IS A TEST MESSAGE.##
|
THIS IS A TEST MESSAGE.##
|
||||||
#end
|
#end
|
||||||
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
...A FLASH FLOOD WARNING ${headline}REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
@ -767,7 +768,7 @@ EXPIRED AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone
|
||||||
#else
|
#else
|
||||||
WILL EXPIRE AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
WILL EXPIRE AT ${dateUtil.format(${expire}, ${timeFormat.clock}, 15, ${localtimezone})} FOR ##
|
||||||
#end
|
#end
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
|
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
## BY MIKE REGA 5-3-2012 DR 14885 MND blank line ##
|
## BY MIKE REGA 5-3-2012 DR 14885 MND blank line ##
|
||||||
## BY QINGLU LIN 6-18-2012 DR 15043 use duration ##
|
## BY QINGLU LIN 6-18-2012 DR 15043 use duration ##
|
||||||
## BY QINGLU LIN 7-31-2012 DR 15217 use roundAndPad##
|
## BY QINGLU LIN 7-31-2012 DR 15217 use roundAndPad##
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
#################################################################
|
#################################################################
|
||||||
##
|
##
|
||||||
###################################################################
|
###################################################################
|
||||||
|
@ -117,12 +118,12 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
##
|
##
|
||||||
#if(${action}=="EXP" || ${action}=="CAN")
|
#if(${action}=="EXP" || ${action}=="CAN")
|
||||||
...THE ${eventType} WARNING FOR ##
|
...THE ${eventType} WARNING FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
## SLIGHTLY DIFFERENT VARIABLE FOR PARTIAL CANCELLATION HEADLINE
|
||||||
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
#elseif(${action}=="CANCON" || ${CORCAN}=="true")
|
||||||
...THE ${eventType} WARNING FOR ##
|
...THE ${eventType} WARNING FOR ##
|
||||||
#headlineLocList(${cancelareas} true true true false)
|
#headlineLocList(${cancelareas} true true true false true)
|
||||||
${expcanHLTag}...
|
${expcanHLTag}...
|
||||||
#end
|
#end
|
||||||
############################
|
############################
|
||||||
|
@ -335,7 +336,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#end
|
#end
|
||||||
#if(${action}=="CANCON" || ${action}=="CON" || ${action}=="COR" || ${CORCAN}=="true")
|
#if(${action}=="CANCON" || ${action}=="CON" || ${action}=="COR" || ${CORCAN}=="true")
|
||||||
...A ${eventType} WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone},${duration}) FOR ##
|
...A ${eventType} WARNING REMAINS IN EFFECT #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone},${duration}) FOR ##
|
||||||
#headlineLocList(${areas} true true true false)
|
#headlineLocList(${areas} true true true false true)
|
||||||
...##
|
...##
|
||||||
########### END NEW HEADLINE CODE ####################
|
########### END NEW HEADLINE CODE ####################
|
||||||
#####################################################################
|
#####################################################################
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
## Edited by Phil Kurimski 3-01-2012 OB12.2.1-4 ##
|
## Edited by Phil Kurimski 3-01-2012 OB12.2.1-4 ##
|
||||||
## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND)
|
## Evan Bookbinder 4-25-2012 for OB 12.3.1 (MND)
|
||||||
## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ##
|
## QINGLU LIN 7-31-2012 DR 15217 use roundAndPad ##
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
######################################################
|
######################################################
|
||||||
##
|
##
|
||||||
##SET SOME INITIAL VARIABLES
|
##SET SOME INITIAL VARIABLES
|
||||||
|
@ -119,7 +120,7 @@ THIS IS A TEST MESSAGE. ##
|
||||||
#end
|
#end
|
||||||
#if(${windSpeed} >= 40 || ${hailSize} >= 0.70)
|
#if(${windSpeed} >= 40 || ${hailSize} >= 0.70)
|
||||||
...SIGNIFICANT WEATHER ADVISORY FOR ##
|
...SIGNIFICANT WEATHER ADVISORY FOR ##
|
||||||
#headlineLocList(${areas} true false true false) #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone})
|
#headlineLocList(${areas} true false true false true) #secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone})
|
||||||
...##
|
...##
|
||||||
#elseif(${windSpeed} == 0 && ${hailSize} == 0)
|
#elseif(${windSpeed} == 0 && ${hailSize} == 0)
|
||||||
!** YOU DID NOT SELECT ANY WIND OR HAIL THREATS. PLEASE RE-GENERATE THIS ADVISORY **!
|
!** YOU DID NOT SELECT ANY WIND OR HAIL THREATS. PLEASE RE-GENERATE THIS ADVISORY **!
|
||||||
|
|
|
@ -2,6 +2,9 @@
|
||||||
## sigwx alert for thunderstorms with wind and/or hail under
|
## sigwx alert for thunderstorms with wind and/or hail under
|
||||||
## severe limits
|
## severe limits
|
||||||
## county list needs to be sortable by state/parts of state/
|
## county list needs to be sortable by state/parts of state/
|
||||||
|
##
|
||||||
|
## Qinglu Lin 12-27-2012 DR 15594. Appended true to headlineLocList's parameter list.
|
||||||
|
##
|
||||||
${WMOId} ${vtecOffice} 000000 ${BBBId}
|
${WMOId} ${vtecOffice} 000000 ${BBBId}
|
||||||
SPS${siteId}
|
SPS${siteId}
|
||||||
|
|
||||||
|
@ -26,7 +29,7 @@ ${dateUtil.format(${now}, ${timeFormat.header}, ${localtimezone})}
|
||||||
#end
|
#end
|
||||||
|
|
||||||
THE NATIONAL WEATHER SERVICE IN ${officeLoc} HAS ISSUED A SPECIAL WEATHER STATEMENT EFFECTIVE ##
|
THE NATIONAL WEATHER SERVICE IN ${officeLoc} HAS ISSUED A SPECIAL WEATHER STATEMENT EFFECTIVE ##
|
||||||
#secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR #headlineLocList(${areas} true true true false).
|
#secondBullet(${dateUtil},${expire},${timeFormat},${localtimezone},${secondtimezone}) FOR #headlineLocList(${areas} true true true false true).
|
||||||
|
|
||||||
#if(${stormType} == "line")
|
#if(${stormType} == "line")
|
||||||
#set ($type1 = "THUNDERSTORMS")
|
#set ($type1 = "THUNDERSTORMS")
|
||||||
|
|
|
@ -605,12 +605,16 @@ HRAP = ('HRAP', POLAR_STEREOGRAPHIC,
|
||||||
(-119.036, 23.097), (-75.945396, 53.480095),
|
(-119.036, 23.097), (-75.945396, 53.480095),
|
||||||
(0.0, 0.0), 0.0, 0.0, (1, 1), (801, 881), 0.0, 0.0, -105.0)
|
(0.0, 0.0), 0.0, 0.0, (1, 1), (801, 881), 0.0, 0.0, -105.0)
|
||||||
|
|
||||||
|
NDFD_Oceanic_10K = ('NDFD Oceanic 10km', MERCATOR,
|
||||||
|
(-230.094, -30.4192), (10.71, 67.03),
|
||||||
|
(0.0, 0.0), 0.0, 0.0, (1, 1), (2517, 1289), 0.0, -109.962, 0.0)
|
||||||
|
|
||||||
# list of all projections
|
# list of all projections
|
||||||
allProjections = [Grid201, Grid202, Grid203, Grid204, Grid205, Grid206,
|
allProjections = [Grid201, Grid202, Grid203, Grid204, Grid205, Grid206,
|
||||||
Grid207, Grid208, Grid209, Grid210, Grid211, Grid212, Grid213, Grid214,
|
Grid207, Grid208, Grid209, Grid210, Grid211, Grid212, Grid213, Grid214,
|
||||||
Grid214AK, Grid215, Grid216, Grid217, Grid218, Grid219, Grid221, Grid222,
|
Grid214AK, Grid215, Grid216, Grid217, Grid218, Grid219, Grid221, Grid222,
|
||||||
Grid225, Grid226, Grid227, Grid228, Grid229, Grid230, Grid231, Grid232,
|
Grid225, Grid226, Grid227, Grid228, Grid229, Grid230, Grid231, Grid232,
|
||||||
Grid233, Grid234, Grid235, HRAP]
|
Grid233, Grid234, Grid235, HRAP, NDFD_Oceanic_10K]
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
|
@ -791,8 +795,10 @@ SITES = {
|
||||||
#Special Sites - Updated NHC and OPC domains in OB9.3
|
#Special Sites - Updated NHC and OPC domains in OB9.3
|
||||||
'US' : ([267, 159], (18.0, 9.5), (67.0, 40.0), 'EDT5EDT', Grid211, "other"),
|
'US' : ([267, 159], (18.0, 9.5), (67.0, 40.0), 'EDT5EDT', Grid211, "other"),
|
||||||
'FSL' : ([161, 145], (38.50, 27.00), (10.0, 9.0), 'MST7MDT', Grid211, "other"),
|
'FSL' : ([161, 145], (38.50, 27.00), (10.0, 9.0), 'MST7MDT', Grid211, "other"),
|
||||||
'NH1' : ([667, 461], (69.5, 4.5), (52.03125, 35.9375), 'EST5EDT', Grid204, "wfo"),
|
# 'NH1' : ([667, 461], (69.5, 4.5), (52.03125, 35.9375), 'EST5EDT', Grid204, "wfo"),
|
||||||
'NH2' : ([950, 289], (-33.0, -7.0), (148.276, 45.0), 'EST5EDT', Grid210, "wfo"),
|
# 'NH2' : ([950, 289], (-33.0, -7.0), (148.276, 45.0), 'EST5EDT', Grid210, "wfo"),
|
||||||
|
'NH1' = ([838, 577], (887.0, 121.0), (837.0, 576.0), 'EST5EDT', NDFD_Oceanic_10K, "wfo")
|
||||||
|
'NH2' = ([1188, 363], (1328.0, 365.0), (1187.0, 362.0), 'EST5EDT', NDFD_Oceanic_10K, "wfo")
|
||||||
'ONA' : ([244, 383], (68.9375, 19.5625), (15.1875, 23.875), 'EST5EDT', Grid211, "wfo"),
|
'ONA' : ([244, 383], (68.9375, 19.5625), (15.1875, 23.875), 'EST5EDT', Grid211, "wfo"),
|
||||||
'ONP' : ([396, 415], (8.1875, 21.5625), (24.6875, 25.875), 'PST8PDT', Grid211, "wfo"),
|
'ONP' : ([396, 415], (8.1875, 21.5625), (24.6875, 25.875), 'PST8PDT', Grid211, "wfo"),
|
||||||
|
|
||||||
|
@ -971,7 +977,7 @@ RTMA = ('RTMA', GRID, '', YES, NO, 1, 36)
|
||||||
NamDNG5 = ('NamDNG5', GRID, '', NO, NO, 2, 0)
|
NamDNG5 = ('NamDNG5', GRID, '', NO, NO, 2, 0)
|
||||||
TPCProb = ('TPCProb', GRID, '', NO, NO, 30, 0)
|
TPCProb = ('TPCProb', GRID, '', NO, NO, 30, 0)
|
||||||
SREF = ('SREF', GRID, '', NO, NO, 3, 0)
|
SREF = ('SREF', GRID, '', NO, NO, 3, 0)
|
||||||
|
ENPwave = ('ENPwave', GRID, '', NO, NO, 2, 0)
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# D2D Model Database Version Specification
|
# D2D Model Database Version Specification
|
||||||
|
@ -1117,6 +1123,7 @@ elif SID in CONUS_EAST_SITES:
|
||||||
('HiResW-NMM-East', 'HIRESWnmm'),
|
('HiResW-NMM-East', 'HIRESWnmm'),
|
||||||
('SPCGuide', 'SPC'),
|
('SPCGuide', 'SPC'),
|
||||||
('ECMWF-HiRes','ECMWFHiRes'),
|
('ECMWF-HiRes','ECMWFHiRes'),
|
||||||
|
('ENPWAVE253', 'ENPwave'),
|
||||||
]
|
]
|
||||||
|
|
||||||
else: #######DCS3501 WEST_CONUS
|
else: #######DCS3501 WEST_CONUS
|
||||||
|
@ -1166,6 +1173,7 @@ else: #######DCS3501 WEST_CONUS
|
||||||
('HiResW-NMM-West', 'HIRESWnmm'),
|
('HiResW-NMM-West', 'HIRESWnmm'),
|
||||||
('SPCGuide', 'SPC'),
|
('SPCGuide', 'SPC'),
|
||||||
('ECMWF-HiRes','ECMWFHiRes'),
|
('ECMWF-HiRes','ECMWFHiRes'),
|
||||||
|
('ENPWAVE253', 'ENPwave'),
|
||||||
]
|
]
|
||||||
|
|
||||||
if SID in GreatLake_SITES:
|
if SID in GreatLake_SITES:
|
||||||
|
@ -1390,6 +1398,7 @@ else:
|
||||||
# "WCwave4" : ["WCwave4"],
|
# "WCwave4" : ["WCwave4"],
|
||||||
# "WNAwave10" : ["WNAwave10"],
|
# "WNAwave10" : ["WNAwave10"],
|
||||||
# "WNAwave4" : ["WNAwave4"],
|
# "WNAwave4" : ["WNAwave4"],
|
||||||
|
# "ENPwave": ["ENPwave"],
|
||||||
}
|
}
|
||||||
|
|
||||||
#initialization skip certain model runs
|
#initialization skip certain model runs
|
||||||
|
@ -1519,6 +1528,7 @@ localMOSParms = localHPCQPFParms = localRFCQPFParms = []
|
||||||
localTCMParms = localSATParms = localGFS75Parms = localGFS190Parms = []
|
localTCMParms = localSATParms = localGFS75Parms = localGFS190Parms = []
|
||||||
localAKwave10Parms = localAKwave4Parms = localEPwave10Parms = localGlobalWaveParms = []
|
localAKwave10Parms = localAKwave4Parms = localEPwave10Parms = localGlobalWaveParms = []
|
||||||
localWCwave10Parms = localWCwave4Parms = localWNAwave10Parms = localWNAwave4Parms = []
|
localWCwave10Parms = localWCwave4Parms = localWNAwave10Parms = localWNAwave4Parms = []
|
||||||
|
localENPwaveParms = []
|
||||||
localGLWMParms = [] #####DCS3499
|
localGLWMParms = [] #####DCS3499
|
||||||
localParms = localHIRESWarwParms = localHIRESWnmmParms = [] #######DCS3501
|
localParms = localHIRESWarwParms = localHIRESWnmmParms = [] #######DCS3501
|
||||||
#DR20634 localParms = localSPCParms = []
|
#DR20634 localParms = localSPCParms = []
|
||||||
|
@ -1595,7 +1605,7 @@ if not BASELINE and siteImport('localConfig'):
|
||||||
localWCwave4Parms = getattr(localConfig, 'parmsWCwave4', localWCwave4Parms)
|
localWCwave4Parms = getattr(localConfig, 'parmsWCwave4', localWCwave4Parms)
|
||||||
localWNAwave10Parms = getattr(localConfig, 'parmsWNAwave10', localWNAwave10Parms)
|
localWNAwave10Parms = getattr(localConfig, 'parmsWNAwave10', localWNAwave10Parms)
|
||||||
localWNAwave4Parms = getattr(localConfig, 'parmsWNAwave4', localWNAwave4Parms)
|
localWNAwave4Parms = getattr(localConfig, 'parmsWNAwave4', localWNAwave4Parms)
|
||||||
|
localENPwaveParms = getattr(localConfig, 'parmsENPwave', localENPwaveParms)
|
||||||
#note that extraISCparms are not in the standard format. These
|
#note that extraISCparms are not in the standard format. These
|
||||||
#are a list of ([p, p, p, p], officeType)
|
#are a list of ([p, p, p, p], officeType)
|
||||||
localISCExtraParms = getattr(localConfig, 'extraISCparms', localISCExtraParms)
|
localISCExtraParms = getattr(localConfig, 'extraISCparms', localISCExtraParms)
|
||||||
|
@ -1771,6 +1781,9 @@ TPCProbPARMS = [([prob34, prob50, prob64], TC1),
|
||||||
# Cobb snow tool
|
# Cobb snow tool
|
||||||
parmsNAM12 = [([SnowRatio], TC1)]
|
parmsNAM12 = [([SnowRatio], TC1)]
|
||||||
parmsGFS40 = [([SnowRatio], TC1)]
|
parmsGFS40 = [([SnowRatio], TC1)]
|
||||||
|
|
||||||
|
ENPwave_parms = [([WindWaveHeight, WaveHeight, SurfHeight, Wind], TC6),
|
||||||
|
([Swell, Swell2, Period, Period2], TC6)]
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Databases for a site.
|
# Databases for a site.
|
||||||
# list of (Database, [parms])
|
# list of (Database, [parms])
|
||||||
|
@ -1826,6 +1839,7 @@ DATABASES = [(Official, OFFICIALDBS + localParms),
|
||||||
(RTMA, RTMAPARMS + localRTMAParms),
|
(RTMA, RTMAPARMS + localRTMAParms),
|
||||||
(NamDNG5, NamDNG5PARMS + localNamDNG5Parms),
|
(NamDNG5, NamDNG5PARMS + localNamDNG5Parms),
|
||||||
(TPCProb, TPCProbPARMS + localTPCProbParms),
|
(TPCProb, TPCProbPARMS + localTPCProbParms),
|
||||||
|
(ENPwave, ENPwave_parms + localENPwaveParms),
|
||||||
(Test, OFFICIALDBS + localParms)] + localDBs
|
(Test, OFFICIALDBS + localParms)] + localDBs
|
||||||
|
|
||||||
# Intersite coordination database parameter groupings, based on
|
# Intersite coordination database parameter groupings, based on
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
SITE:common_static/scan/SCANRunSiteConfig.xml
|
SITE:common_static/scan/SCANRunSiteConfig.xml
|
||||||
|
|
||||||
#AvnFPS files
|
#AvnFPS files
|
||||||
SITE:cave_static/aviation/avnwatch/aviationForecasterConfig.xml
|
#SITE:cave_static/aviation/avnwatch/aviationForecasterConfig.xml
|
||||||
|
|
||||||
#D2D files
|
#D2D files
|
||||||
BASE:cave_static/derivedParameters/DerivedParameterInterface.py
|
BASE:cave_static/derivedParameters/DerivedParameterInterface.py
|
||||||
|
|
|
@ -47,7 +47,7 @@ import com.vividsolutions.jts.io.WKTReader;
|
||||||
* 12/03/2008 chammack Camel refactor
|
* 12/03/2008 chammack Camel refactor
|
||||||
* 09/15/2009 3027 njensen Patterns constants
|
* 09/15/2009 3027 njensen Patterns constants
|
||||||
* 09/21/2009 3072 bsteffen Fixed Decoding of Line Records
|
* 09/21/2009 3072 bsteffen Fixed Decoding of Line Records
|
||||||
*
|
* 01/02/2013 DCS 135 tk handle coverage value Line records
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -71,7 +71,7 @@ public class CcfpDecoder extends AbstractDecoder {
|
||||||
private static final String PARSE_AREA = "AREA (\\d+) (\\d+) (\\d+) (\\d+) (\\d+) (\\d+) \\d+ (.*) (\\d+) (\\d+)";
|
private static final String PARSE_AREA = "AREA (\\d+) (\\d+) (\\d+) (\\d+) (\\d+) (\\d+) \\d+ (.*) (\\d+) (\\d+)";
|
||||||
|
|
||||||
/** Parse a LINE line */
|
/** Parse a LINE line */
|
||||||
private static final String PARSE_LINE = "LINE \\d+ (.*)";
|
private static final String PARSE_LINE = "LINE (\\d+) \\d+ (.*)";
|
||||||
|
|
||||||
private static final Pattern STRING_PATTERN = Pattern.compile(PARSE_STRING);
|
private static final Pattern STRING_PATTERN = Pattern.compile(PARSE_STRING);
|
||||||
|
|
||||||
|
@ -180,26 +180,33 @@ public class CcfpDecoder extends AbstractDecoder {
|
||||||
} else if (record.getProducttype().equals("LINE")) {
|
} else if (record.getProducttype().equals("LINE")) {
|
||||||
matcher = LINE_PATTERN.matcher(msg);
|
matcher = LINE_PATTERN.matcher(msg);
|
||||||
if (matcher.find()) {
|
if (matcher.find()) {
|
||||||
record.setCoverage(null);
|
record.setCoverage(Integer.parseInt(matcher.group(1))); // change to group 1
|
||||||
record.setConf(null);
|
record.setConf(null);
|
||||||
record.setGrowth(null);
|
record.setGrowth(null);
|
||||||
record.setTops(null);
|
record.setTops(null);
|
||||||
record.setSpeed(null);
|
record.setSpeed(null);
|
||||||
record.setDirection(null);
|
record.setDirection(null);
|
||||||
location.setBoxLat(0);
|
String templatlonpairs = matcher.group(2); // change to group 2
|
||||||
location.setBoxLong(0);
|
|
||||||
String templatlonpairs = matcher.group(1);
|
|
||||||
matcher = PAIR_PATTERN.matcher(templatlonpairs);
|
matcher = PAIR_PATTERN.matcher(templatlonpairs);
|
||||||
|
|
||||||
StringBuffer wtk = new StringBuffer();
|
StringBuffer wtk = new StringBuffer();
|
||||||
wtk.append("LINESTRING(");
|
wtk.append("LINESTRING(");
|
||||||
if (matcher.find()) {
|
if (matcher.find()) {
|
||||||
wtk.append(Double.toString(Integer.parseInt(matcher
|
|
||||||
.group(2))
|
Double lon = Integer.parseInt(matcher
|
||||||
* -0.1));
|
.group(2)) * -0.1;
|
||||||
|
String lonStr = Double.toString(lon);
|
||||||
|
|
||||||
|
Double lat = Integer.parseInt(matcher
|
||||||
|
.group(1)) * 0.1;
|
||||||
|
String latStr = Double.toString(lat);
|
||||||
|
|
||||||
|
location.setBoxLong(lon);
|
||||||
|
location.setBoxLat(lat);
|
||||||
|
|
||||||
|
wtk.append(lonStr);
|
||||||
wtk.append(SPACE);
|
wtk.append(SPACE);
|
||||||
wtk.append(Double.toString(Integer.parseInt(matcher
|
wtk.append(latStr);
|
||||||
.group(1)) * 0.1));
|
|
||||||
}
|
}
|
||||||
while (matcher.find()) {
|
while (matcher.find()) {
|
||||||
wtk.append(COMMA);
|
wtk.append(COMMA);
|
||||||
|
|
|
@ -45,6 +45,7 @@ import com.raytheon.edex.util.Util;
|
||||||
* 03/03/2007 908 bwoodle initial creation
|
* 03/03/2007 908 bwoodle initial creation
|
||||||
* 12/03/2008 chammack Camel refactor
|
* 12/03/2008 chammack Camel refactor
|
||||||
* 09/16/2009 3027 njensen Static patterns
|
* 09/16/2009 3027 njensen Static patterns
|
||||||
|
* 01/02/2013 DCS 135 tk use \\r* for testing end of line
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -58,11 +59,11 @@ public class CcfpSeparator extends AbstractRecordSeparator {
|
||||||
|
|
||||||
/** Regex used for separating multi-record files */
|
/** Regex used for separating multi-record files */
|
||||||
private static final Pattern DATASET = Pattern
|
private static final Pattern DATASET = Pattern
|
||||||
.compile("CCFP \\d{8}_\\d{4} \\d{8}_\\d{4}([\\r\\n]+(AREA|LINE).*)*");
|
.compile("CCFP \\d{8}_\\d{4} \\d{8}_\\d{4}([\\r*\\n]+(AREA|LINE).*)*");
|
||||||
|
|
||||||
/** Regex to pull AWIPS Header */
|
/** Regex to pull AWIPS Header */
|
||||||
private static final Pattern AWIPSHEADER = Pattern
|
private static final Pattern AWIPSHEADER = Pattern
|
||||||
.compile("[\\r\\n]+(TAF|MTR|CFP)([\\p{Alnum} ]{3})[\\r\\n]+");
|
.compile("[\\r*\\n]+(TAF|MTR|CFP)([\\p{Alnum} ]{3})[\\r*\\n]+");
|
||||||
|
|
||||||
/** Regex used for extracting the header */
|
/** Regex used for extracting the header */
|
||||||
private static final Pattern HEADERREGEX = Pattern
|
private static final Pattern HEADERREGEX = Pattern
|
||||||
|
|
|
@ -19,5 +19,5 @@
|
||||||
further_licensing_information.
|
further_licensing_information.
|
||||||
-->
|
-->
|
||||||
<requestPatterns xmlns:ns2="group">
|
<requestPatterns xmlns:ns2="group">
|
||||||
<regex>^FAUS2[789] KKCI.*</regex>
|
<regex>^FAUS(2[89]|30) KKCI.*</regex>
|
||||||
</requestPatterns>
|
</requestPatterns>
|
||||||
|
|
|
@ -73,6 +73,9 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* 4/7/09 1994 bphillip Initial Creation
|
* 4/7/09 1994 bphillip Initial Creation
|
||||||
*
|
*
|
||||||
|
* 1/4/13 DR 15653 M.Porricelli Shift subgrid domain
|
||||||
|
* westward like AWIPSI
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author bphillip
|
* @author bphillip
|
||||||
|
@ -128,6 +131,8 @@ public class GribSpatialCache {
|
||||||
private FileDataList fileDataList;
|
private FileDataList fileDataList;
|
||||||
|
|
||||||
private long fileScanTime = 0;
|
private long fileScanTime = 0;
|
||||||
|
|
||||||
|
boolean shiftSubGridWest = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the singleton instance of GribSpatialCache
|
* Gets the singleton instance of GribSpatialCache
|
||||||
|
@ -300,8 +305,12 @@ public class GribSpatialCache {
|
||||||
Coordinate subGridCenterGridCoord = MapUtil.latLonToGridCoordinate(
|
Coordinate subGridCenterGridCoord = MapUtil.latLonToGridCoordinate(
|
||||||
subGridCenterLatLon, PixelOrientation.CENTER,
|
subGridCenterLatLon, PixelOrientation.CENTER,
|
||||||
referenceCoverage);
|
referenceCoverage);
|
||||||
|
|
||||||
double xCenterPoint = subGridCenterGridCoord.x;
|
double shiftX = 0;
|
||||||
|
if (shiftSubGridWest == true && modelName != "TPCSurgeProb")
|
||||||
|
shiftX = subGridDef.getNx() / 5;
|
||||||
|
|
||||||
|
double xCenterPoint = subGridCenterGridCoord.x - shiftX;
|
||||||
double yCenterPoint = subGridCenterGridCoord.y;
|
double yCenterPoint = subGridCenterGridCoord.y;
|
||||||
|
|
||||||
double xDistance = subGridDef.getNx() / 2;
|
double xDistance = subGridDef.getNx() / 2;
|
||||||
|
@ -310,6 +319,12 @@ public class GribSpatialCache {
|
||||||
- xDistance, yCenterPoint + yDistance);
|
- xDistance, yCenterPoint + yDistance);
|
||||||
Coordinate upperRightPosition = new Coordinate(xCenterPoint
|
Coordinate upperRightPosition = new Coordinate(xCenterPoint
|
||||||
+ xDistance, yCenterPoint - yDistance);
|
+ xDistance, yCenterPoint - yDistance);
|
||||||
|
|
||||||
|
// If the western edge of the subgrid is placed west of the full grid boundary
|
||||||
|
// (possibly when westward shifting above was done) it will be shifted back
|
||||||
|
// to within the boundary, but the eastern edge should be shifted back also, by
|
||||||
|
// a proportional amount
|
||||||
|
if (lowerLeftPosition.x < 0) upperRightPosition.x -= lowerLeftPosition.x;
|
||||||
|
|
||||||
lowerLeftPosition = MapUtil.gridCoordinateToLatLon(
|
lowerLeftPosition = MapUtil.gridCoordinateToLatLon(
|
||||||
lowerLeftPosition, PixelOrientation.CENTER,
|
lowerLeftPosition, PixelOrientation.CENTER,
|
||||||
|
@ -599,7 +614,18 @@ public class GribSpatialCache {
|
||||||
.handleRequest(centerPointRequest);
|
.handleRequest(centerPointRequest);
|
||||||
logger.info("Default sub grid location is wfo center point ["
|
logger.info("Default sub grid location is wfo center point ["
|
||||||
+ defaultCenterPoint.y + "/" + defaultCenterPoint.x + "]");
|
+ defaultCenterPoint.y + "/" + defaultCenterPoint.x + "]");
|
||||||
|
/* If we are getting the WFO center as the center point, it means that
|
||||||
|
// the site has not defined its own center in the site file
|
||||||
|
// defaultSubGridCenterPoint.xml (see previous If block).
|
||||||
|
// Therefore, we will be shifting the domain westward to be similar to
|
||||||
|
// AWIPSI default behavior, so set a flag here.
|
||||||
|
// If the site *has* defined a center in defaultSubGridCenterPoint.xml,
|
||||||
|
// we will use that as the true, intended center and will not shift the
|
||||||
|
// domain further.
|
||||||
|
*/
|
||||||
|
shiftSubGridWest = true;
|
||||||
}
|
}
|
||||||
|
else shiftSubGridWest = false;
|
||||||
|
|
||||||
return defaultCenterPoint;
|
return defaultCenterPoint;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!--
|
||||||
|
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
|
||||||
|
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
|
||||||
|
|
||||||
|
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
|
||||||
|
This_software_product_contains_export-restricted_data_whose
|
||||||
|
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
|
||||||
|
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
|
||||||
|
an_export_license_or_other_authorization.
|
||||||
|
|
||||||
|
Contractor_Name:________Raytheon_Company
|
||||||
|
Contractor_Address:_____6825_Pine_Street,_Suite_340
|
||||||
|
________________________Mail_Stop_B8
|
||||||
|
________________________Omaha,_NE_68106
|
||||||
|
________________________402.291.0100
|
||||||
|
|
||||||
|
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
|
||||||
|
further_licensing_information.
|
||||||
|
-->
|
||||||
|
<pointDataDbDescription>
|
||||||
|
<parameter name="latitude" queryName="location.latitude" type="FLOAT" unit="°" />
|
||||||
|
<parameter name="longitude" queryName="location.longitude" type="FLOAT" unit="°" />
|
||||||
|
<parameter name="elevation" queryName="location.elevation" type="FLOAT" fillValue="-9999" unit="m" />
|
||||||
|
<parameter name="stationId" queryName="location.stationId" type="STRING" />
|
||||||
|
<parameter name="dataProvider" queryName="dataProvider" type="STRING" />
|
||||||
|
<parameter name="dataURI" queryName="dataURI" type="STRING" />
|
||||||
|
</pointDataDbDescription>
|
|
@ -21,6 +21,9 @@
|
||||||
package com.raytheon.edex.plugin.satellite;
|
package com.raytheon.edex.plugin.satellite;
|
||||||
|
|
||||||
import java.io.ByteArrayOutputStream;
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.RandomAccessFile;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.TimeZone;
|
import java.util.TimeZone;
|
||||||
|
@ -69,6 +72,8 @@ import com.raytheon.uf.edex.wmo.message.WMOHeader;
|
||||||
* 04/17/2012 14724 kshresth This is a temporary workaround - Projection off CONUS
|
* 04/17/2012 14724 kshresth This is a temporary workaround - Projection off CONUS
|
||||||
* - AWIPS2 Baseline Repository --------
|
* - AWIPS2 Baseline Repository --------
|
||||||
* 06/27/2012 798 jkorman Using SatelliteMessageData to "carry" the decoded image.
|
* 06/27/2012 798 jkorman Using SatelliteMessageData to "carry" the decoded image.
|
||||||
|
* 01/03/2013 15294 D. Friedman Start with File instead of byte[] to
|
||||||
|
* reduce memory usage.
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author bphillip
|
* @author bphillip
|
||||||
|
@ -82,61 +87,65 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
|
|
||||||
private static final String SAT_HDR_TT = "TI";
|
private static final String SAT_HDR_TT = "TI";
|
||||||
|
|
||||||
|
private static final int GINI_HEADER_SIZE = 512;
|
||||||
|
|
||||||
|
private static final int INITIAL_READ = GINI_HEADER_SIZE + 128;
|
||||||
|
|
||||||
private SatelliteDao dao;
|
private SatelliteDao dao;
|
||||||
|
|
||||||
public PluginDataObject[] decode(byte[] data) throws Exception {
|
public PluginDataObject[] decode(File file) throws Exception {
|
||||||
|
|
||||||
PluginDataObject[] retData = null;
|
PluginDataObject[] retData = null;
|
||||||
|
|
||||||
SatelliteRecord record = null;
|
SatelliteRecord record = null;
|
||||||
|
|
||||||
if ((data != null) && (data.length > 0)) {
|
if (file == null || (file.length() < 1))
|
||||||
|
return new PluginDataObject[0];
|
||||||
|
RandomAccessFile f = new RandomAccessFile(file, "r");
|
||||||
|
try {
|
||||||
|
// Read in enough data to cover the WMO heading and GINI header.
|
||||||
|
ByteBuffer byteBuffer = ByteBuffer.allocate(INITIAL_READ);
|
||||||
|
f.getChannel().read(byteBuffer);
|
||||||
|
byteBuffer.flip();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
data = removeWmoHeader(data);
|
removeWmoHeader(byteBuffer);
|
||||||
} catch (DecoderException e) {
|
} catch (DecoderException e) {
|
||||||
logger.error(e);
|
logger.error(e);
|
||||||
data = null;
|
byteBuffer = null;
|
||||||
}
|
}
|
||||||
if (data != null) {
|
if (byteBuffer != null) {
|
||||||
|
int offsetOfDataInFile = byteBuffer.position() + GINI_HEADER_SIZE;
|
||||||
Calendar calendar = Calendar.getInstance(TimeZone
|
Calendar calendar = Calendar.getInstance(TimeZone
|
||||||
.getTimeZone("GMT"));
|
.getTimeZone("GMT"));
|
||||||
ByteBuffer byteBuffer = null;
|
|
||||||
int intValue = 0;
|
int intValue = 0;
|
||||||
byte byteValue = 0;
|
byte byteValue = 0;
|
||||||
byte[] tempBytes = null;
|
byte[] tempBytes = null;
|
||||||
byte[] header = null;
|
|
||||||
byte threeBytesArray[] = new byte[3];
|
byte threeBytesArray[] = new byte[3];
|
||||||
|
|
||||||
record = new SatelliteRecord();
|
record = new SatelliteRecord();
|
||||||
|
|
||||||
if (isCompressed(data)) {
|
if (isCompressed(byteBuffer)) {
|
||||||
|
/* If the data is compressed, we assume it came from the SBN
|
||||||
|
* and will have a reasonable size such that we can have two
|
||||||
|
* copies of the data in memory at the same time. Ideally,
|
||||||
|
* SBN decompression should be performed upstream from EDEX
|
||||||
|
* and this code would be removed.
|
||||||
|
*/
|
||||||
|
byte[] data = new byte[(int) file.length() - byteBuffer.position()];
|
||||||
|
f.seek(byteBuffer.position());
|
||||||
|
f.readFully(data);
|
||||||
byte[][] retVal = decompressSatellite(data);
|
byte[][] retVal = decompressSatellite(data);
|
||||||
header = retVal[0];
|
byteBuffer = ByteBuffer.wrap(retVal[0]);
|
||||||
data = retVal[1];
|
tempBytes = retVal[1];
|
||||||
}
|
|
||||||
|
|
||||||
if (header == null) {
|
|
||||||
header = new byte[512];
|
|
||||||
System.arraycopy(data, 0, header, 0, 512);
|
|
||||||
// drop the header from the data in the header
|
|
||||||
byte[] fullTempBytes = new byte[data.length - 512];
|
|
||||||
System.arraycopy(data, 512, fullTempBytes, 0,
|
|
||||||
fullTempBytes.length);
|
|
||||||
int endOfGoodData = getIndex(fullTempBytes, 0);
|
|
||||||
tempBytes = new byte[endOfGoodData];
|
|
||||||
System.arraycopy(fullTempBytes, 0, tempBytes, 0,
|
|
||||||
endOfGoodData);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
tempBytes = data;
|
/* The code bellow performs absolute gets on the buffer, so
|
||||||
|
* it needs to be compacted.
|
||||||
|
*/
|
||||||
|
byteBuffer.compact();
|
||||||
|
byteBuffer.flip();
|
||||||
}
|
}
|
||||||
|
|
||||||
// create a byte buffer
|
|
||||||
byteBuffer = ByteBuffer.allocate(512);
|
|
||||||
|
|
||||||
// add the header
|
|
||||||
byteBuffer.put(header, 0, 512);
|
|
||||||
|
|
||||||
// get the scanning mode
|
// get the scanning mode
|
||||||
int scanMode = byteBuffer.get(37);
|
int scanMode = byteBuffer.get(37);
|
||||||
|
|
||||||
|
@ -264,6 +273,15 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
// get number of points along y-axis
|
// get number of points along y-axis
|
||||||
int ny = byteBuffer.getShort(18);
|
int ny = byteBuffer.getShort(18);
|
||||||
|
|
||||||
|
/* If input was SBN-compressed, we already have the data
|
||||||
|
* loaded. If not, load it now.
|
||||||
|
*/
|
||||||
|
if (tempBytes == null) {
|
||||||
|
tempBytes = new byte[nx * ny];
|
||||||
|
f.seek(offsetOfDataInFile);
|
||||||
|
f.readFully(tempBytes, 0, tempBytes.length);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Rotate image if necessary
|
* Rotate image if necessary
|
||||||
*/
|
*/
|
||||||
|
@ -409,6 +427,12 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
record.setMessageData(dataRec);
|
record.setMessageData(dataRec);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
f.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (record == null) {
|
if (record == null) {
|
||||||
retData = new PluginDataObject[0];
|
retData = new PluginDataObject[0];
|
||||||
|
@ -425,20 +449,17 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
*
|
*
|
||||||
* @throws DecoderException
|
* @throws DecoderException
|
||||||
* If WMO header is not found, or is incorrect.
|
* If WMO header is not found, or is incorrect.
|
||||||
* @return The byte array data with all leading information to the end of
|
* @param messageData
|
||||||
* the wmo header removed.
|
* Contains the start of the satellite data file. On return,
|
||||||
|
* the position is set the beginning of the GINI header.
|
||||||
*/
|
*/
|
||||||
private byte[] removeWmoHeader(byte[] messageData) throws DecoderException {
|
private void removeWmoHeader(ByteBuffer messageData) throws DecoderException {
|
||||||
|
|
||||||
int readSize = (messageData.length > 1024) ? 1024 : messageData.length;
|
|
||||||
|
|
||||||
byte[] retMessage = null;
|
|
||||||
|
|
||||||
// Copy to a char [], carefully, as creating a string from
|
// Copy to a char [], carefully, as creating a string from
|
||||||
// a byte [] with binary data can create erroneous data
|
// a byte [] with binary data can create erroneous data
|
||||||
char[] message = new char[readSize];
|
char[] message = new char[messageData.remaining()];
|
||||||
for (int i = 0; i < message.length; i++) {
|
for (int i = 0; i < message.length; i++) {
|
||||||
message[i] = (char) (messageData[i] & 0xFF);
|
message[i] = (char) (messageData.get() & 0xFF);
|
||||||
}
|
}
|
||||||
String msgStr = new String(message);
|
String msgStr = new String(message);
|
||||||
Matcher matcher = null;
|
Matcher matcher = null;
|
||||||
|
@ -448,9 +469,8 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
if (SAT_HDR_TT.equals(msgStr
|
if (SAT_HDR_TT.equals(msgStr
|
||||||
.substring(headerStart, headerStart + 2))) {
|
.substring(headerStart, headerStart + 2))) {
|
||||||
int startOfSatellite = matcher.end();
|
int startOfSatellite = matcher.end();
|
||||||
retMessage = new byte[messageData.length - startOfSatellite];
|
messageData.position(startOfSatellite);
|
||||||
System.arraycopy(messageData, startOfSatellite, retMessage, 0,
|
messageData.limit(messageData.capacity());
|
||||||
retMessage.length);
|
|
||||||
} else {
|
} else {
|
||||||
throw new DecoderException(
|
throw new DecoderException(
|
||||||
"First character of the WMO header must be 'T'");
|
"First character of the WMO header must be 'T'");
|
||||||
|
@ -458,21 +478,22 @@ public class SatelliteDecoder extends AbstractDecoder {
|
||||||
} else {
|
} else {
|
||||||
throw new DecoderException("Cannot decode an empty WMO header");
|
throw new DecoderException("Cannot decode an empty WMO header");
|
||||||
}
|
}
|
||||||
|
|
||||||
return retMessage;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks to see if the current satellite product is compressed.
|
* Checks to see if the current satellite product is compressed.
|
||||||
*
|
*
|
||||||
|
* Assumes messageData is a byte[]-backed ByteBuffer.
|
||||||
|
*
|
||||||
* @return A boolean indicating if the file is compressed or not
|
* @return A boolean indicating if the file is compressed or not
|
||||||
*/
|
*/
|
||||||
private boolean isCompressed(byte[] messageData) {
|
private boolean isCompressed(ByteBuffer messageData) {
|
||||||
boolean compressed = true;
|
boolean compressed = true;
|
||||||
byte[] placeholder = new byte[10];
|
byte[] placeholder = new byte[10];
|
||||||
Inflater decompressor = new Inflater();
|
Inflater decompressor = new Inflater();
|
||||||
try {
|
try {
|
||||||
decompressor.setInput(messageData);
|
decompressor.setInput(messageData.array(),
|
||||||
|
messageData.position(), messageData.remaining());
|
||||||
decompressor.inflate(placeholder);
|
decompressor.inflate(placeholder);
|
||||||
} catch (DataFormatException e) {
|
} catch (DataFormatException e) {
|
||||||
compressed = false;
|
compressed = false;
|
||||||
|
|
|
@ -100,6 +100,7 @@ public class StdTextSeparator extends WMOMessageSeparator {
|
||||||
|| ispanId.startsWith("FQGX40") || ispanId.startsWith("FDU")
|
|| ispanId.startsWith("FQGX40") || ispanId.startsWith("FDU")
|
||||||
|| ispanId.startsWith("UAXX") || ispanId.startsWith("FPCN")
|
|| ispanId.startsWith("UAXX") || ispanId.startsWith("FPCN")
|
||||||
|| ispanId.startsWith("WWPN20") || ispanId.startsWith("FAUS2")
|
|| ispanId.startsWith("WWPN20") || ispanId.startsWith("FAUS2")
|
||||||
|
|| ispanId.startsWith("FAUS30")
|
||||||
|| (ispanId.startsWith("TC") && !ispanId.startsWith("TCUS"))) {
|
|| (ispanId.startsWith("TC") && !ispanId.startsWith("TCUS"))) {
|
||||||
stdFlg = true;
|
stdFlg = true;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -84,6 +84,16 @@ import com.raytheon.uf.edex.database.plugin.PluginDao;
|
||||||
import com.raytheon.uf.edex.database.plugin.PluginFactory;
|
import com.raytheon.uf.edex.database.plugin.PluginFactory;
|
||||||
import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
*
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
* ?? ?? Initial Creation
|
||||||
|
* 1-3-2013 DR 15667 M.Porricelli Made EnvironParamsLevelTable.xml
|
||||||
|
* accessible from SITE level
|
||||||
|
*
|
||||||
|
**/
|
||||||
public class RPGEnvironmentalDataManager {
|
public class RPGEnvironmentalDataManager {
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||||
.getHandler(RPGEnvironmentalDataManager.class);
|
.getHandler(RPGEnvironmentalDataManager.class);
|
||||||
|
@ -143,12 +153,23 @@ public class RPGEnvironmentalDataManager {
|
||||||
LocalizationContext edexStaticBase = pathMgr.getContext(
|
LocalizationContext edexStaticBase = pathMgr.getContext(
|
||||||
LocalizationContext.LocalizationType.EDEX_STATIC,
|
LocalizationContext.LocalizationType.EDEX_STATIC,
|
||||||
LocalizationContext.LocalizationLevel.BASE);
|
LocalizationContext.LocalizationLevel.BASE);
|
||||||
|
|
||||||
File file = pathMgr.getFile(edexStaticBase, "rpgenvdata"
|
LocalizationContext edexStaticSite = pathMgr.getContext(
|
||||||
|
LocalizationContext.LocalizationType.EDEX_STATIC,
|
||||||
|
LocalizationContext.LocalizationLevel.SITE);
|
||||||
|
|
||||||
|
File basePathFile = pathMgr.getFile(edexStaticBase, "rpgenvdata"
|
||||||
|
+ File.separator + "EnvironParamsLevelTable.xml");
|
||||||
|
File sitePathFile = pathMgr.getFile(edexStaticSite, "rpgenvdata"
|
||||||
+ File.separator + "EnvironParamsLevelTable.xml");
|
+ File.separator + "EnvironParamsLevelTable.xml");
|
||||||
|
|
||||||
Unmarshaller u = Configuration.getUnmashaller();
|
if (sitePathFile.exists()) {
|
||||||
configuration = (Configuration) u.unmarshal(file);
|
Unmarshaller u = Configuration.getUnmashaller();
|
||||||
|
configuration = (Configuration) u.unmarshal(sitePathFile);
|
||||||
|
} else {
|
||||||
|
Unmarshaller u = Configuration.getUnmashaller();
|
||||||
|
configuration = (Configuration) u.unmarshal(basePathFile);
|
||||||
|
}
|
||||||
|
|
||||||
if (!validateConfiguration(configuration)) {
|
if (!validateConfiguration(configuration)) {
|
||||||
configuration = null;
|
configuration = null;
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
further_licensing_information.
|
further_licensing_information.
|
||||||
-->
|
-->
|
||||||
<configuration>
|
<configuration>
|
||||||
<model name="RUC236" description="RUC 40km" />
|
<model name="RUC130" description="RUC 13km" />
|
||||||
|
|
||||||
<!-- <inventoryHint levelType="MB" nLevels="36" /> -->
|
<!-- <inventoryHint levelType="MB" nLevels="36" /> -->
|
||||||
<inventoryHint levelType="SFC" nLevels="1" />
|
<inventoryHint levelType="SFC" nLevels="1" />
|
||||||
|
|
|
@ -37,6 +37,7 @@ import com.raytheon.uf.common.util.RunProcess;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Oct 28, 2010 bfarmer Initial creation
|
* Oct 28, 2010 bfarmer Initial creation
|
||||||
* Sep 19, 2011 10955 rferrel Use RunProcess
|
* Sep 19, 2011 10955 rferrel Use RunProcess
|
||||||
|
* Jan 10, 2012 4550 mgamazaychikov Fixed the sshCommand
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -150,14 +151,17 @@ public class FaxSender {
|
||||||
}
|
}
|
||||||
// Execute faxSender.csh on ldad fax script file (system exec)
|
// Execute faxSender.csh on ldad fax script file (system exec)
|
||||||
StringBuilder sshCommand = new StringBuilder();
|
StringBuilder sshCommand = new StringBuilder();
|
||||||
sshCommand.append("ssh ls1 -l ldad -n \"");
|
/*
|
||||||
|
* DR4550 - the sshCommand should be:
|
||||||
|
* ssh -n ls1 -l ldad $LDAD_EXTERNAL_HOME/bin/faxSender.csh filename
|
||||||
|
*/
|
||||||
|
sshCommand.append("ssh -n ls1 -l ldad ");
|
||||||
sshCommand.append(System.getenv("LDAD_EXTERNAL_HOME"));
|
sshCommand.append(System.getenv("LDAD_EXTERNAL_HOME"));
|
||||||
sshCommand.append("/bin/faxSender.csh ");
|
sshCommand.append("/bin/faxSender.csh ");
|
||||||
sshCommand.append(ldadScriptFilename);
|
sshCommand.append(ldadScriptFilename);
|
||||||
sshCommand.append("\"");
|
|
||||||
// DR#10955
|
// DR#10955
|
||||||
RunProcess sshCommandExec = RunProcess.getRunProcess().exec(
|
RunProcess sshCommandExec = RunProcess.getRunProcess().exec(
|
||||||
sshCommand.toString());
|
sshCommand.toString());
|
||||||
error = sshCommandExec.getStderr().trim();
|
error = sshCommandExec.getStderr().trim();
|
||||||
if (error.length() != 0) {
|
if (error.length() != 0) {
|
||||||
// Send back an appropriate error string.
|
// Send back an appropriate error string.
|
||||||
|
|
|
@ -320,10 +320,10 @@ FAUS26KZNY AAACWANY6
|
||||||
FAUS26KZOA AAACWAOA6
|
FAUS26KZOA AAACWAOA6
|
||||||
FAUS26KZOB AAACWAOB6
|
FAUS26KZOB AAACWAOB6
|
||||||
FAUS26KZSE AAACWASE6
|
FAUS26KZSE AAACWASE6
|
||||||
FAUS26KZTL AAACWATL6
|
FAUS26KZTL AAACWATL6
|
||||||
FAUS27KKCI MKCCFP01
|
|
||||||
FAUS28KKCI MKCCFP02
|
FAUS28KKCI MKCCFP02
|
||||||
FAUS29KKCI MKCCFP03
|
FAUS29KKCI MKCCFP03
|
||||||
|
FAUS30KKCI MKCCFP04
|
||||||
FBCA11KWBC AAA18AC11
|
FBCA11KWBC AAA18AC11
|
||||||
FBCA12KWBC AAA24AC11
|
FBCA12KWBC AAA24AC11
|
||||||
FBCA13KWBC AAA18AC13
|
FBCA13KWBC AAA18AC13
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/**
|
/**
|
||||||
* This software was developed and / or modified by Raytheon Company,
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
*
|
*
|
||||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
* This software product contains export-restricted data whose
|
* This software product contains export-restricted data whose
|
||||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
* to non-U.S. persons whether in the United States or abroad requires
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
* an export license or other authorization.
|
* an export license or other authorization.
|
||||||
*
|
*
|
||||||
* Contractor Name: Raytheon Company
|
* Contractor Name: Raytheon Company
|
||||||
* Contractor Address: 6825 Pine Street, Suite 340
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
* Mail Stop B8
|
* Mail Stop B8
|
||||||
* Omaha, NE 68106
|
* Omaha, NE 68106
|
||||||
* 402.291.0100
|
* 402.291.0100
|
||||||
*
|
*
|
||||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
* further licensing information.
|
* further licensing information.
|
||||||
**/
|
**/
|
||||||
|
@ -26,16 +26,17 @@ import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
import javax.xml.bind.annotation.XmlAttribute;
|
import javax.xml.bind.annotation.XmlAttribute;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* Implementation of Color class used in ColorMap
|
* Implementation of Color class used in ColorMap
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Aug 20, 2008 bclements Initial creation
|
* Aug 20, 2008 bclements Initial creation
|
||||||
|
* Jan 10, 2013 15648 ryu Added equals() method.
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author bclements
|
* @author bclements
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
|
@ -102,4 +103,18 @@ public class Color {
|
||||||
public void setGreen(float f) {
|
public void setGreen(float f) {
|
||||||
green = f;
|
green = f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj instanceof Color) {
|
||||||
|
Color c = (Color) obj;
|
||||||
|
if (alpha == c.alpha &&
|
||||||
|
red == c.red &&
|
||||||
|
blue == c.blue &&
|
||||||
|
green == c.green)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
/**
|
/**
|
||||||
* This software was developed and / or modified by Raytheon Company,
|
* This software was developed and / or modified by Raytheon Company,
|
||||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||||
*
|
*
|
||||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||||
* This software product contains export-restricted data whose
|
* This software product contains export-restricted data whose
|
||||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||||
* to non-U.S. persons whether in the United States or abroad requires
|
* to non-U.S. persons whether in the United States or abroad requires
|
||||||
* an export license or other authorization.
|
* an export license or other authorization.
|
||||||
*
|
*
|
||||||
* Contractor Name: Raytheon Company
|
* Contractor Name: Raytheon Company
|
||||||
* Contractor Address: 6825 Pine Street, Suite 340
|
* Contractor Address: 6825 Pine Street, Suite 340
|
||||||
* Mail Stop B8
|
* Mail Stop B8
|
||||||
* Omaha, NE 68106
|
* Omaha, NE 68106
|
||||||
* 402.291.0100
|
* 402.291.0100
|
||||||
*
|
*
|
||||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||||
* further licensing information.
|
* further licensing information.
|
||||||
**/
|
**/
|
||||||
|
@ -37,11 +37,11 @@ import com.raytheon.uf.common.serialization.ISerializableObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of a colormap
|
* Implementation of a colormap
|
||||||
*
|
*
|
||||||
* <pre>
|
* <pre>
|
||||||
*
|
*
|
||||||
* SOFTWARE HISTORY
|
* SOFTWARE HISTORY
|
||||||
*
|
*
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Feb 5, 2007 chammack Initial Creation.
|
* Feb 5, 2007 chammack Initial Creation.
|
||||||
|
@ -49,9 +49,10 @@ import com.raytheon.uf.common.serialization.ISerializableObject;
|
||||||
* Aug 20, 2008 bclement Added JaXB annotations and color class
|
* Aug 20, 2008 bclement Added JaXB annotations and color class
|
||||||
* Aug 20, 2008 dglazesk Added some interface pieces to make this more
|
* Aug 20, 2008 dglazesk Added some interface pieces to make this more
|
||||||
* usable
|
* usable
|
||||||
*
|
* Jan 10, 2013 15648 ryu Added removeDuplicates() method.
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author chammack
|
* @author chammack
|
||||||
* @version 1
|
* @version 1
|
||||||
*/
|
*/
|
||||||
|
@ -80,8 +81,8 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public ColorMap(String name, float[] red, float[] green, float[] blue) {
|
public ColorMap(String name, float[] red, float[] green, float[] blue) {
|
||||||
this.colors = new ArrayList<Color>();
|
this.colors = new ArrayList<Color>();
|
||||||
|
@ -96,7 +97,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a ColorMap using name and the list of colors in map.
|
* Creates a ColorMap using name and the list of colors in map.
|
||||||
*
|
*
|
||||||
* @param name
|
* @param name
|
||||||
* Name for the new ColorMap
|
* Name for the new ColorMap
|
||||||
* @param map
|
* @param map
|
||||||
|
@ -111,7 +112,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Do not instantiate directly, use GLTarget methods
|
* Do not instantiate directly, use GLTarget methods
|
||||||
*
|
*
|
||||||
* @param name
|
* @param name
|
||||||
* @param red
|
* @param red
|
||||||
* @param green
|
* @param green
|
||||||
|
@ -138,7 +139,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.uf.common.colormap.IColorMap#getBlue()
|
* @see com.raytheon.uf.common.colormap.IColorMap#getBlue()
|
||||||
*/
|
*/
|
||||||
public float[] getBlue() {
|
public float[] getBlue() {
|
||||||
|
@ -152,7 +153,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.uf.common.colormap.IColorMap#getGreen()
|
* @see com.raytheon.uf.common.colormap.IColorMap#getGreen()
|
||||||
*/
|
*/
|
||||||
public float[] getGreen() {
|
public float[] getGreen() {
|
||||||
|
@ -166,7 +167,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.uf.common.colormap.IColorMap#getRed()
|
* @see com.raytheon.uf.common.colormap.IColorMap#getRed()
|
||||||
*/
|
*/
|
||||||
public float[] getRed() {
|
public float[] getRed() {
|
||||||
|
@ -180,7 +181,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.uf.common.colormap.IColorMap#getSize()
|
* @see com.raytheon.uf.common.colormap.IColorMap#getSize()
|
||||||
*/
|
*/
|
||||||
public int getSize() {
|
public int getSize() {
|
||||||
|
@ -189,7 +190,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.uf.common.colormap.IColorMap#getAlpha()
|
* @see com.raytheon.uf.common.colormap.IColorMap#getAlpha()
|
||||||
*/
|
*/
|
||||||
public float[] getAlpha() {
|
public float[] getAlpha() {
|
||||||
|
@ -203,7 +204,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the buffer representation of the colormap
|
* Return the buffer representation of the colormap
|
||||||
*
|
*
|
||||||
* @return the colorMap buffer
|
* @return the colorMap buffer
|
||||||
*/
|
*/
|
||||||
public synchronized Buffer getColorMap() {
|
public synchronized Buffer getColorMap() {
|
||||||
|
@ -232,7 +233,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.raytheon.edex.colormap.IColorMap#getName()
|
* @see com.raytheon.edex.colormap.IColorMap#getName()
|
||||||
*/
|
*/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
|
@ -245,7 +246,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see java.lang.Object#toString()
|
* @see java.lang.Object#toString()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -328,7 +329,7 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
* wavelength to the maximum wavelength. If the reverse flag is set, then a
|
* wavelength to the maximum wavelength. If the reverse flag is set, then a
|
||||||
* reverse spectrum is generated. The red, green, and blue indexes are
|
* reverse spectrum is generated. The red, green, and blue indexes are
|
||||||
* returned through the calling arguments.
|
* returned through the calling arguments.
|
||||||
*
|
*
|
||||||
* @param numOfColors
|
* @param numOfColors
|
||||||
* @param minWaveLength
|
* @param minWaveLength
|
||||||
* @param maxWaveLength
|
* @param maxWaveLength
|
||||||
|
@ -409,4 +410,20 @@ public class ColorMap extends AbstractColorMap implements ISerializableObject {
|
||||||
return new Color((float) r, (float) g, (float) b);
|
return new Color((float) r, (float) g, (float) b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Removes duplicate entries.
|
||||||
|
*/
|
||||||
|
public void removeDuplicates() {
|
||||||
|
List<Color> colors = new ArrayList<Color>();
|
||||||
|
Color current = null;
|
||||||
|
for (Color color: this.colors) {
|
||||||
|
if (!color.equals(current)) {
|
||||||
|
colors.add(color);
|
||||||
|
current = color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.colors = colors;
|
||||||
|
changed = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ package com.raytheon.uf.common.comm;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
@ -71,6 +72,7 @@ import com.raytheon.uf.common.util.ByteArrayOutputStreamPool.ByteArrayOutputStre
|
||||||
* 03/02/11 #8045 rferrel Add connect reestablished message.
|
* 03/02/11 #8045 rferrel Add connect reestablished message.
|
||||||
* 07/17/12 #911 njensen Refactored significantly
|
* 07/17/12 #911 njensen Refactored significantly
|
||||||
* 08/09/12 15307 snaples Added putEntitiy in postStreamingEntity.
|
* 08/09/12 15307 snaples Added putEntitiy in postStreamingEntity.
|
||||||
|
* 01/07/13 DR 15294 D. Friedman Added streaming requests.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -434,6 +436,95 @@ public class HttpClient {
|
||||||
return executePostMethod(put);
|
return executePostMethod(put);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Post a message to an http address, and return the result as a byte array.
|
||||||
|
* <p>
|
||||||
|
* Implementation note: The given stream handler will be used at least
|
||||||
|
* twice: Once to determine the length, another to actually send the
|
||||||
|
* content. This is done because pypies does not accept chunked requests
|
||||||
|
* bodies.
|
||||||
|
*
|
||||||
|
* @param address
|
||||||
|
* @param handler the handler responsible for generating the message to be posted
|
||||||
|
* @return
|
||||||
|
* @throws CommunicationException
|
||||||
|
*/
|
||||||
|
public byte[] postBinary(String address, OStreamHandler handler) throws CommunicationException {
|
||||||
|
class OStreamEntity extends AbstractHttpEntity {
|
||||||
|
OStreamHandler handler;
|
||||||
|
long contentLength = -1;
|
||||||
|
|
||||||
|
public OStreamEntity(OStreamHandler handler) {
|
||||||
|
this.handler = handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public InputStream getContent() throws IOException,
|
||||||
|
IllegalStateException {
|
||||||
|
throw new IllegalStateException("OStreamEntity does not support getContent().");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getContentLength() {
|
||||||
|
if (contentLength < 0) {
|
||||||
|
class CountingStream extends OutputStream {
|
||||||
|
long count;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(int b) throws IOException {
|
||||||
|
++count;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(byte[] b) throws IOException {
|
||||||
|
count += b.length;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void write(byte[] b, int off, int len)
|
||||||
|
throws IOException {
|
||||||
|
count += len;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CountingStream cs = new CountingStream();
|
||||||
|
try {
|
||||||
|
handler.writeToStream(cs);
|
||||||
|
contentLength = cs.count;
|
||||||
|
} catch (CommunicationException e) {
|
||||||
|
// ignore
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return contentLength;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRepeatable() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isStreaming() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void writeTo(OutputStream stream) throws IOException {
|
||||||
|
try {
|
||||||
|
handler.writeToStream(stream);
|
||||||
|
} catch (CommunicationException e) {
|
||||||
|
throw new IOException(e.getMessage(), e.getCause());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
OStreamEntity entity = new OStreamEntity(handler);
|
||||||
|
HttpPost put = new HttpPost(address);
|
||||||
|
put.setEntity(entity);
|
||||||
|
|
||||||
|
return executePostMethod(put);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Post a string to an endpoint and stream the result back.
|
* Post a string to an endpoint and stream the result back.
|
||||||
*
|
*
|
||||||
|
@ -592,6 +683,15 @@ public class HttpClient {
|
||||||
throws CommunicationException;
|
throws CommunicationException;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Responsible for writing HTTP content to a stream. May be called
|
||||||
|
* more than once for a given entity. See postBinary(String, OStreamHandler)
|
||||||
|
* for details.
|
||||||
|
*/
|
||||||
|
public static interface OStreamHandler {
|
||||||
|
public void writeToStream(OutputStream os) throws CommunicationException;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Automatically reads a stream into a byte array and stores the byte array
|
* Automatically reads a stream into a byte array and stores the byte array
|
||||||
* in byteResult. Should only be used internally in HttpClient with
|
* in byteResult. Should only be used internally in HttpClient with
|
||||||
|
|
|
@ -61,6 +61,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory;
|
||||||
* Apr 11, 2012 #14691 Qinglu Lin For marine warnings, getFeAreaField() returns null.
|
* Apr 11, 2012 #14691 Qinglu Lin For marine warnings, getFeAreaField() returns null.
|
||||||
* So, do not add the returned value of getFeAreaField()
|
* So, do not add the returned value of getFeAreaField()
|
||||||
* to areaFields.
|
* to areaFields.
|
||||||
|
* Jan 9, 2013 15600 Qinglu Lin Execute "timezones = myTimeZones;" even if timezones != null.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -118,9 +119,7 @@ public class GeospatialFactory {
|
||||||
GeospatialData[] parentAreas = dataSet.getParentAreas();
|
GeospatialData[] parentAreas = dataSet.getParentAreas();
|
||||||
GeospatialData[] myTimeZones = dataSet.getTimezones();
|
GeospatialData[] myTimeZones = dataSet.getTimezones();
|
||||||
if (myTimeZones != null && myTimeZones.length > 0) {
|
if (myTimeZones != null && myTimeZones.length > 0) {
|
||||||
if (timezones == null) {
|
timezones = myTimeZones;
|
||||||
timezones = myTimeZones;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (GeospatialData tz : myTimeZones) {
|
for (GeospatialData tz : myTimeZones) {
|
||||||
tz.prepGeom = PreparedGeometryFactory.prepare(tz.geometry);
|
tz.prepGeom = PreparedGeometryFactory.prepare(tz.geometry);
|
||||||
|
|
|
@ -2,11 +2,13 @@ package com.raytheon.uf.common.pypies;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileNotFoundException;
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.OutputStream;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.raytheon.uf.common.comm.CommunicationException;
|
||||||
import com.raytheon.uf.common.comm.HttpClient;
|
import com.raytheon.uf.common.comm.HttpClient;
|
||||||
import com.raytheon.uf.common.datastorage.DuplicateRecordStorageException;
|
import com.raytheon.uf.common.datastorage.DuplicateRecordStorageException;
|
||||||
import com.raytheon.uf.common.datastorage.IDataStore;
|
import com.raytheon.uf.common.datastorage.IDataStore;
|
||||||
|
@ -31,6 +33,8 @@ import com.raytheon.uf.common.pypies.response.ErrorResponse;
|
||||||
import com.raytheon.uf.common.pypies.response.FileActionResponse;
|
import com.raytheon.uf.common.pypies.response.FileActionResponse;
|
||||||
import com.raytheon.uf.common.pypies.response.RetrieveResponse;
|
import com.raytheon.uf.common.pypies.response.RetrieveResponse;
|
||||||
import com.raytheon.uf.common.pypies.response.StoreResponse;
|
import com.raytheon.uf.common.pypies.response.StoreResponse;
|
||||||
|
import com.raytheon.uf.common.serialization.DynamicSerializationManager;
|
||||||
|
import com.raytheon.uf.common.serialization.DynamicSerializationManager.SerializationType;
|
||||||
import com.raytheon.uf.common.serialization.SerializationException;
|
import com.raytheon.uf.common.serialization.SerializationException;
|
||||||
import com.raytheon.uf.common.serialization.SerializationUtil;
|
import com.raytheon.uf.common.serialization.SerializationUtil;
|
||||||
import com.raytheon.uf.common.util.FileUtil;
|
import com.raytheon.uf.common.util.FileUtil;
|
||||||
|
@ -66,6 +70,7 @@ import com.raytheon.uf.common.util.FileUtil;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* May 27, 2010 njensen Initial creation
|
* May 27, 2010 njensen Initial creation
|
||||||
* Oct 01, 2010 rjpeter Added logging of requests over 300ms
|
* Oct 01, 2010 rjpeter Added logging of requests over 300ms
|
||||||
|
* Mon 07, 2013 DR 15294 D. Friedman Stream large requests
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author njensen
|
* @author njensen
|
||||||
|
@ -76,6 +81,8 @@ public class PyPiesDataStore implements IDataStore {
|
||||||
|
|
||||||
private static final long SIMPLE_LOG_TIME = 300;
|
private static final long SIMPLE_LOG_TIME = 300;
|
||||||
|
|
||||||
|
private static final long HUGE_REQUEST = 1024 * 1024 * 25;
|
||||||
|
|
||||||
protected static String address = null;
|
protected static String address = null;
|
||||||
|
|
||||||
protected List<IDataRecord> records = new ArrayList<IDataRecord>();
|
protected List<IDataRecord> records = new ArrayList<IDataRecord>();
|
||||||
|
@ -276,9 +283,19 @@ public class PyPiesDataStore implements IDataStore {
|
||||||
req.setOp(storeOp);
|
req.setOp(storeOp);
|
||||||
req.setRecords(records);
|
req.setRecords(records);
|
||||||
|
|
||||||
|
boolean huge = false;
|
||||||
|
long totalSize = 0;
|
||||||
|
for (IDataRecord rec : records) {
|
||||||
|
totalSize += rec.getSizeInBytes();
|
||||||
|
if (totalSize >= HUGE_REQUEST) {
|
||||||
|
huge = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
StorageStatus ss = null;
|
StorageStatus ss = null;
|
||||||
try {
|
try {
|
||||||
StoreResponse sr = (StoreResponse) sendRequest(req);
|
StoreResponse sr = (StoreResponse) sendRequest(req, huge);
|
||||||
ss = sr.getStatus();
|
ss = sr.getStatus();
|
||||||
String[] exc = sr.getExceptions();
|
String[] exc = sr.getExceptions();
|
||||||
IDataRecord[] failed = sr.getFailedRecords();
|
IDataRecord[] failed = sr.getFailedRecords();
|
||||||
|
@ -327,17 +344,20 @@ public class PyPiesDataStore implements IDataStore {
|
||||||
return ss;
|
return ss;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Object sendRequest(final AbstractRequest obj)
|
protected Object sendRequest(final AbstractRequest obj) throws StorageException {
|
||||||
|
return sendRequest(obj, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Object sendRequest(final AbstractRequest obj, boolean huge)
|
||||||
throws StorageException {
|
throws StorageException {
|
||||||
obj.setFilename(filename);
|
obj.setFilename(filename);
|
||||||
byte[] bytes = serializeRequest(obj);
|
|
||||||
|
|
||||||
initializeProperties();
|
initializeProperties();
|
||||||
|
|
||||||
byte[] result = null;
|
byte[] result = null;
|
||||||
long t0 = System.currentTimeMillis();
|
long t0 = System.currentTimeMillis();
|
||||||
try {
|
try {
|
||||||
result = HttpClient.getInstance().postBinary(address, bytes);
|
result = doSendRequest(obj, huge);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new StorageException(
|
throw new StorageException(
|
||||||
"Error communicating with pypies server", null, e);
|
"Error communicating with pypies server", null, e);
|
||||||
|
@ -359,6 +379,24 @@ public class PyPiesDataStore implements IDataStore {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected byte[] doSendRequest(final AbstractRequest obj, boolean huge) throws Exception {
|
||||||
|
if (huge) {
|
||||||
|
return HttpClient.getInstance().postBinary(address, new HttpClient.OStreamHandler() {
|
||||||
|
@Override
|
||||||
|
public void writeToStream(OutputStream os) throws CommunicationException {
|
||||||
|
try {
|
||||||
|
DynamicSerializationManager.getManager(SerializationType.Thrift).serialize(obj, os);
|
||||||
|
} catch (SerializationException e) {
|
||||||
|
throw new CommunicationException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
byte[] bytes = serializeRequest(obj);
|
||||||
|
return HttpClient.getInstance().postBinary(address, bytes);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* By default this method simply passes the request to
|
* By default this method simply passes the request to
|
||||||
* sendRequest(AbstractRequest). Method exists to be overridden for
|
* sendRequest(AbstractRequest). Method exists to be overridden for
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
|
<!--
|
||||||
|
This_software_was_developed_and_/_or_modified_by_Raytheon_Company,
|
||||||
|
pursuant_to_Contract_DG133W-05-CQ-1067_with_the_US_Government.
|
||||||
|
|
||||||
|
U.S._EXPORT_CONTROLLED_TECHNICAL_DATA
|
||||||
|
This_software_product_contains_export-restricted_data_whose
|
||||||
|
export/transfer/disclosure_is_restricted_by_U.S._law._Dissemination
|
||||||
|
to_non-U.S._persons_whether_in_the_United_States_or_abroad_requires
|
||||||
|
an_export_license_or_other_authorization.
|
||||||
|
|
||||||
|
Contractor_Name:________Raytheon_Company
|
||||||
|
Contractor_Address:_____6825_Pine_Street,_Suite_340
|
||||||
|
________________________Mail_Stop_B8
|
||||||
|
________________________Omaha,_NE_68106
|
||||||
|
________________________402.291.0100
|
||||||
|
|
||||||
|
See_the_AWIPS_II_Master_Rights_File_("Master_Rights_File.pdf")_for
|
||||||
|
further_licensing_information.
|
||||||
|
-->
|
||||||
|
<pointDataDbDescription>
|
||||||
|
<parameter name="latitude" queryName="location.latitude" type="FLOAT" unit="°" />
|
||||||
|
<parameter name="longitude" queryName="location.longitude" type="FLOAT" unit="°" />
|
||||||
|
<parameter name="elevation" queryName="location.elevation" type="FLOAT" unit="m" />
|
||||||
|
<parameter name="stationName" queryName="location.stationId" type="STRING" />
|
||||||
|
<parameter name="qcType" queryName="qcType" type="STRING" />
|
||||||
|
<parameter name="dataURI" queryName="dataURI" type="STRING" />
|
||||||
|
</pointDataDbDescription>
|
|
@ -60,7 +60,7 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* 02/17/2009 1981 dhladky Initial Creation.
|
* 02/17/2009 1981 dhladky Initial Creation.
|
||||||
*
|
* 01/07/2013 DR 15647 gzhang Use logger.warn for null earlyVilURI/earlyCZURI.
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author dhladky
|
* @author dhladky
|
||||||
|
@ -372,8 +372,9 @@ public class QPFConfig {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (earlyVilURI == null || earlyCZURI == null) {
|
if (earlyVilURI == null || earlyCZURI == null) {
|
||||||
throw new Exception("QPFConfig " + icao
|
qpfgen.logger.warn("QPFConfig: No previous data for QPF. Check the RADAR OP Mode.");// DR 15647
|
||||||
+ ": Radar Record request failed, no previous data.");
|
//throw new Exception("QPFConfig " + icao
|
||||||
|
//+ ": Radar Record request failed, no previous data.");
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -518,8 +519,8 @@ public class QPFConfig {
|
||||||
return true;
|
return true;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
qpfgen.logger
|
qpfgen.logger
|
||||||
.error("QPFConfig: Couldn't create all needed RadarRecords: "
|
.error("QPFConfig: Some RadarRecords cannot be created: "
|
||||||
+ e.getMessage());
|
+ e.getMessage());// DR 15647
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
Name: awips2-ldm
|
Name: awips2-ldm
|
||||||
Summary: AWIPS II LDM Distribution
|
Summary: AWIPS II LDM Distribution
|
||||||
Version: 6.8.1
|
Version: 6.8.1
|
||||||
Release: 27
|
Release: 28
|
||||||
Group: AWIPSII
|
Group: AWIPSII
|
||||||
BuildRoot: /tmp
|
BuildRoot: /tmp
|
||||||
URL: N/A
|
URL: N/A
|
||||||
|
|
|
@ -411,7 +411,7 @@ IDS|DDPLUS ^(FOUS[67].) (....) (..)(..)(..)
|
||||||
# FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
# FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
||||||
#
|
#
|
||||||
# separate out svrwx lsr and GSM misc adm messages
|
# separate out svrwx lsr and GSM misc adm messages
|
||||||
IDS|DDPLUS|HDS ^(N[A-VYZ]....) (.{4}) (..)(..)(..)
|
IDS|DDPLUS ^(N[A-VYZ]....) (.{4}) (..)(..)(..)
|
||||||
FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
||||||
IDS|DDPLUS ^(NWUS[01346-9].) (.{4}) (..)(..)(..)
|
IDS|DDPLUS ^(NWUS[01346-9].) (.{4}) (..)(..)(..)
|
||||||
FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
FILE -overwrite -log -close -edex /data_store/misc_adm_messages/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
||||||
|
@ -432,6 +432,10 @@ IDS|DDPLUS ^(R.{5}) (.{4}) (..)(..)(..)
|
||||||
IDS|DDPLUS ^(SM[UCM][SNX]..) (.{4}) (..)(..)(..)
|
IDS|DDPLUS ^(SM[UCM][SNX]..) (.{4}) (..)(..)(..)
|
||||||
FILE -overwrite -log -close -edex /data_store/synoptic/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
FILE -overwrite -log -close -edex /data_store/synoptic/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
||||||
|
|
||||||
|
# DR 15716 - Add in SHUS products for fire weather obs (and others)
|
||||||
|
IDS|DDPLUS ^(SHUS..) (.{4}) (..)(..)(..)
|
||||||
|
FILE -overwrite -log -close -edex /data_store/misc_sfc_obs/(\3:yyyy)(\3:mm)\3/\4/\1_\2_\3\4\5_(seq).%Y%m%d%H
|
||||||
|
|
||||||
# AWIPS1: TEXT ^S[AP]US[78]0.* /point/metar/Raw
|
# AWIPS1: TEXT ^S[AP]US[78]0.* /point/metar/Raw
|
||||||
# AWIPS1: TEXT ^S[AP]US4.* /point/metar/Raw
|
# AWIPS1: TEXT ^S[AP]US4.* /point/metar/Raw
|
||||||
# AWIPS1: TEXT ^S[AP]U[CEMW]6.* /point/metar/Raw
|
# AWIPS1: TEXT ^S[AP]U[CEMW]6.* /point/metar/Raw
|
||||||
|
|
Loading…
Add table
Reference in a new issue