Merge branch 'master_14.2.4' (14.2.4-7) into omaha_14.2.4
Former-commit-id: 2391bc928e8798f022c3ca5ad8a1d5619ae4e2a4
This commit is contained in:
commit
afa45bf919
48 changed files with 1852 additions and 218 deletions
|
@ -2,19 +2,19 @@
|
|||
<!--
|
||||
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.
|
||||
-->
|
||||
|
@ -26,50 +26,20 @@
|
|||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b" />
|
||||
<capability xsi:type="pointCapability" pointStyle="NONE" />
|
||||
<capability xsi:type="labelableCapability" labelField="id" />
|
||||
<capability xsi:type="magnificationCapability" magnification="1.0" />
|
||||
<capability xsi:type="densityCapability" density="1.0" />
|
||||
<capability xsi:type="labelableCapability" labelField="name" />
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true"
|
||||
outlineWidth="1" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" isVisible="true" />
|
||||
<resourceData xsi:type="mapResourceGroupData">
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b" />
|
||||
<capability xsi:type="labelableCapability" labelField="name" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" isVisible="true">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0" />
|
||||
</properties>
|
||||
<resourceData xsi:type="lpiResourceData">
|
||||
<filename>cities.lpi</filename>
|
||||
<mapName>Cities</mapName>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false"
|
||||
isVisible="true">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0" />
|
||||
</properties>
|
||||
<resourceData xsi:type="dbPointMapResourceData">
|
||||
<goodnessField>prog_disc</goodnessField>
|
||||
<table>mapdata.city</table>
|
||||
<mapName>Cities</mapName>
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b" />
|
||||
<capability xsi:type="labelableCapability" labelField="name" />
|
||||
outlineWidth="1" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false"
|
||||
isVisible="true">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0" />
|
||||
</properties>
|
||||
<resourceData xsi:type="dbPointMapResourceData">
|
||||
<table>mapdata.city</table>
|
||||
<mapName>Cities</mapName>
|
||||
</resourceData>
|
||||
</resource>
|
||||
</resourceData>
|
||||
</resource>
|
||||
</descriptor>
|
||||
|
|
|
@ -22,35 +22,6 @@
|
|||
<displayList>
|
||||
<displays xsi:type="mapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<descriptor xsi:type="mapDescriptor">
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b" />
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" isVisible="true" />
|
||||
<resourceData xsi:type="mapResourceGroupData">
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true"
|
||||
outlineWidth="1" />
|
||||
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b" />
|
||||
<capability xsi:type="labelableCapability" labelField="name"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="true"
|
||||
isHoverOn="false" isVisible="true">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0" />
|
||||
</properties>
|
||||
<resourceData xsi:type="dbPointMapResourceData">
|
||||
<table>mapdata.airport</table>
|
||||
<mapName>Airports</mapName>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
|
@ -66,9 +37,6 @@
|
|||
<resourceData xsi:type="lpiResourceData">
|
||||
<filename>airport.lpi</filename>
|
||||
<mapName>Airports</mapName>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<mapName>Airports</mapName>
|
||||
</resourceData>
|
||||
</resource>
|
||||
</descriptor>
|
||||
|
|
|
@ -22,37 +22,6 @@
|
|||
<displayList>
|
||||
<displays xsi:type="mapRenderableDisplay" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<descriptor xsi:type="mapDescriptor">
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b" />
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" />
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false" isVisible="true" />
|
||||
<resourceData xsi:type="mapResourceGroupData">
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true"
|
||||
outlineWidth="1" />
|
||||
<capability xsi:type="colorableCapability" colorAsString="#9b9b9b" />
|
||||
<capability xsi:type="pointCapability" pointStyle="NONE"/>
|
||||
<capability xsi:type="labelableCapability" labelField="id"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false" isMapLayer="true" isHoverOn="false"
|
||||
isVisible="true">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0" />
|
||||
</properties>
|
||||
<resourceData xsi:type="dbPointMapResourceData">
|
||||
<table>mapdata.fix</table>
|
||||
<mapName>Fixes/Intersections</mapName>
|
||||
<constraint>type != 'NU'</constraint>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties>
|
||||
<capabilities>
|
||||
|
@ -70,9 +39,6 @@
|
|||
<mapName>Fixes/Intersections</mapName>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<mapName>Fixes/Intersections</mapName>
|
||||
</resourceData>
|
||||
</resource>
|
||||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
<bundle>
|
||||
<displayList>
|
||||
<displays xsi:type="d2DMapRenderableDisplay"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
<descriptor xsi:type="mapDescriptor">
|
||||
<resource>
|
||||
<loadProperties loadWithoutData="true">
|
||||
<capabilities />
|
||||
</loadProperties>
|
||||
<properties isSystemResource="false" isBlinking="false"
|
||||
isMapLayer="false" isHoverOn="false" isVisible="true" />
|
||||
<resourceData xsi:type="wouWcnWatchesResourceData"
|
||||
isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true"
|
||||
name="Convective Watches">
|
||||
<metadataMap>
|
||||
<mapping key="phensig">
|
||||
<constraint constraintValue="TO.A,SV.A"
|
||||
constraintType="IN" />
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="warning" constraintType="EQUALS" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
</resourceData>
|
||||
</resource>
|
||||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
</bundle>
|
|
@ -20,8 +20,8 @@
|
|||
-->
|
||||
<menuTemplate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||
|
||||
<contribute xsi:type="bundleItem" file="bundles/ncepHydro/SPCWatchPlot.xml"
|
||||
menuText="SPC Watches" id="spcWatches">
|
||||
<contribute xsi:type="bundleItem" file="bundles/ncepHydro/ConvectiveWatchPlot.xml"
|
||||
menuText="Convective Watches" id="convectiveWatches">
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/ncepHydro/SvrWxPlot.xml"
|
||||
menuText="Svr Wx Plot" id="spcWxPlot">
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<?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.
|
||||
-->
|
||||
<DerivedParameter abbreviation="BLI" name="Best Lifted Index" unit="K" >
|
||||
<Method name="Alias">
|
||||
<Field abbreviation="4LFTX"/>
|
||||
</Method>
|
||||
</DerivedParameter>
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
<?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.
|
||||
-->
|
||||
<DerivedParameter unit="" name="Max Lightning Threat (flashes/km^2)" abbreviation="LTNG">
|
||||
</DerivedParameter>
|
|
@ -0,0 +1,26 @@
|
|||
<?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.
|
||||
-->
|
||||
<DerivedParameter abbreviation="MAXDVV" name="Max Downdraft Vertical Velocity" unit="m/s" >
|
||||
<Method name="Alias">
|
||||
<Field abbreviation="MAXDVV1hr"/>
|
||||
</Method>
|
||||
</DerivedParameter>
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<?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.
|
||||
-->
|
||||
<DerivedParameter abbreviation="MAXUVV" name="Max Updraft Vertical Velocity" unit="m/s" >
|
||||
<Method name="Alias">
|
||||
<Field abbreviation="MAXUVV1hr"/>
|
||||
</Method>
|
||||
</DerivedParameter>
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<?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.
|
||||
-->
|
||||
<DerivedParameter abbreviation="MXREF" name="Max 1hr CAPPI" unit="dB" >
|
||||
<Method name="Alias" >
|
||||
<Field abbreviation="MAXREF1hr" />
|
||||
</Method>
|
||||
</DerivedParameter>
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<?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.
|
||||
-->
|
||||
<DerivedParameter abbreviation="MAXUPHL" name="Max Updraft Helicity" unit="m^2/s^2" >
|
||||
<Method name="Alias" >
|
||||
<Field abbreviation="MXUPHL1hr" />
|
||||
</Method>
|
||||
</DerivedParameter>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<DerivedParameter abbreviation="MaxWHRRR" name="Maximum 1hr Wind Gust" unit="m/s">
|
||||
<Method levels="Surface" models="HRRR" name="Max">
|
||||
<Field abbreviation="WGS1hr" />
|
||||
<Field abbreviation="WGS" />
|
||||
</Method>
|
||||
</DerivedParameter>
|
|
@ -35,7 +35,7 @@
|
|||
<Method name="Alias">
|
||||
<Field abbreviation="PAcc"/>
|
||||
</Method>
|
||||
<Method name="Alias" models="RUC130">
|
||||
<Method name="Alias" models="RUC130 HRRR">
|
||||
<Field abbreviation="TP1hr"/>
|
||||
</Method>
|
||||
<Method name="Add">
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<DerivedParameter abbreviation="WGS1hr" name="Max 1-hr Wind Gust Speed" unit="m/s">
|
||||
<Method name="Alias" levels="Surface">
|
||||
<Field abbreviation="WGS1hr" level="10FHAG"/>
|
||||
</Method>
|
||||
<Method name="Alias" levels="Surface">
|
||||
<Field abbreviation="WS1hr" level="10FHAG"/>
|
||||
</Method>
|
||||
<Method name="Vector" levels="Surface" >
|
||||
<Field abbreviation="MAXUW1hr" level="FHAG10" />
|
||||
<Field abbreviation="MAXVW1hr" level="FHAG10" />
|
||||
</Method>
|
||||
</DerivedParameter>
|
|
@ -455,12 +455,9 @@ public class OtherPrecipOptions {
|
|||
// // do nothing
|
||||
// }
|
||||
|
||||
if (clientdata == 1) {
|
||||
// do nothing
|
||||
}
|
||||
|
||||
|
||||
/* Rendering the grids and MAPs. */
|
||||
else if (clientdata == 0) {
|
||||
if (clientdata == 0) {
|
||||
|
||||
BadValues bv = new BadValues();
|
||||
bv.update_bad_values(DailyQcUtils.pcpn_day);
|
||||
|
@ -472,16 +469,18 @@ public class OtherPrecipOptions {
|
|||
if (DailyQcUtils.pcpn_day == 0
|
||||
&& (DailyQcUtils.curHr00_06 == 1
|
||||
|| DailyQcUtils.curHr06_12 == 1 || DailyQcUtils.curHr18_00 == 1)) {
|
||||
System.out.println("Not estimating partial point or daily stations.");
|
||||
// don't estimate
|
||||
} else {
|
||||
|
||||
EstDailyStations ed = new EstDailyStations();
|
||||
ed.estimate_daily_stations(DailyQcUtils.pcpn_day,
|
||||
DailyQcUtils.precip_stations, num_stations);
|
||||
|
||||
System.out.println("Estimating daily stations.");
|
||||
EstPartStations ep = new EstPartStations();
|
||||
ep.estimate_partial_stations(DailyQcUtils.pcpn_day,
|
||||
DailyQcUtils.precip_stations, num_stations);
|
||||
System.out.println("Estimating partial stations.");
|
||||
}
|
||||
|
||||
QCStations qs = new QCStations();
|
||||
|
|
|
@ -64,6 +64,7 @@ import com.raytheon.viz.ui.editor.IMultiPaneEditor;
|
|||
* Sep 23, 2008 randerso Initial creation
|
||||
* Apr 30, 2013 lbousaidi made seconds in the date/Time
|
||||
* fields visible.
|
||||
* Aug 26, 2014 14578 snaples Added Ending Hydrologic Date selection.
|
||||
* </pre>
|
||||
*
|
||||
* @author randerso
|
||||
|
@ -79,8 +80,12 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
}
|
||||
|
||||
private Calendar cal;
|
||||
|
||||
private Calendar hydroCal;
|
||||
|
||||
public static Date prevDate;
|
||||
|
||||
public static Date prevHydDate;
|
||||
|
||||
public static String prevArea;
|
||||
|
||||
|
@ -93,6 +98,12 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
private Spinner hourSpinner;
|
||||
|
||||
private Spinner daysSpinner;
|
||||
|
||||
private Text hydyearText;
|
||||
|
||||
private Text hydmonthText;
|
||||
|
||||
private Spinner hyddaySpinner;
|
||||
|
||||
private Map<Date, MPEDateInfo> dateMap;
|
||||
|
||||
|
@ -118,6 +129,8 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
|
||||
private Combo areaCombo;
|
||||
|
||||
private static Date currentHydroEndingDate;
|
||||
|
||||
public ChooseDataPeriodDialog(Shell parentShell) {
|
||||
super(parentShell);
|
||||
setBlockOnOpen(false);
|
||||
|
@ -144,8 +157,13 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
dateMap = dataMgr.getDateMap(false);
|
||||
qcEnable = MPEDisplayManager.isMpeQcOptionEnabled();
|
||||
cal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
hydroCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
|
||||
prevDate = displayMgr.getCurrentEditDate();
|
||||
cal.setTime(prevDate);
|
||||
if(prevHydDate == null){
|
||||
prevHydDate = prevDate;
|
||||
}
|
||||
hydroCal.setTime(prevHydDate);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -313,8 +331,59 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
gageOptionsGroup.setLayout(layout);
|
||||
gageOptionsGroup.setText("6/24 hr gage edit options");
|
||||
|
||||
new Label(gageOptionsGroup, SWT.NONE);
|
||||
// create ending hydro date area
|
||||
|
||||
Label hydrodateLabel = new Label(gageOptionsGroup, SWT.NONE);
|
||||
hydrodateLabel.setText("Ending Hydrologic Date: ");
|
||||
new Label(gageOptionsGroup, SWT.None);
|
||||
|
||||
Composite hydrodateComp = new Composite(gageOptionsGroup, SWT.NONE);
|
||||
GridData hydrodata = new GridData(SWT.FILL, SWT.DEFAULT, true, false);
|
||||
hydrodateComp.setLayoutData(hydrodata);
|
||||
GridLayout hydlayout = new GridLayout(3, false);
|
||||
hydrodateComp.setLayout(hydlayout);
|
||||
|
||||
Label hydyearLabel = new Label(hydrodateComp, SWT.NONE);
|
||||
hydyearLabel.setText("Ending Year");
|
||||
|
||||
Label hydmonthLabel = new Label(hydrodateComp, SWT.NONE);
|
||||
hydmonthLabel.setText("Month");
|
||||
|
||||
Label hyddayLabel = new Label(hydrodateComp, SWT.NONE);
|
||||
hyddayLabel.setText("Day");
|
||||
|
||||
hydyearText = new Text(hydrodateComp, SWT.BORDER | SWT.READ_ONLY);
|
||||
hydrodata = new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false);
|
||||
hydrodata.widthHint = 100;
|
||||
hydyearText.setLayoutData(hydrodata);
|
||||
|
||||
hydmonthText = new Text(hydrodateComp, SWT.BORDER | SWT.READ_ONLY);
|
||||
hydrodata = new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false);
|
||||
hydrodata.widthHint = 50;
|
||||
hydmonthText.setLayoutData(hydrodata);
|
||||
|
||||
hyddaySpinner = new Spinner(hydrodateComp, SWT.BORDER | SWT.READ_ONLY);
|
||||
hydrodata = new GridData(SWT.DEFAULT, SWT.DEFAULT, false, false);
|
||||
hydrodata.widthHint = 50;
|
||||
hyddaySpinner.setLayoutData(data);
|
||||
hyddaySpinner.setMinimum(0);
|
||||
hyddaySpinner.setMaximum(32);
|
||||
hyddaySpinner.addSelectionListener(new SelectionAdapter() {
|
||||
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
int day = hyddaySpinner.getSelection();
|
||||
|
||||
hydroCal.set(Calendar.DAY_OF_MONTH, day);
|
||||
|
||||
updateTimeControls();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
new Label(gageOptionsGroup, SWT.None);
|
||||
new Label(gageOptionsGroup, SWT.None);
|
||||
Label selectAreaLabel = new Label(gageOptionsGroup, SWT.NONE);
|
||||
selectAreaLabel.setText("Select Area");
|
||||
data = new GridData(SWT.CENTER, SWT.DEFAULT, false, false);
|
||||
|
@ -373,6 +442,8 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
public void widgetSelected(SelectionEvent e) {
|
||||
displayMgr.setDqcDays(daysSpinner.getSelection());
|
||||
prevArea = areaCombo.getItem(areaCombo.getSelectionIndex());
|
||||
setCurrentHydroEditDate(getHydroTime());
|
||||
|
||||
if (QcPrecipOptionsDialog.isFinished() == false) {
|
||||
QcPrecipOptionsDialog.destroy(false);
|
||||
}
|
||||
|
@ -400,6 +471,8 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
public void widgetSelected(SelectionEvent e) {
|
||||
displayMgr.setDqcDays(daysSpinner.getSelection());
|
||||
prevArea = areaCombo.getItem(areaCombo.getSelectionIndex());
|
||||
setCurrentHydroEditDate(getHydroTime());
|
||||
|
||||
if (QcTempOptionsDialog.isFinished() == false) {
|
||||
QcTempOptionsDialog.destroy(false);
|
||||
}
|
||||
|
@ -427,6 +500,8 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
public void widgetSelected(SelectionEvent e) {
|
||||
displayMgr.setDqcDays(daysSpinner.getSelection());
|
||||
prevArea = areaCombo.getItem(areaCombo.getSelectionIndex());
|
||||
setCurrentHydroEditDate(getHydroTime());
|
||||
|
||||
if (QcFreezeOptionsDialog.isFinished() == false) {
|
||||
QcFreezeOptionsDialog.destroy(false);
|
||||
}
|
||||
|
@ -454,13 +529,19 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
if (cal.getTime().before(dataMgr.getEarliestDate())
|
||||
|| cal.getTime().after(dataMgr.getLatestDate())) {
|
||||
cal.setTime(prevDate);
|
||||
hydroCal.setTime(prevHydDate);
|
||||
}
|
||||
prevDate = cal.getTime();
|
||||
prevHydDate = hydroCal.getTime();
|
||||
|
||||
yearText.setText(Integer.toString(cal.get(Calendar.YEAR)));
|
||||
monthText.setText(Integer.toString(cal.get(Calendar.MONTH) + 1));
|
||||
daySpinner.setSelection(cal.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
|
||||
hydyearText.setText(Integer.toString(hydroCal.get(Calendar.YEAR)));
|
||||
hydmonthText.setText(Integer.toString(hydroCal.get(Calendar.MONTH) + 1));
|
||||
hyddaySpinner.setSelection(hydroCal.get(Calendar.DAY_OF_MONTH));
|
||||
|
||||
hourSpinner.setSelection(cal.get(Calendar.HOUR_OF_DAY));
|
||||
|
||||
if (dateMap.containsKey(cal.getTime()) == false) {
|
||||
|
@ -502,6 +583,19 @@ public class ChooseDataPeriodDialog extends CaveJFACEDialog {
|
|||
public Date getTime() {
|
||||
return cal.getTime();
|
||||
}
|
||||
|
||||
public Date getHydroTime(){
|
||||
return hydroCal.getTime();
|
||||
}
|
||||
|
||||
private void setCurrentHydroEditDate(Date hydroTime) {
|
||||
currentHydroEndingDate = hydroTime;
|
||||
}
|
||||
|
||||
public static Date getCurrentHydroEditDate(){
|
||||
return currentHydroEndingDate;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the selected year;
|
||||
|
|
|
@ -67,6 +67,7 @@ import com.raytheon.viz.ui.perspectives.VizPerspectiveListener;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul, 7 2009 snaples Initial creation
|
||||
* Sep 11, 2013 #2353 lvenable Fixed cursor memory leak.
|
||||
* Aug 26, 2014 14578 snaples Changed the way we get current data to use new ending hydologic date.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -195,8 +196,8 @@ public class QcFreezeOptionsDialog extends AbstractMPEDialog {
|
|||
Shell parent = this.getParent();
|
||||
Display display = parent.getDisplay();
|
||||
MPEDisplayManager displayMgr = MPEDisplayManager.getCurrent();
|
||||
Date prevDate = displayMgr.getCurrentEditDate();
|
||||
Date currDate = ChooseDataPeriodDialog.prevDate;
|
||||
Date prevDate = ChooseDataPeriodDialog.getCurrentHydroEditDate();
|
||||
Date currDate = ChooseDataPeriodDialog.prevHydDate;
|
||||
String QcArea = ChooseDataPeriodDialog.prevArea;
|
||||
AppsDefaults appDefaults = AppsDefaults.getInstance();
|
||||
DisplayFieldData df = displayMgr.getDisplayFieldType();
|
||||
|
|
|
@ -67,6 +67,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Ts;
|
|||
* Mar 7, 2013 15657 lbousaidi fixed DQC slider and added listener to the Keys
|
||||
* when pressed.
|
||||
* Sep 11, 2013 #2353 lvenable Fixed cursor memory leak.
|
||||
* Aug 26, 2014 14578 snaples Changed the way we get the date, to use new ending hydro date field.
|
||||
* </pre>
|
||||
*
|
||||
* @author snaples
|
||||
|
@ -207,8 +208,8 @@ public class QcPrecipOptionsDialog extends AbstractMPEDialog {
|
|||
Shell parent = this.getParent();
|
||||
Display display = parent.getDisplay();
|
||||
MPEDisplayManager displayMgr = MPEDisplayManager.getCurrent();
|
||||
Date prevDate = displayMgr.getCurrentEditDate();
|
||||
Date currDate = ChooseDataPeriodDialog.prevDate;
|
||||
Date prevDate = ChooseDataPeriodDialog.getCurrentHydroEditDate();
|
||||
Date currDate = ChooseDataPeriodDialog.prevHydDate;
|
||||
String QcArea = ChooseDataPeriodDialog.prevArea;
|
||||
AppsDefaults appDefaults = AppsDefaults.getInstance();
|
||||
DisplayFieldData df = displayMgr.getDisplayFieldType();
|
||||
|
|
|
@ -64,6 +64,7 @@ import com.raytheon.viz.mpe.util.DailyQcUtils.Ts;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 12, 2008 snaples Initial creation
|
||||
* Sep 11, 2013 #2353 lvenable Fixed cursor memory leak.
|
||||
* Aug 26, 2014 14578 snaples Changed the way we get current data to use new ending hydologic date.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -196,8 +197,8 @@ public class QcTempOptionsDialog extends AbstractMPEDialog {
|
|||
Shell parent = this.getParent();
|
||||
Display display = parent.getDisplay();
|
||||
MPEDisplayManager displayMgr = MPEDisplayManager.getCurrent();
|
||||
Date prevDate = displayMgr.getCurrentEditDate();
|
||||
Date currDate = ChooseDataPeriodDialog.prevDate;
|
||||
Date prevDate = ChooseDataPeriodDialog.getCurrentHydroEditDate();
|
||||
Date currDate = ChooseDataPeriodDialog.prevHydDate;
|
||||
String QcArea = ChooseDataPeriodDialog.prevArea;
|
||||
AppsDefaults appDefaults = AppsDefaults.getInstance();
|
||||
DisplayFieldData df = displayMgr.getDisplayFieldType();
|
||||
|
|
|
@ -184,8 +184,8 @@ public class InitPrecipClimo {
|
|||
precip_stations.set(index, nstation);
|
||||
nstation = null;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
++index;
|
||||
}
|
||||
|
||||
in.close();
|
||||
|
|
|
@ -84,6 +84,7 @@ public class ReadPrecipA {
|
|||
try {
|
||||
|
||||
in = new BufferedReader(new FileReader(preca));
|
||||
System.out.println("Reading point file: " + preca);
|
||||
|
||||
for (j = 0; j < 5; j++) {
|
||||
number_found[j] = 0;
|
||||
|
|
|
@ -4398,7 +4398,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
.getProductCategory(token)
|
||||
+ tdm.getProductDesignator(token);
|
||||
// Set the header text field.
|
||||
if (bbbid.equals("NOR") || tdm.getAfosPil(token) != null) {
|
||||
if (bbbid.equals("NOR") || (bbbid.isEmpty() && tdm.getAfosPil(token) != null)) {
|
||||
String wmoId = tdm.getWmoId(token);
|
||||
wmoId = (wmoId.length() > 0 ? wmoId : "-");
|
||||
String siteId = tdm.getSiteId(token);
|
||||
|
|
|
@ -0,0 +1,260 @@
|
|||
<bundle xmlns:ns2="group">
|
||||
<displayList>
|
||||
<displays xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="d2DMapRenderableDisplay" scale="CONUS" density="1.0" magnification="1.0" zoomLevel="1.0" mapCenter="-66.2005121984067 35.94909693622639 0.0">
|
||||
<descriptor xsi:type="mapDescriptor">
|
||||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="BARB" loadWithoutData="true">
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties renderingOrderId="CONTOUR" isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
|
||||
</properties>
|
||||
<resourceData xsi:type="gridResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||
<metadataMap>
|
||||
<mapping key="info.parameter.abbreviation">
|
||||
<constraint constraintValue="Wind" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="${modelName}" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.leveltwovalue">
|
||||
<constraint constraintValue="-999999" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.masterLevel.name">
|
||||
<constraint constraintValue="FHAG" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.levelonevalue">
|
||||
<constraint constraintValue="10.0" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<alertParser xsi:type="dataCubeAlertMessageParser"/>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties renderingOrderId="CONTOUR" isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
|
||||
</properties>
|
||||
<resourceData xsi:type="gridResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||
<metadataMap>
|
||||
<mapping key="info.parameter.abbreviation">
|
||||
<constraint constraintValue="T" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="${modelName}" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.leveltwovalue">
|
||||
<constraint constraintValue="-999999" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.masterLevel.name">
|
||||
<constraint constraintValue="FHAG" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.levelonevalue">
|
||||
<constraint constraintValue="2.0" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<alertParser xsi:type="dataCubeAlertMessageParser"/>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties renderingOrderId="CONTOUR" isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
|
||||
</properties>
|
||||
<resourceData xsi:type="gridResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||
<metadataMap>
|
||||
<mapping key="info.parameter.abbreviation">
|
||||
<constraint constraintValue="RH" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="${modelName}" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.leveltwovalue">
|
||||
<constraint constraintValue="-999999" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.masterLevel.name">
|
||||
<constraint constraintValue="FHAG" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.levelonevalue">
|
||||
<constraint constraintValue="2.0" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<alertParser xsi:type="dataCubeAlertMessageParser"/>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="CONTOUR" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="outlineCapability" lineStyle="SOLID" outlineOn="true" outlineWidth="1"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties renderingOrderId="CONTOUR" isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
|
||||
</properties>
|
||||
<resourceData xsi:type="gridResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||
<metadataMap>
|
||||
<mapping key="info.parameter.abbreviation">
|
||||
<constraint constraintValue="DpT" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="${modelName}" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.leveltwovalue">
|
||||
<constraint constraintValue="-999999" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.masterLevel.name">
|
||||
<constraint constraintValue="FHAG" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.levelonevalue">
|
||||
<constraint constraintValue="2.0" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<alertParser xsi:type="dataCubeAlertMessageParser"/>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="colorMapCapability">
|
||||
<colorMapParameters colorMapName="Grid/gridded data"/>
|
||||
</capability>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties renderingOrderId="IMAGE_COUNTRY" isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
|
||||
</properties>
|
||||
<resourceData xsi:type="gridResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||
<metadataMap>
|
||||
<mapping key="info.parameter.abbreviation">
|
||||
<constraint constraintValue="TP" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="${modelName}" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.leveltwovalue">
|
||||
<constraint constraintValue="-999999" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.masterLevel.name">
|
||||
<constraint constraintValue="SFC" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.levelonevalue">
|
||||
<constraint constraintValue="0.0" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<alertParser xsi:type="dataCubeAlertMessageParser"/>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="colorMapCapability">
|
||||
<colorMapParameters colorMapName="Grid/gridded data"/>
|
||||
</capability>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="0.5" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties renderingOrderId="IMAGE_COUNTRY" isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="false">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
|
||||
</properties>
|
||||
<resourceData xsi:type="gridResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||
<metadataMap>
|
||||
<mapping key="info.parameter.abbreviation">
|
||||
<constraint constraintValue="MaxWHRRR" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="${modelName}" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.leveltwovalue">
|
||||
<constraint constraintValue="-999999" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.masterLevel.name">
|
||||
<constraint constraintValue="SFC" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.levelonevalue">
|
||||
<constraint constraintValue="0.0" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<alertParser xsi:type="dataCubeAlertMessageParser"/>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<resource>
|
||||
<loadProperties xsi:type="gridLoadProperties" displayType="IMAGE" loadWithoutData="true">
|
||||
<capabilities>
|
||||
|
||||
<capability xsi:type="colorMapCapability">
|
||||
<colorMapParameters colorMapName="HRRR Reflectivity"/>
|
||||
</capability>
|
||||
<capability xsi:type="imagingCapability" alpha="1.0" interpolationState="false" brightness="1.0" contrast="1.0"/>
|
||||
</capabilities>
|
||||
<resourceType>PLAN_VIEW</resourceType>
|
||||
</loadProperties>
|
||||
<properties renderingOrderId="IMAGE_COUNTRY" isSystemResource="false" isBlinking="false" isMapLayer="false" isHoverOn="false" isVisible="true">
|
||||
<pdProps maxDisplayWidth="100000000" minDisplayWidth="0"/>
|
||||
</properties>
|
||||
<resourceData xsi:type="gridResourceData" retrieveData="true" isUpdatingOnMetadataOnly="false" isRequeryNecessaryOnTimeMatch="true">
|
||||
<metadataMap>
|
||||
<mapping key="info.parameter.abbreviation">
|
||||
<constraint constraintValue="CXR" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="${modelName}" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.leveltwovalue">
|
||||
<constraint constraintValue="-999999" constraintType="IN"/>
|
||||
</mapping>
|
||||
<mapping key="pluginName">
|
||||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.masterLevel.name">
|
||||
<constraint constraintValue="EA" constraintType="IN"/>
|
||||
</mapping>
|
||||
<mapping key="info.level.levelonevalue">
|
||||
<constraint constraintValue="0.0" constraintType="IN"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
<alertParser xsi:type="dataCubeAlertMessageParser"/>
|
||||
</resourceData>
|
||||
</resource>
|
||||
<timeMatcher xsi:type="d2DTimeMatcher" deltaFilter="0" forecastFilter="0"/>
|
||||
<numberOfFrames>16</numberOfFrames>
|
||||
</descriptor>
|
||||
</displays>
|
||||
</displayList>
|
||||
</bundle>
|
|
@ -69,6 +69,12 @@
|
|||
<substitute key="modelName" value="${MMMmodel2}"/>
|
||||
<substitute key="frameCount" value="17"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/volume/DefaultFamily.xml"
|
||||
menuText="HRRR" id="hrrr" useReferenceTime="true">
|
||||
<substitute key="modelName" value="HRRR"/>
|
||||
<substitute key="TP" value="TP"/>
|
||||
<substitute key="frameCount" value="16"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/volume/DefaultFamily.xml"
|
||||
menuText="NAM12" id="nam12" useReferenceTime="true">
|
||||
<substitute key="modelName" value="${NAM12model}"/>
|
||||
|
|
|
@ -44,6 +44,12 @@
|
|||
<substitute key="modelName" value="${MMMmodel2}"/>
|
||||
<substitute key="TP" value="TP3hr"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/volume/HRRR.xml"
|
||||
menuText="HRRR" id="hrrrsurface" useReferenceTime="true">
|
||||
<substitute key="modelName" value="HRRR"/>
|
||||
<substitute key="TP" value="TP"/>
|
||||
<substitute key="frameCount" value="16"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/volume/DefaultSurface.xml"
|
||||
menuText="NAM12" id="nam12surface" useReferenceTime="true">
|
||||
<substitute key="modelName" value="${NAM12model}"/>
|
||||
|
|
|
@ -110,6 +110,8 @@
|
|||
indentText="false" />
|
||||
<contribute xsi:type="menuItem" menuText="Gust Speed" key="WGS"
|
||||
indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Max Gust Speed" key="MaxWHRRR"
|
||||
indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Wind Direction"
|
||||
key="WD" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="WDir Anl Uncertainty"
|
||||
|
@ -299,6 +301,16 @@
|
|||
key="PGrdM" indentText="false" />
|
||||
<contribute xsi:type="menuItem" menuText="MSLP Grad Vec"
|
||||
key="PGrd1" indentText="false" />
|
||||
<contribute xsi:type="menuItem" menuText="Max Updraft VV"
|
||||
key="MAXUVV" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Max Downdraft VV"
|
||||
key="MAXDVV" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Max Updraft Helicity"
|
||||
key="MAXUPHL" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Most Unstable BL Parcel Level"
|
||||
key="PLPL" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Max Lightning Threat"
|
||||
key="LTNG" indentText="true" />
|
||||
</contribute>
|
||||
|
||||
<contribute xsi:type="toolbarSubMenu" menuText="Misc">
|
||||
|
@ -1376,6 +1388,14 @@
|
|||
key="VILIQ" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Derived Echo Top"
|
||||
key="RETOP" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="CAPPI"
|
||||
key="REFD" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="MAX 1hr CAPPI"
|
||||
key="MXREF" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Derived VIL"
|
||||
key="VILIQ" indentText="true" />
|
||||
<contribute xsi:type="menuItem" menuText="Derived Echo Top"
|
||||
key="RETOP" indentText="true" />
|
||||
</contribute>
|
||||
|
||||
<!--
|
||||
|
|
|
@ -315,6 +315,7 @@
|
|||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="90agl" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="120agl" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="150agl" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="400agl" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="Mept" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="WetBulb0" indentText="false"/>
|
||||
<contribute xsi:type="menuItem" textLookup="LevelMapping" key="CloudBase" indentText="false"/>
|
||||
|
|
|
@ -1347,19 +1347,19 @@
|
|||
<DatabaseLevel levelName="HYB" levelOneValue="1" />
|
||||
</Level>
|
||||
<Level displayName="80 m" key="80m" group="S">
|
||||
<DatabaseLevel levelName="FHAG" levelOneValue="80.0"
|
||||
unit="m" />
|
||||
</Level>
|
||||
<DatabaseLevel levelName="FHAG" levelOneValue="80.0"
|
||||
unit="m" />
|
||||
</Level>
|
||||
<Level displayName="SIG0.8-0.5" key="SIG0.8-0.5" group="S">
|
||||
<DatabaseLevel levelName="SIG" levelOneValue="0.5"
|
||||
levelTwoValue="0.8" unit="m/s" />
|
||||
levelTwoValue="0.8" unit="m/s" />
|
||||
</Level>
|
||||
<Level displayName="1000MB-400MB" key="1000MB-400MB" group="C">
|
||||
<DatabaseLevel levelName="MB" levelOneValue="1000"
|
||||
levelTwoValue="400" unit="hPa" />
|
||||
<Level displayName="400agl" key="400agl" group="C">
|
||||
<DatabaseLevel levelName="BL" levelOneValue="1000"
|
||||
levelTwoValue="400" unit="hPa" />
|
||||
</Level>
|
||||
<Level displayName="2-5km AGL" key="2-5kmAgl" group="C">
|
||||
<DatabaseLevel levelName="FHAG" levelOneValue="2000"
|
||||
levelTwoValue="5000.0" unit="m" />
|
||||
levelTwoValue="5000.0" unit="m" />
|
||||
</Level>
|
||||
</LevelMappings>
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
package com.raytheon.viz.warngen.gis;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
import javax.xml.bind.annotation.XmlAttribute;
|
||||
import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.warning.util.WarnFileUtil;
|
||||
import com.raytheon.uf.common.serialization.SingleTypeJAXBManager;
|
||||
import com.raytheon.uf.viz.core.localization.LocalizationManager;
|
||||
import com.raytheon.viz.warngen.gui.WarngenLayer;
|
||||
|
||||
/**
|
||||
* WarngenWordingConfiguration
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- -------------- --------------------------
|
||||
* 2014-08-28 ASM #15658 D. Friedman Initial Creation.
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
@XmlRootElement(name = "zoneWordingConfig")
|
||||
public class MarineWordingConfiguration {
|
||||
|
||||
private static final String FILE_NAME = "marineZoneWording.xml";
|
||||
|
||||
@XmlElement(name = "entry")
|
||||
private List<MarineWordingEntry> entries = new ArrayList<MarineWordingEntry>();
|
||||
|
||||
public List<MarineWordingEntry> getEntries() {
|
||||
return entries;
|
||||
}
|
||||
|
||||
public void setEntries(List<MarineWordingEntry> entries) {
|
||||
this.entries = entries;
|
||||
}
|
||||
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public static class MarineWordingEntry {
|
||||
@XmlAttribute(name = "match")
|
||||
private String matchText;
|
||||
@XmlAttribute(name = "replace")
|
||||
private String replacementText;
|
||||
|
||||
private Pattern ugcPattern;
|
||||
|
||||
public String getMatchText() {
|
||||
return matchText;
|
||||
}
|
||||
|
||||
public void setMatchText(String matchText) {
|
||||
this.matchText = matchText;
|
||||
this.ugcPattern = null;
|
||||
}
|
||||
|
||||
public String getReplacementText() {
|
||||
return replacementText;
|
||||
}
|
||||
|
||||
public void setReplacementText(String replacementText) {
|
||||
this.replacementText = replacementText;
|
||||
}
|
||||
|
||||
public Pattern getUgcPattern() {
|
||||
if (ugcPattern == null) {
|
||||
if (matchText != null) {
|
||||
ugcPattern = Pattern.compile(matchText);
|
||||
}
|
||||
}
|
||||
return ugcPattern;
|
||||
}
|
||||
}
|
||||
|
||||
private static final SingleTypeJAXBManager<MarineWordingConfiguration> jaxb = SingleTypeJAXBManager
|
||||
.createWithoutException(MarineWordingConfiguration.class);
|
||||
|
||||
|
||||
public static MarineWordingConfiguration load(WarngenLayer forLayer) throws Exception {
|
||||
String xmlText = WarnFileUtil.convertFileContentsToString(FILE_NAME,
|
||||
LocalizationManager.getInstance().getCurrentSite(),
|
||||
forLayer.getLocalizedSite());
|
||||
|
||||
MarineWordingConfiguration config = (MarineWordingConfiguration)
|
||||
jaxb.unmarshalFromXml(xmlText);
|
||||
for (MarineWordingEntry entry : config.getEntries()) {
|
||||
// Validate patterns by compiling now.
|
||||
entry.getUgcPattern();
|
||||
}
|
||||
return config;
|
||||
}
|
||||
|
||||
}
|
|
@ -33,6 +33,7 @@ import java.util.List;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 16, 2014 3419 jsanchez Initial creation
|
||||
* Aug 28, 2014 ASM #15658 D. Friedman Add marine zone list.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -58,6 +59,8 @@ public class Watch {
|
|||
|
||||
private List<String> partOfState;
|
||||
|
||||
private List<String> marineAreas;
|
||||
|
||||
public Watch(String state, String action, String phenSig, String etn,
|
||||
Date startTime, Date endTime) {
|
||||
this.state = state;
|
||||
|
@ -132,6 +135,14 @@ public class Watch {
|
|||
this.etn = etn;
|
||||
}
|
||||
|
||||
public List<String> getMarineAreas() {
|
||||
return marineAreas;
|
||||
}
|
||||
|
||||
public void setMarineAreas(List<String> marineAreas) {
|
||||
this.marineAreas = marineAreas;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
final int prime = 31;
|
||||
|
|
|
@ -54,8 +54,11 @@ 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.uf.common.time.util.TimeUtil;
|
||||
import com.raytheon.uf.common.util.Pair;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.requests.ThriftClient;
|
||||
import com.raytheon.viz.core.mode.CAVEMode;
|
||||
import com.raytheon.viz.warngen.gis.MarineWordingConfiguration.MarineWordingEntry;
|
||||
import com.raytheon.viz.warngen.gui.WarngenLayer;
|
||||
import com.raytheon.viz.warngen.gui.WarngenLayer.GeoFeatureType;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
|
@ -72,6 +75,8 @@ import com.vividsolutions.jts.geom.Polygon;
|
|||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 17, 2014 3419 jsanchez Initial creation
|
||||
* Aug 20, 2014 ASM #16703 D. Friedman Ensure watches have a state attribute.
|
||||
* Aug 28, 2014 ASM #15658 D. Friedman Add marine zones.
|
||||
* Aug 29, 2014 ASM #15551 Qinglu Lin Sorting watches by ETN in processRecords().
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -106,10 +111,16 @@ public class WatchUtil {
|
|||
|
||||
private static final String COUNTY_FE_AREA_FIELD = "FE_AREA";
|
||||
|
||||
private static final Object MARINE_ZONE_UGC_FIELD = "ID";
|
||||
|
||||
private static final Object MARINE_ZONE_NAME_FIELD = "NAME";
|
||||
|
||||
private static final String STATE_FIELD = "STATE";
|
||||
|
||||
private static final String COUNTY_TABLE = "County";
|
||||
|
||||
private static final String MARINE_ZONE_TABLE = "MarineZones";
|
||||
|
||||
private static final String PARENT_NAME_FIELD = "NAME";
|
||||
|
||||
private static final String[] REQUEST_FIELDS = new String[] {
|
||||
|
@ -118,8 +129,12 @@ public class WatchUtil {
|
|||
|
||||
private GeospatialData[] countyGeoData;
|
||||
|
||||
private GeospatialData[] marineGeoData;
|
||||
|
||||
private WarngenLayer warngenLayer;
|
||||
|
||||
private MarineWordingConfiguration marineWordingConfig;
|
||||
|
||||
public WatchUtil(WarngenLayer warngenLayer) throws InstantiationException {
|
||||
countyGeoData = warngenLayer.getGeodataFeatures(COUNTY_TABLE,
|
||||
warngenLayer.getLocalizedSite());
|
||||
|
@ -155,6 +170,17 @@ public class WatchUtil {
|
|||
Validate.isTrue(watchAreaBuffer >= 0,
|
||||
"'includedWatchAreaBuffer' can not be negative in .xml file");
|
||||
|
||||
if (config.isIncludeMarineAreasInWatches()) {
|
||||
marineGeoData = warngenLayer.getGeodataFeatures(MARINE_ZONE_TABLE,
|
||||
warngenLayer.getLocalizedSite());
|
||||
if (marineGeoData == null) {
|
||||
throw new VizException("Cannot get geospatial data for "
|
||||
+ MARINE_ZONE_TABLE + "-based watches");
|
||||
}
|
||||
|
||||
marineWordingConfig = MarineWordingConfiguration.load(warngenLayer);
|
||||
}
|
||||
|
||||
String[] includedWatches = config.getIncludedWatches();
|
||||
|
||||
if ((includedWatches != null) && (includedWatches.length > 0)) {
|
||||
|
@ -174,10 +200,16 @@ public class WatchUtil {
|
|||
entityClass = PracticeActiveTableRecord.class;
|
||||
}
|
||||
|
||||
HashSet<String> allUgcs = new HashSet<String>(
|
||||
warngenLayer.getAllUgcs(GeoFeatureType.COUNTY));
|
||||
Set<String> marineUgcs = null;
|
||||
if (config.isIncludeMarineAreasInWatches()) {
|
||||
marineUgcs = warngenLayer.getAllUgcs(GeoFeatureType.MARINE);
|
||||
allUgcs.addAll(marineUgcs);
|
||||
}
|
||||
|
||||
DbQueryRequest request = buildRequest(simulatedTime,
|
||||
phenSigConstraint.toString(),
|
||||
warngenLayer.getAllUgcs(GeoFeatureType.COUNTY),
|
||||
entityClass);
|
||||
phenSigConstraint.toString(), allUgcs, entityClass);
|
||||
DbQueryResponse response = (DbQueryResponse) ThriftClient
|
||||
.sendRequest(request);
|
||||
|
||||
|
@ -192,9 +224,14 @@ public class WatchUtil {
|
|||
/ KmToDegrees);
|
||||
System.out.println("create watch area buffer time: "
|
||||
+ (System.currentTimeMillis() - t0));
|
||||
Set<String> validUgcZones = warngenLayer
|
||||
.getUgcsForWatches(watchArea, GeoFeatureType.COUNTY);
|
||||
watches = processRecords(records, validUgcZones);
|
||||
HashSet<String> validUgcZones = new HashSet<String>(
|
||||
warngenLayer.getUgcsForWatches(watchArea,
|
||||
GeoFeatureType.COUNTY));
|
||||
if (config.isIncludeMarineAreasInWatches()) {
|
||||
validUgcZones.addAll(warngenLayer.getUgcsForWatches(
|
||||
watchArea, GeoFeatureType.MARINE));
|
||||
}
|
||||
watches = processRecords(records, validUgcZones, marineUgcs);
|
||||
} catch (RuntimeException e) {
|
||||
statusHandler
|
||||
.handle(Priority.ERROR,
|
||||
|
@ -302,12 +339,13 @@ public class WatchUtil {
|
|||
*
|
||||
* @param activeTableRecords
|
||||
* @param validUgcZones
|
||||
* @param marineUgcs
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
private List<Watch> processRecords(
|
||||
List<ActiveTableRecord> activeTableRecords,
|
||||
Set<String> validUgcZones) {
|
||||
Set<String> validUgcZones, Set<String> marineUgcs) {
|
||||
List<Watch> watches = new ArrayList<Watch>();
|
||||
|
||||
/*
|
||||
|
@ -329,14 +367,16 @@ public class WatchUtil {
|
|||
* validUgcZones here.
|
||||
*/
|
||||
String ugcZone = ar.getUgcZone();
|
||||
String state = getStateName(ugcZone.substring(0, 2));
|
||||
String state = null;
|
||||
|
||||
/*
|
||||
* Temporary fix for SS DR #16703. Remove when marine watch wording
|
||||
* is fixed.
|
||||
*/
|
||||
if (state == null)
|
||||
continue;
|
||||
if (marineUgcs != null && marineUgcs.contains(ugcZone)) {
|
||||
// Just leave state == null
|
||||
} else {
|
||||
state = getStateName(ugcZone.substring(0, 2));
|
||||
if (state == null) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
String action = ar.getAct();
|
||||
String phenSig = ar.getPhensig();
|
||||
|
@ -360,12 +400,18 @@ public class WatchUtil {
|
|||
for (Entry<Watch, List<String>> entry : map.entrySet()) {
|
||||
Watch watch = entry.getKey();
|
||||
watch.setAreas(entry.getValue());
|
||||
List<String> partOfState = new ArrayList<String>(
|
||||
determineAffectedPortions(watch.getAreas()));
|
||||
watch.setPartOfState(partOfState);
|
||||
if (watch.getState() != null) {
|
||||
List<String> partOfState = new ArrayList<String>(
|
||||
determineAffectedPortions(watch.getAreas()));
|
||||
watch.setPartOfState(partOfState);
|
||||
} else {
|
||||
watch.setMarineAreas(determineMarineAreas(watch.getAreas()));
|
||||
}
|
||||
watches.add(watch);
|
||||
}
|
||||
|
||||
// keep the code for their use in the future
|
||||
/*
|
||||
// Sorts the watches based on state name.
|
||||
Collections.sort(watches, new Comparator<Watch>() {
|
||||
|
||||
|
@ -383,6 +429,25 @@ public class WatchUtil {
|
|||
return state1.compareTo(state2);
|
||||
}
|
||||
});
|
||||
*/
|
||||
|
||||
// Sorts the watches based on ETN.
|
||||
Collections.sort(watches, new Comparator<Watch>() {
|
||||
|
||||
@Override
|
||||
public int compare(Watch watch1, Watch watch2) {
|
||||
String etn1 = watch1.getEtn();
|
||||
String etn2 = watch2.getEtn();
|
||||
if (etn1 == etn2)
|
||||
return 0;
|
||||
else if (etn1 == null)
|
||||
return 1;
|
||||
else if (etn2 == null)
|
||||
return -1;
|
||||
else
|
||||
return etn1.compareTo(etn2);
|
||||
}
|
||||
});
|
||||
|
||||
return watches;
|
||||
}
|
||||
|
@ -412,6 +477,40 @@ public class WatchUtil {
|
|||
return affectedPortions;
|
||||
}
|
||||
|
||||
private List<String> determineMarineAreas(List<String> areas) {
|
||||
HashSet<Pair<Integer, String>> groupedAreas = new HashSet<Pair<Integer,String>>();
|
||||
for (String area : areas) {
|
||||
int entryIndex = 0;
|
||||
for (MarineWordingEntry entry : marineWordingConfig.getEntries()) {
|
||||
if (entry.getUgcPattern().matcher(area).matches()) {
|
||||
String replacement = entry.getReplacementText();
|
||||
if (replacement != null) {
|
||||
if (replacement.length() > 0) {
|
||||
groupedAreas.add(new Pair<Integer, String>(
|
||||
entryIndex, entry.getReplacementText()));
|
||||
}
|
||||
} else {
|
||||
groupedAreas.add(new Pair<Integer, String>(entryIndex,
|
||||
getMarineZoneName(area)));
|
||||
}
|
||||
}
|
||||
entryIndex++;
|
||||
}
|
||||
}
|
||||
ArrayList<Pair<Integer, String>> sorted = new ArrayList<Pair<Integer,String>>(groupedAreas);
|
||||
Collections.sort(sorted, new Comparator<Pair<Integer, String>>() {
|
||||
public int compare(Pair<Integer, String> o1, Pair<Integer, String> o2) {
|
||||
int r = o1.getFirst().compareTo(o2.getFirst());
|
||||
return r != 0 ? r : o1.getSecond().compareTo(o2.getSecond());
|
||||
};
|
||||
});
|
||||
ArrayList<String> result = new ArrayList<String>(sorted.size());
|
||||
for (Pair<Integer, String> value : sorted) {
|
||||
result.add(value.getSecond());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the full state name from the state abbreviation.
|
||||
*
|
||||
|
@ -446,6 +545,16 @@ public class WatchUtil {
|
|||
return null;
|
||||
}
|
||||
|
||||
private String getMarineZoneName(String ugc) {
|
||||
for (GeospatialData g : marineGeoData) {
|
||||
if (((String) g.attributes.get(MARINE_ZONE_UGC_FIELD))
|
||||
.endsWith(ugc)) {
|
||||
return (String) g.attributes.get(MARINE_ZONE_NAME_FIELD);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// Based on AWIPS 1 SELSparagraphs.C SELSparagraphs::processWOU().
|
||||
private String mungeFeAreas(Set<String> feAreas) {
|
||||
String abrev = "";
|
||||
|
|
|
@ -141,6 +141,8 @@ import com.vividsolutions.jts.io.WKTReader;
|
|||
* added determineAffectedMarinePortions().
|
||||
* Jul 21, 2014 3419 jsanchez Refactored WatchUtil.
|
||||
* Aug 15, 2014 DR15701 mgamazaychikov Removed static field watchUtil.
|
||||
* Aug 28, 2014 ASM #15551 Qinglu Lin Replaced 1200 PM/1200 AM by NOON/MIDNIGHT, removed days in
|
||||
* included tornado/severe thunderstorm watch message.
|
||||
* </pre>
|
||||
*
|
||||
* @author njensen
|
||||
|
@ -872,7 +874,37 @@ public class TemplateRunner {
|
|||
System.out.println("velocity time: "
|
||||
+ (System.currentTimeMillis() - tz0));
|
||||
|
||||
String text = script.toString();
|
||||
String watches[] = {"TORNADO WATCH", "SEVERE THUNDERSTORM WATCH"};
|
||||
int index1 = -1, index2 = -1, index1ToUse = -1;
|
||||
String doubleDollar = "$$";
|
||||
boolean firstTime = true;
|
||||
for (String s: watches) {
|
||||
index1 = script.indexOf(s, 0);
|
||||
if (index1 > 0) {
|
||||
index2 = script.indexOf(doubleDollar, index1);
|
||||
}
|
||||
if (firstTime && index1 > -1) {
|
||||
index1ToUse = index1;
|
||||
firstTime = false;
|
||||
}
|
||||
}
|
||||
String days[] = {"SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"};
|
||||
String substring = "", text;
|
||||
if (index1ToUse > -1 && index2 > -1) {
|
||||
substring = script.substring(index1ToUse, index2).toUpperCase();
|
||||
// remove day
|
||||
for (String day: days) {
|
||||
substring = substring.replaceAll(day + " ", "");
|
||||
}
|
||||
// replace 1200 PM/1200 AM with NOON/MIDNIGHT
|
||||
substring = substring.replaceAll("1200 PM", "NOON");
|
||||
substring = substring.replaceAll("1200 AM", "MIDNIGHT");
|
||||
// concatenate strings
|
||||
text = script.substring(0, index1ToUse - 1);
|
||||
text = text + " " + substring + script.substring(index2, script.length());
|
||||
} else {
|
||||
text = script.toString();
|
||||
}
|
||||
WarningTextHandler handler = WarningTextHandlerFactory.getHandler(
|
||||
selectedAction, text, config.getAutoLockText());
|
||||
String handledText = handler.handle(text, areas, cancelareas,
|
||||
|
|
|
@ -42,6 +42,7 @@ import com.raytheon.viz.core.mode.CAVEMode;
|
|||
* May 3, 2011 jsanchez Initial creation
|
||||
* Oct 25, 2013 2249 rferrel getAvailableTimes always returns a non-empty list.
|
||||
* Apr 28, 2014 DR 17310 D. Friedman Handle null VTEC fields.
|
||||
* Aug 28, 2014 ASM #15682 D. Friedman Refactor for WouWcnWatchesResourceData.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -98,13 +99,13 @@ public class WWAResourceData extends AbstractRequestableResourceData {
|
|||
|
||||
@Override
|
||||
public DataTime[] getAvailableTimes() throws VizException {
|
||||
DataTime[] available = getAvailableTimes(getMetadataMap(),
|
||||
DataTime[] available = getAvailableWarningTimes(getMetadataMap(),
|
||||
getBinOffset());
|
||||
|
||||
return available;
|
||||
}
|
||||
|
||||
public static DataTime[] getAvailableTimes(
|
||||
public DataTime[] getAvailableWarningTimes(
|
||||
Map<String, RequestConstraint> constraintMap, BinOffset binOffset)
|
||||
throws VizException {
|
||||
DbQueryResponse response = null;
|
||||
|
@ -116,8 +117,9 @@ public class WWAResourceData extends AbstractRequestableResourceData {
|
|||
String etn = "etn";
|
||||
String phensig = "phensig";
|
||||
String act = "act";
|
||||
String pil = "pil";
|
||||
request.addFields(new String[] { startTimeField, endTimeField, act,
|
||||
etn, phensig });
|
||||
etn, phensig, pil });
|
||||
|
||||
response = (DbQueryResponse) ThriftClient.sendRequest(request);
|
||||
if (response.getResults() == null) {
|
||||
|
@ -137,7 +139,10 @@ public class WWAResourceData extends AbstractRequestableResourceData {
|
|||
warnRec.setAct((String) map.get(act));
|
||||
warnRec.setPhensig((String) map.get(phensig));
|
||||
warnRec.setEtn((String) map.get(etn));
|
||||
warnings.add(warnRec);
|
||||
warnRec.setPil((String) map.get(pil));
|
||||
if (isRecordTimeImportant(warnRec)) {
|
||||
warnings.add(warnRec);
|
||||
}
|
||||
}
|
||||
|
||||
RequestConstraint phenSig = constraintMap.get("phensig");
|
||||
|
@ -165,6 +170,10 @@ public class WWAResourceData extends AbstractRequestableResourceData {
|
|||
return availableTimes;
|
||||
}
|
||||
|
||||
protected boolean isRecordTimeImportant(AbstractWarningRecord warnRec) {
|
||||
return true;
|
||||
}
|
||||
|
||||
private static TreeSet<DataTime> getWarningStartTimes(
|
||||
ArrayList<AbstractWarningRecord> warnings) {
|
||||
/*
|
||||
|
|
|
@ -290,7 +290,7 @@ public class WatchesResource extends AbstractWWAResource {
|
|||
}
|
||||
}
|
||||
|
||||
private void setGeometry(AbstractWarningRecord record) {
|
||||
protected void setGeometry(AbstractWarningRecord record) {
|
||||
List<String> county = new ArrayList<String>();
|
||||
List<String> marinezone = new ArrayList<String>();
|
||||
List<Geometry> geometries = new ArrayList<Geometry>();
|
||||
|
|
|
@ -0,0 +1,429 @@
|
|||
package com.raytheon.viz.warnings.rsc;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.warning.AbstractWarningRecord;
|
||||
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||
import com.raytheon.uf.common.time.ISimulatedTimeChangeListener;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.IGraphicsTarget;
|
||||
import com.raytheon.uf.viz.core.drawables.FillPatterns;
|
||||
import com.raytheon.uf.viz.core.drawables.IShadedShape;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.viz.core.rsc.jts.JTSCompiler;
|
||||
import com.raytheon.viz.core.rsc.jts.JTSCompiler.PointStyle;
|
||||
import com.vividsolutions.jts.geom.Geometry;
|
||||
|
||||
/**
|
||||
* Displays WOUs updated by WCNs
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 2014-08-28 ASM #15682 D. Friemdan Initial creation
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
public class WouWcnWatchesResource extends WatchesResource implements ISimulatedTimeChangeListener {
|
||||
|
||||
private static Timer timer;
|
||||
|
||||
private TimerTask timerTask;
|
||||
|
||||
// If this is changed to use the maps database, could probably be static
|
||||
private Map<String, Set<String>> cwaUgcMap = new HashMap<String, Set<String>>();
|
||||
|
||||
static final ThreadLocal<SimpleDateFormat> sdf = new ThreadLocal<SimpleDateFormat>() {
|
||||
@Override protected SimpleDateFormat initialValue() {
|
||||
return new SimpleDateFormat("yyyyMMddHHmm");
|
||||
}
|
||||
};
|
||||
|
||||
public WouWcnWatchesResource(WWAResourceData data, LoadProperties props) {
|
||||
super(data, props);
|
||||
comparator = WouWcnWatchesComparator.getInstance();
|
||||
resourceName = "Watches";
|
||||
}
|
||||
|
||||
private AbstractWarningRecord getPreviousRecordForEvent(AbstractWarningRecord rec) {
|
||||
String phenSig = rec.getPhensig();
|
||||
String etn = rec.getEtn();
|
||||
if (phenSig == null || etn == null)
|
||||
return null;
|
||||
AbstractWarningRecord best = null;
|
||||
for (WarningEntry e : entryMap.values()) {
|
||||
if (!phenSig.equals(e.record.getPhensig()) ||
|
||||
!etn.equals(e.record.getEtn()))
|
||||
continue;
|
||||
|
||||
if (best == null || WouWcnWatchesComparator.getInstance().
|
||||
compare(best, e.record) < 0) {
|
||||
best = e.record;
|
||||
}
|
||||
}
|
||||
return best;
|
||||
}
|
||||
|
||||
private Set<String> maskCwaUgcs(Set<String> ugcs, AbstractWarningRecord rec) {
|
||||
Set<String> cwaUgcs = getUgcsForCwa(rec.getXxxid());
|
||||
if (cwaUgcs != null) {
|
||||
HashSet<String> result = new HashSet<String>(ugcs);
|
||||
result.removeAll(cwaUgcs);
|
||||
return result;
|
||||
} else {
|
||||
return ugcs;
|
||||
}
|
||||
}
|
||||
|
||||
private Set<String> getUgcsForCwa(String cwa) {
|
||||
return cwaUgcMap.get(cwa.toUpperCase());
|
||||
}
|
||||
|
||||
private Set<String> safe(Set<String> set) {
|
||||
return set != null ? set : new HashSet<String>();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void updateDisplay(IGraphicsTarget target) throws VizException {
|
||||
if (recordsToLoad.isEmpty())
|
||||
return;
|
||||
|
||||
List<AbstractWarningRecord> mergedWatches = mergeWatches(recordsToLoad);
|
||||
for (AbstractWarningRecord watchRec : mergedWatches) {
|
||||
/* If these things are missing, we can't do anything with the warning. */
|
||||
if (watchRec.getPhensig() == null || watchRec.getEtn() == null ||
|
||||
watchRec.getIssueTime() == null || watchRec.getStartTime() == null ||
|
||||
watchRec.getEndTime() == null || watchRec.getXxxid() == null ||
|
||||
watchRec.getWmoid() == null || watchRec.getAct() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
WarningAction watchAct = WarningAction.valueOf(watchRec.getAct());
|
||||
|
||||
AbstractWarningRecord createShape = null;
|
||||
boolean isWOU = "WOU".equals(watchRec.getPil());
|
||||
|
||||
AbstractWarningRecord prevRec = getPreviousRecordForEvent(watchRec);
|
||||
Set<String> prevUgcs = new HashSet<String>(safe(
|
||||
prevRec != null ? prevRec.getUgcZones() : null));
|
||||
Set<String> newUgcs = null;
|
||||
|
||||
if (watchAct == WarningAction.NEW) {
|
||||
if (isWOU) {
|
||||
createShape = watchRec;
|
||||
} else {
|
||||
noteCwaUgcs(watchRec);
|
||||
// As per requirements, we do not create frames for these.
|
||||
}
|
||||
} else if (watchAct == WarningAction.CON && isWOU) {
|
||||
// As per requirements, we do not create frames for these.
|
||||
} else if (watchAct == WarningAction.CON) {
|
||||
/* No need to do anything because we really only care about
|
||||
* the segments paired with the CON.
|
||||
*/
|
||||
} else if (watchAct == WarningAction.CAN) {
|
||||
/* Not really expecting this for a WOU, but shouldn't cause
|
||||
* a problem if there is one.
|
||||
*/
|
||||
newUgcs = prevUgcs;
|
||||
newUgcs.removeAll(safe(watchRec.getUgcZones()));
|
||||
createShape = watchRec;
|
||||
} else if (watchAct == WarningAction.EXA || watchAct == WarningAction.EXB) {
|
||||
if (!isWOU) {
|
||||
noteCwaUgcs(watchRec);
|
||||
}
|
||||
newUgcs = prevUgcs;
|
||||
newUgcs.addAll(safe(watchRec.getUgcZones()));
|
||||
createShape = watchRec;
|
||||
} else if (watchAct == WarningAction.EXP) {
|
||||
if (isWOU) {
|
||||
if (prevRec != null) {
|
||||
if (! prevRec.getEndTime().equals(watchRec.getEndTime())) {
|
||||
prevRec.setEndTime(watchRec.getEndTime());
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Ideally we do not need to create a shape, but if we do
|
||||
* not and time matching creates a frame for an EXP that is
|
||||
* issued before the expiration time, the warning would show
|
||||
* as still active on that frame.
|
||||
*/
|
||||
newUgcs = new HashSet<String>();
|
||||
createShape = watchRec;
|
||||
} else {
|
||||
newUgcs = maskCwaUgcs(prevUgcs, watchRec);
|
||||
createShape = watchRec;
|
||||
}
|
||||
}
|
||||
if (watchAct == WarningAction.EXT || watchAct == WarningAction.EXB) {
|
||||
/* This resource does not handle different expiration times
|
||||
* for different UGCs.
|
||||
*
|
||||
* Also assuming this does not add/remove UGCs.
|
||||
*/
|
||||
if (prevRec != null && watchRec.getEndTime() != null) {
|
||||
if (isWOU && watchRec.getUgcZones() != null && watchRec.getUgcZones().isEmpty()) {
|
||||
/*
|
||||
* This probably does not actually happen, but this
|
||||
* is the only way we can support shortening the
|
||||
* expiration time with the current design.
|
||||
*/
|
||||
prevRec.setEndTime(watchRec.getEndTime());
|
||||
} else {
|
||||
if (prevRec.getEndTime().before(watchRec.getEndTime())) {
|
||||
prevRec.setEndTime(watchRec.getEndTime());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (createShape != null) {
|
||||
if (newUgcs != null)
|
||||
createShape.setUgcZones(newUgcs);
|
||||
else if (createShape.getUgcZones() == null)
|
||||
createShape.setUgcZones(new HashSet<String>());
|
||||
insertShape(target, createShape);
|
||||
}
|
||||
}
|
||||
|
||||
recordsToLoad.clear();
|
||||
scheduleNextTime();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void initShape(IGraphicsTarget target,
|
||||
AbstractWarningRecord record) throws VizException {
|
||||
String key = getEntryMapKey(record);
|
||||
WarningEntry entry = entryMap.get(key);
|
||||
if (entry != null) {
|
||||
createShape(target, entry);
|
||||
}
|
||||
}
|
||||
|
||||
protected void insertShape(IGraphicsTarget target, AbstractWarningRecord record) throws VizException {
|
||||
String key = getEntryMapKey(record);
|
||||
WarningEntry entry = entryMap.get(key);
|
||||
if (entry == null) {
|
||||
entry = new WarningEntry();
|
||||
entryMap.put(key, entry);
|
||||
}
|
||||
entry.record = record; // ...possibly replacing an existing record
|
||||
if (! record.getUgcZones().isEmpty()) {
|
||||
setGeometry(record);
|
||||
} else {
|
||||
entry.record.setGeometry(null);
|
||||
}
|
||||
createShape(target, entry);
|
||||
}
|
||||
|
||||
protected void createShape(IGraphicsTarget target, WarningEntry entry) throws VizException {
|
||||
if (entry.shadedShape != null) {
|
||||
entry.shadedShape.dispose();
|
||||
entry.shadedShape = null;
|
||||
}
|
||||
AbstractWarningRecord record = entry.record;
|
||||
if (record.getGeometry() != null) {
|
||||
IShadedShape ss = target.createShadedShape(false,
|
||||
descriptor.getGridGeometry(), false);
|
||||
Geometry geo = (Geometry) record.getGeometry().clone();
|
||||
JTSCompiler jtsCompiler = new JTSCompiler(ss, null,
|
||||
this.descriptor, PointStyle.CROSS);
|
||||
jtsCompiler.handle(geo, color);
|
||||
ss.setFillPattern(FillPatterns.getGLPattern(record.getPhen()
|
||||
.equals("TO") ? "VERTICAL" : "HORIZONTAL"));
|
||||
ss.compile();
|
||||
entry.shadedShape = ss;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Groups all the ugc zones with the same action, phensig, ETN, site, and
|
||||
* issuance time.
|
||||
*/
|
||||
protected List<AbstractWarningRecord> mergeWatches(
|
||||
List<AbstractWarningRecord> watchrecs) {
|
||||
SimpleDateFormat sdfi = sdf.get();
|
||||
|
||||
Map<String, AbstractWarningRecord> watches = new HashMap<String, AbstractWarningRecord>();
|
||||
for (AbstractWarningRecord watchrec : watchrecs) {
|
||||
if (watchrec.getIssueTime() == null)
|
||||
continue;
|
||||
|
||||
String key = watchrec.getAct() + '.' + watchrec.getPhensig() + '.'
|
||||
+ watchrec.getEtn() + '.' + watchrec.getOfficeid() + '.'
|
||||
+ sdfi.format(watchrec.getIssueTime().getTime());
|
||||
AbstractWarningRecord watch = watches.get(key);
|
||||
if (watch == null) {
|
||||
watch = watchrec;
|
||||
watches.put(key, watch);
|
||||
} else {
|
||||
Set<String> ugcZones = watch.getUgcZones();
|
||||
if (ugcZones != null) {
|
||||
ugcZones.addAll(watchrec.getUgcZones());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<AbstractWarningRecord> mergedWatches = new ArrayList<AbstractWarningRecord>(
|
||||
watches.values());
|
||||
Collections.sort(mergedWatches, comparator);
|
||||
|
||||
return mergedWatches;
|
||||
}
|
||||
|
||||
protected String getEntryMapKey(AbstractWarningRecord rec) {
|
||||
return sdf.get().format(rec.getIssueTime().getTime()) + '.'
|
||||
+ rec.getWmoid() + '.' + rec.getPhensig() + '.' + rec.getEtn();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getEventKey(WarningEntry entry) {
|
||||
AbstractWarningRecord r = entry.record;
|
||||
return r.getPhensig() + '.' + r.getEtn();
|
||||
}
|
||||
|
||||
private void noteCwaUgcs(AbstractWarningRecord watchRec) {
|
||||
String siteKey = watchRec.getXxxid();
|
||||
Set<String> recUgcs = watchRec.getUgcZones();
|
||||
if (siteKey == null || recUgcs == null)
|
||||
return;
|
||||
|
||||
synchronized (cwaUgcMap) {
|
||||
Set<String> ugcs = cwaUgcMap.get(siteKey);
|
||||
if (ugcs == null) {
|
||||
ugcs = new HashSet<String>();
|
||||
cwaUgcMap.put(siteKey, ugcs);
|
||||
}
|
||||
ugcs.addAll(recUgcs);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void disposeInternal() {
|
||||
synchronized(this) {
|
||||
if (timerTask != null)
|
||||
timerTask.cancel();
|
||||
}
|
||||
super.disposeInternal();
|
||||
}
|
||||
|
||||
private void scheduleNextTime() {
|
||||
/* TODO: This is a race condition. Need the last frame time,
|
||||
* but getLastFrameTimeRange() is also a race condition. So really need
|
||||
* last drawn last frame time, but LAST_FRAME_ADJ is an hour ahead??!
|
||||
*/
|
||||
long vnow = SimulatedTime.getSystemTime().getMillis();
|
||||
AbstractWarningRecord best = null;
|
||||
for (WarningEntry entry : entryMap.values()) {
|
||||
AbstractWarningRecord rec = entry.record;
|
||||
if (rec.getEndTime().getTimeInMillis() >= vnow &&
|
||||
(best == null || rec.getEndTime().before(best.getEndTime()))) {
|
||||
best = rec;
|
||||
}
|
||||
}
|
||||
if (best != null) {
|
||||
scheduleTimer(best.getEndTime().getTimeInMillis() - vnow);
|
||||
} else {
|
||||
scheduleTimer(-1);
|
||||
}
|
||||
}
|
||||
|
||||
private synchronized void scheduleTimer(long delay) {
|
||||
if (timerTask != null) {
|
||||
timerTask.cancel();
|
||||
}
|
||||
if (delay >= 0) {
|
||||
timerTask = new WatchesTimerTask();
|
||||
getTimer().schedule(timerTask, delay);
|
||||
} else {
|
||||
timerTask = null;
|
||||
}
|
||||
}
|
||||
|
||||
private Timer getTimer() {
|
||||
if (timer == null) {
|
||||
synchronized (WouWcnWatchesResource.class) {
|
||||
if (timer == null) {
|
||||
timer = new Timer(WouWcnWatchesResource.class.getName() + " Timer");
|
||||
}
|
||||
}
|
||||
}
|
||||
return timer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void timechanged() {
|
||||
issueRefresh();
|
||||
scheduleNextTime();
|
||||
}
|
||||
|
||||
protected class WatchesTimerTask extends TimerTask {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
timechanged();
|
||||
}
|
||||
}
|
||||
|
||||
protected static class WouWcnWatchesComparator implements Comparator<AbstractWarningRecord> {
|
||||
|
||||
static final WouWcnWatchesComparator instance = new WouWcnWatchesComparator();
|
||||
|
||||
public static Comparator<AbstractWarningRecord> getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compare(AbstractWarningRecord a, AbstractWarningRecord b) {
|
||||
int r;
|
||||
Calendar ca = a.getIssueTime();
|
||||
Calendar cb = b.getIssueTime();
|
||||
if (ca == null) {
|
||||
if (cb == null)
|
||||
r = 0;
|
||||
else
|
||||
return 1;
|
||||
} else if (cb == null)
|
||||
return -1;
|
||||
else
|
||||
r = ca.compareTo(cb);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
// The point of this is to handle the BBB field, but it makes the TTAAii part significant too...
|
||||
String sa = safeWmo(a);
|
||||
String sb = safeWmo(b);
|
||||
r = sa.compareTo(sb);
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
r = a.getSeg() - b.getSeg();
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
private static String safeWmo(AbstractWarningRecord record) {
|
||||
String wmo = record.getWmoid();
|
||||
return wmo != null ? wmo : "TTAA00 CCCC 000000";
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
package com.raytheon.viz.warnings.rsc;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import javax.xml.bind.annotation.XmlAccessType;
|
||||
import javax.xml.bind.annotation.XmlAccessorType;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataplugin.warning.AbstractWarningRecord;
|
||||
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
|
||||
/**
|
||||
* Displays WOUs updated by WCNs
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* 2014-08-28 ASM #15682 D. Friemdan Initial creation
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlAccessorType(XmlAccessType.NONE)
|
||||
public class WouWcnWatchesResourceData extends WWAResourceData {
|
||||
|
||||
@Override
|
||||
protected AbstractVizResource<?, ?> constructResource(
|
||||
LoadProperties loadProperties, PluginDataObject[] objects)
|
||||
throws VizException {
|
||||
// add records
|
||||
records = new ArrayList<AbstractWarningRecord>(objects.length);
|
||||
for (int i = 0; i < objects.length; i++) {
|
||||
AbstractWarningRecord r = (AbstractWarningRecord) objects[i];
|
||||
records.add(r);
|
||||
}
|
||||
|
||||
return new WouWcnWatchesResource(this, loadProperties);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isRecordTimeImportant(AbstractWarningRecord warnRec) {
|
||||
WarningAction act = WarningAction.valueOf(warnRec.getAct());
|
||||
if (("WOU".equals(warnRec.getPil()) && WarningAction.CON == act) ||
|
||||
("WCN".equals(warnRec.getPil()) && WarningAction.NEW == act)) {
|
||||
return false;
|
||||
} else {
|
||||
return super.isRecordTimeImportant(warnRec);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -43,6 +43,9 @@
|
|||
// 5km CONUS MOSGuide precip probability
|
||||
TP0.254mm_T170L42A-NCEP-MDL_1073x689_21600-0 POP6hr
|
||||
TP0.254mm_T170L42A-NCEP-MDL_1073x689_43200-0 POP12hr
|
||||
// Added for DCS_266 HRRR, removes F00 precip from any model if it arrives
|
||||
TP_0-0 PWS64
|
||||
WEASD_0-0 PWS64
|
||||
// 5km CONUS MOSGuide cumulative precip
|
||||
// these are unnessecary since A2 always appends duration
|
||||
TP_T170L42A-NCEP-MDL_1073x689_21600-0 TP6hr
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
<name>HRRR</name>
|
||||
<center>7</center>
|
||||
<subcenter>0</subcenter>
|
||||
<grid>184</grid>
|
||||
<process>
|
||||
<id>83</id>
|
||||
</process>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
# Product Discipline 0 - Meteorological products, Parameter Category 16: Forecast Radar Imagery
|
||||
# 192-254 Reserved for Local Use
|
||||
3:3:Echo Top:m:RETOP
|
||||
192:192:Derived radar reflectivity backscatter from rain:mm^6/m^3:REFZR
|
||||
193:193:Derived radar reflectivity backscatter from ice:mm^6/m^3:REFZI
|
||||
194:194:Derived radar reflectivity backscatter from parameterized convection:mm^6/m^3:REFZC
|
||||
|
|
|
@ -54,6 +54,31 @@
|
|||
</contourStyle>
|
||||
</styleRule>
|
||||
|
||||
<!-- HRRR -->
|
||||
<styleRule>
|
||||
<paramLevelMatches>
|
||||
<parameter>MaxWHRRR</parameter>
|
||||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<displayUnits>kts</displayUnits>
|
||||
<contourLabeling labelSpacing="4">
|
||||
<increment>10</increment>
|
||||
</contourLabeling>
|
||||
</contourStyle>
|
||||
</styleRule>
|
||||
<styleRule>
|
||||
<paramLevelMatches>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
<parameter>CPOFP</parameter>
|
||||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<displayUnits>%</displayUnits>
|
||||
<contourLabeling labelSpacing="4">
|
||||
<values>0 10 20 30 40 50 60 70 80 90 100</values>
|
||||
</contourLabeling>
|
||||
</contourStyle>
|
||||
</styleRule>
|
||||
|
||||
<!--
|
||||
* GH, GHxSM, zAGL
|
||||
dam | 0.1 | 0.0 | 4 | i4 | |..|8000F0FF| | 0 | 50
|
||||
|
@ -3978,6 +4003,7 @@ kts | 1.0 | 0.0 | 4 | | |..|8000F0FF|,400,0.5,,0 | 8 | \
|
|||
<creatingEntity>HiResW-ARW-AK</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-PR</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-SJU</creatingEntity>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<displayUnits label="g/Kg/12hr">((g/kg)/h*12)*-1.0</displayUnits>
|
||||
|
@ -4096,6 +4122,7 @@ in | .03937 | 0 | 4 | | |..|8000F0FF| | 16 | \
|
|||
<creatingEntity>HiResW-ARW-AK</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-PR</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-SJU</creatingEntity>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
</paramLevelMatches>
|
||||
<contourStyle>
|
||||
<displayUnits label="-ubar/s">(Pa/s)*-0.1</displayUnits>
|
||||
|
@ -4116,6 +4143,7 @@ in | .03937 | 0 | 4 | | |..|8000F0FF| | 16 | \
|
|||
<creatingEntity>HiResW-ARW-AK</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-PR</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-SJU</creatingEntity>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
<parameter>AV</parameter>
|
||||
<parameter>RV</parameter>
|
||||
<parameter>geoVort</parameter>
|
||||
|
@ -4143,6 +4171,7 @@ in | .03937 | 0 | 4 | | |..|8000F0FF| | 16 | \
|
|||
<creatingEntity>HiResW-ARW-AK</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-PR</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-SJU</creatingEntity>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
<parameter>VAdv</parameter>
|
||||
<parameter>dVAdv</parameter>
|
||||
<parameter>PIVA</parameter>
|
||||
|
|
|
@ -50,6 +50,39 @@
|
|||
<displayUnits>ft</displayUnits>
|
||||
</imageStyle>
|
||||
</styleRule>
|
||||
|
||||
<!-- HRRR -->
|
||||
<styleRule>
|
||||
<paramLevelMatches>
|
||||
<parameter>MaxWHRRR</parameter>
|
||||
</paramLevelMatches>
|
||||
<imageStyle>
|
||||
<displayUnits>kts</displayUnits>
|
||||
<defaultColormap>Grid/gridded data</defaultColormap>
|
||||
</imageStyle>
|
||||
</styleRule>
|
||||
<styleRule>
|
||||
<paramLevelMatches>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
<parameter>CPOFP</parameter>
|
||||
</paramLevelMatches>
|
||||
<imageStyle>
|
||||
<interpolate>false</interpolate>
|
||||
<displayUnits>%</displayUnits>
|
||||
<range scale="LINEAR">
|
||||
<minValue>-50</minValue>
|
||||
<maxValue>100</maxValue>
|
||||
</range>
|
||||
<defaultColormap>Grid/gridded data</defaultColormap>
|
||||
<dataMapping>
|
||||
<entry pixelValue="-50.0" operator="=" label="" />
|
||||
<entry pixelValue="0" operator=">" displayValue='0.0' />
|
||||
<entry pixelValue="25" operator=">" displayValue='25.0' />
|
||||
<entry pixelValue="50" operator=">" displayValue='50.0' />
|
||||
<entry pixelValue="75" operator=">" displayValue='75.0' />
|
||||
</dataMapping>
|
||||
</imageStyle>
|
||||
</styleRule>
|
||||
<!--
|
||||
* GH, GHxSM, Topo, zAGL
|
||||
km | 0.001 | 0.0 | 0 | 1 | | | 29 | -1 | 0.1
|
||||
|
@ -4472,6 +4505,7 @@
|
|||
<creatingEntity>HiResW-ARW-AK</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-PR</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-SJU</creatingEntity>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
</paramLevelMatches>
|
||||
<imageStyle>
|
||||
<displayUnits label="g/kg/12hr">((g/kg)/(h*12))*-0.001</displayUnits>
|
||||
|
@ -4846,6 +4880,7 @@
|
|||
<creatingEntity>HiResW-ARW-AK</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-PR</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-SJU</creatingEntity>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
</paramLevelMatches>
|
||||
<imageStyle>
|
||||
<displayUnits label="-ubar/s">(Pa/s)*-0.1</displayUnits>
|
||||
|
@ -4871,6 +4906,7 @@
|
|||
<creatingEntity>HiResW-ARW-AK</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-PR</creatingEntity>
|
||||
<creatingEntity>HiResW-ARW-SJU</creatingEntity>
|
||||
<creatingEntity>HRRR</creatingEntity>
|
||||
<parameter>AV</parameter>
|
||||
<parameter>Tdef</parameter>
|
||||
<parameter>geoVort</parameter>
|
||||
|
|
|
@ -0,0 +1,260 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<colorMap xmlns:ns2="group" xmlns:ns3="http://www.example.org/productType">
|
||||
<!-- this is a converted legacy colomap - dec2012 naming -->
|
||||
<color r="0.0" g="0.0" b="0.0" a="0.0"/>
|
||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.000000" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.580392" g="0.607843" b="0.709804" a="1.0"/>
|
||||
<color r="0.572549" g="0.603922" b="0.709804" a="1.0"/>
|
||||
<color r="0.560784" g="0.596078" b="0.705882" a="1.0"/>
|
||||
<color r="0.552941" g="0.588235" b="0.705882" a="1.0"/>
|
||||
<color r="0.541176" g="0.580392" b="0.701961" a="1.0"/>
|
||||
<color r="0.533333" g="0.572549" b="0.701961" a="1.0"/>
|
||||
<color r="0.521569" g="0.564706" b="0.698039" a="1.0"/>
|
||||
<color r="0.513725" g="0.556863" b="0.694118" a="1.0"/>
|
||||
<color r="0.501961" g="0.552941" b="0.694118" a="1.0"/>
|
||||
<color r="0.494118" g="0.545098" b="0.690196" a="1.0"/>
|
||||
<color r="0.482353" g="0.537255" b="0.690196" a="1.0"/>
|
||||
<color r="0.470588" g="0.529412" b="0.686275" a="1.0"/>
|
||||
<color r="0.462745" g="0.521569" b="0.686275" a="1.0"/>
|
||||
<color r="0.450980" g="0.513725" b="0.682353" a="1.0"/>
|
||||
<color r="0.443137" g="0.505882" b="0.678431" a="1.0"/>
|
||||
<color r="0.431373" g="0.498039" b="0.678431" a="1.0"/>
|
||||
<color r="0.423529" g="0.494118" b="0.674510" a="1.0"/>
|
||||
<color r="0.411765" g="0.486275" b="0.674510" a="1.0"/>
|
||||
<color r="0.403922" g="0.478431" b="0.670588" a="1.0"/>
|
||||
<color r="0.392157" g="0.470588" b="0.666667" a="1.0"/>
|
||||
<color r="0.384314" g="0.462745" b="0.666667" a="1.0"/>
|
||||
<color r="0.372549" g="0.454902" b="0.662745" a="1.0"/>
|
||||
<color r="0.360784" g="0.447059" b="0.662745" a="1.0"/>
|
||||
<color r="0.352941" g="0.439216" b="0.658824" a="1.0"/>
|
||||
<color r="0.341176" g="0.435294" b="0.658824" a="1.0"/>
|
||||
<color r="0.333333" g="0.427451" b="0.654902" a="1.0"/>
|
||||
<color r="0.321569" g="0.419608" b="0.650980" a="1.0"/>
|
||||
<color r="0.313725" g="0.411765" b="0.650980" a="1.0"/>
|
||||
<color r="0.301961" g="0.403922" b="0.647059" a="1.0"/>
|
||||
<color r="0.294118" g="0.396078" b="0.647059" a="1.0"/>
|
||||
<color r="0.270588" g="0.380392" b="0.639216" a="1.0"/>
|
||||
<color r="0.270588" g="0.392157" b="0.639216" a="1.0"/>
|
||||
<color r="0.274510" g="0.407843" b="0.643137" a="1.0"/>
|
||||
<color r="0.278431" g="0.419608" b="0.643137" a="1.0"/>
|
||||
<color r="0.278431" g="0.435294" b="0.647059" a="1.0"/>
|
||||
<color r="0.282353" g="0.450980" b="0.647059" a="1.0"/>
|
||||
<color r="0.286275" g="0.462745" b="0.650980" a="1.0"/>
|
||||
<color r="0.290196" g="0.478431" b="0.654902" a="1.0"/>
|
||||
<color r="0.290196" g="0.494118" b="0.654902" a="1.0"/>
|
||||
<color r="0.294118" g="0.505882" b="0.658824" a="1.0"/>
|
||||
<color r="0.298039" g="0.521569" b="0.658824" a="1.0"/>
|
||||
<color r="0.298039" g="0.537255" b="0.662745" a="1.0"/>
|
||||
<color r="0.301961" g="0.549020" b="0.666667" a="1.0"/>
|
||||
<color r="0.305882" g="0.564706" b="0.666667" a="1.0"/>
|
||||
<color r="0.309804" g="0.580392" b="0.670588" a="1.0"/>
|
||||
<color r="0.309804" g="0.592157" b="0.670588" a="1.0"/>
|
||||
<color r="0.313725" g="0.607843" b="0.674510" a="1.0"/>
|
||||
<color r="0.317647" g="0.623529" b="0.678431" a="1.0"/>
|
||||
<color r="0.317647" g="0.635294" b="0.678431" a="1.0"/>
|
||||
<color r="0.321569" g="0.650980" b="0.682353" a="1.0"/>
|
||||
<color r="0.325490" g="0.666667" b="0.682353" a="1.0"/>
|
||||
<color r="0.329412" g="0.678431" b="0.686275" a="1.0"/>
|
||||
<color r="0.329412" g="0.694118" b="0.690196" a="1.0"/>
|
||||
<color r="0.333333" g="0.709804" b="0.690196" a="1.0"/>
|
||||
<color r="0.337255" g="0.721569" b="0.694118" a="1.0"/>
|
||||
<color r="0.337255" g="0.737255" b="0.694118" a="1.0"/>
|
||||
<color r="0.341176" g="0.752941" b="0.698039" a="1.0"/>
|
||||
<color r="0.345098" g="0.764706" b="0.701961" a="1.0"/>
|
||||
<color r="0.349020" g="0.780392" b="0.701961" a="1.0"/>
|
||||
<color r="0.349020" g="0.796078" b="0.705882" a="1.0"/>
|
||||
<color r="0.352941" g="0.807843" b="0.705882" a="1.0"/>
|
||||
<color r="0.360784" g="0.839216" b="0.713725" a="1.0"/>
|
||||
<color r="0.356863" g="0.831373" b="0.701961" a="1.0"/>
|
||||
<color r="0.349020" g="0.823529" b="0.686275" a="1.0"/>
|
||||
<color r="0.341176" g="0.811765" b="0.674510" a="1.0"/>
|
||||
<color r="0.337255" g="0.803922" b="0.658824" a="1.0"/>
|
||||
<color r="0.329412" g="0.792157" b="0.647059" a="1.0"/>
|
||||
<color r="0.321569" g="0.784314" b="0.631373" a="1.0"/>
|
||||
<color r="0.317647" g="0.772549" b="0.619608" a="1.0"/>
|
||||
<color r="0.309804" g="0.764706" b="0.603922" a="1.0"/>
|
||||
<color r="0.301961" g="0.752941" b="0.592157" a="1.0"/>
|
||||
<color r="0.298039" g="0.745098" b="0.576471" a="1.0"/>
|
||||
<color r="0.290196" g="0.737255" b="0.564706" a="1.0"/>
|
||||
<color r="0.282353" g="0.725490" b="0.549020" a="1.0"/>
|
||||
<color r="0.278431" g="0.717647" b="0.537255" a="1.0"/>
|
||||
<color r="0.270588" g="0.705882" b="0.521569" a="1.0"/>
|
||||
<color r="0.262745" g="0.698039" b="0.509804" a="1.0"/>
|
||||
<color r="0.258824" g="0.686275" b="0.494118" a="1.0"/>
|
||||
<color r="0.250980" g="0.678431" b="0.482353" a="1.0"/>
|
||||
<color r="0.243137" g="0.666667" b="0.466667" a="1.0"/>
|
||||
<color r="0.239216" g="0.658824" b="0.454902" a="1.0"/>
|
||||
<color r="0.231373" g="0.650980" b="0.439216" a="1.0"/>
|
||||
<color r="0.223529" g="0.639216" b="0.427451" a="1.0"/>
|
||||
<color r="0.219608" g="0.631373" b="0.411765" a="1.0"/>
|
||||
<color r="0.211765" g="0.619608" b="0.400000" a="1.0"/>
|
||||
<color r="0.203922" g="0.611765" b="0.384314" a="1.0"/>
|
||||
<color r="0.200000" g="0.600000" b="0.372549" a="1.0"/>
|
||||
<color r="0.192157" g="0.592157" b="0.356863" a="1.0"/>
|
||||
<color r="0.184314" g="0.580392" b="0.345098" a="1.0"/>
|
||||
<color r="0.180392" g="0.572549" b="0.329412" a="1.0"/>
|
||||
<color r="0.172549" g="0.560784" b="0.317647" a="1.0"/>
|
||||
<color r="0.164706" g="0.552941" b="0.301961" a="1.0"/>
|
||||
<color r="0.160784" g="0.545098" b="0.290196" a="1.0"/>
|
||||
<color r="0.152941" g="0.533333" b="0.274510" a="1.0"/>
|
||||
<color r="0.145098" g="0.525490" b="0.262745" a="1.0"/>
|
||||
<color r="0.141176" g="0.513725" b="0.247059" a="1.0"/>
|
||||
<color r="0.133333" g="0.505882" b="0.235294" a="1.0"/>
|
||||
<color r="0.125490" g="0.494118" b="0.219608" a="1.0"/>
|
||||
<color r="0.121569" g="0.486275" b="0.207843" a="1.0"/>
|
||||
<color r="0.113725" g="0.474510" b="0.192157" a="1.0"/>
|
||||
<color r="0.105882" g="0.466667" b="0.180392" a="1.0"/>
|
||||
<color r="0.101961" g="0.458824" b="0.164706" a="1.0"/>
|
||||
<color r="0.094118" g="0.447059" b="0.152941" a="1.0"/>
|
||||
<color r="0.086275" g="0.439216" b="0.137255" a="1.0"/>
|
||||
<color r="0.082353" g="0.427451" b="0.125490" a="1.0"/>
|
||||
<color r="0.074510" g="0.419608" b="0.109804" a="1.0"/>
|
||||
<color r="0.066667" g="0.407843" b="0.098039" a="1.0"/>
|
||||
<color r="0.062745" g="0.400000" b="0.082353" a="1.0"/>
|
||||
<color r="0.054902" g="0.388235" b="0.070588" a="1.0"/>
|
||||
<color r="0.039216" g="0.368627" b="0.039216" a="1.0"/>
|
||||
<color r="0.082353" g="0.388235" b="0.039216" a="1.0"/>
|
||||
<color r="0.129412" g="0.407843" b="0.039216" a="1.0"/>
|
||||
<color r="0.176471" g="0.431373" b="0.035294" a="1.0"/>
|
||||
<color r="0.219608" g="0.450980" b="0.035294" a="1.0"/>
|
||||
<color r="0.266667" g="0.474510" b="0.031373" a="1.0"/>
|
||||
<color r="0.313725" g="0.494118" b="0.031373" a="1.0"/>
|
||||
<color r="0.356863" g="0.517647" b="0.027451" a="1.0"/>
|
||||
<color r="0.403922" g="0.537255" b="0.027451" a="1.0"/>
|
||||
<color r="0.450980" g="0.556863" b="0.023529" a="1.0"/>
|
||||
<color r="0.494118" g="0.580392" b="0.023529" a="1.0"/>
|
||||
<color r="0.541176" g="0.600000" b="0.019608" a="1.0"/>
|
||||
<color r="0.588235" g="0.623529" b="0.019608" a="1.0"/>
|
||||
<color r="0.631373" g="0.643137" b="0.015686" a="1.0"/>
|
||||
<color r="0.678431" g="0.666667" b="0.015686" a="1.0"/>
|
||||
<color r="0.725490" g="0.686275" b="0.011765" a="1.0"/>
|
||||
<color r="0.768627" g="0.705882" b="0.011765" a="1.0"/>
|
||||
<color r="0.815686" g="0.729412" b="0.007843" a="1.0"/>
|
||||
<color r="0.862745" g="0.749020" b="0.007843" a="1.0"/>
|
||||
<color r="0.905882" g="0.772549" b="0.003922" a="1.0"/>
|
||||
<color r="0.949020" g="0.776471" b="0.000000" a="1.0"/>
|
||||
<color r="0.949020" g="0.768627" b="0.000000" a="1.0"/>
|
||||
<color r="0.949020" g="0.756863" b="0.000000" a="1.0"/>
|
||||
<color r="0.952941" g="0.745098" b="0.000000" a="1.0"/>
|
||||
<color r="0.952941" g="0.737255" b="0.000000" a="1.0"/>
|
||||
<color r="0.956863" g="0.725490" b="0.000000" a="1.0"/>
|
||||
<color r="0.956863" g="0.713725" b="0.000000" a="1.0"/>
|
||||
<color r="0.960784" g="0.705882" b="0.000000" a="1.0"/>
|
||||
<color r="0.960784" g="0.694118" b="0.000000" a="1.0"/>
|
||||
<color r="0.964706" g="0.682353" b="0.000000" a="1.0"/>
|
||||
<color r="0.964706" g="0.674510" b="0.000000" a="1.0"/>
|
||||
<color r="0.968627" g="0.662745" b="0.000000" a="1.0"/>
|
||||
<color r="0.968627" g="0.650980" b="0.000000" a="1.0"/>
|
||||
<color r="0.972549" g="0.643137" b="0.000000" a="1.0"/>
|
||||
<color r="0.972549" g="0.631373" b="0.000000" a="1.0"/>
|
||||
<color r="0.972549" g="0.619608" b="0.000000" a="1.0"/>
|
||||
<color r="0.976471" g="0.611765" b="0.000000" a="1.0"/>
|
||||
<color r="0.976471" g="0.600000" b="0.000000" a="1.0"/>
|
||||
<color r="0.980392" g="0.588235" b="0.000000" a="1.0"/>
|
||||
<color r="0.980392" g="0.580392" b="0.000000" a="1.0"/>
|
||||
<color r="0.984314" g="0.568627" b="0.000000" a="1.0"/>
|
||||
<color r="0.984314" g="0.556863" b="0.000000" a="1.0"/>
|
||||
<color r="0.988235" g="0.549020" b="0.000000" a="1.0"/>
|
||||
<color r="0.988235" g="0.537255" b="0.000000" a="1.0"/>
|
||||
<color r="0.992157" g="0.525490" b="0.000000" a="1.0"/>
|
||||
<color r="0.992157" g="0.517647" b="0.000000" a="1.0"/>
|
||||
<color r="0.996078" g="0.505882" b="0.000000" a="1.0"/>
|
||||
<color r="0.996078" g="0.494118" b="0.000000" a="1.0"/>
|
||||
<color r="0.968627" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.952941" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.937255" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.921569" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.905882" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.886275" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.870588" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.854902" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.839216" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.823529" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.803922" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.788235" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.772549" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.756863" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.737255" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.721569" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.705882" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.690196" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.674510" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.654902" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.639216" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.623529" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.607843" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.588235" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.572549" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.556863" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.541176" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.525490" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.505882" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.490196" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.474510" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="0.458824" g="0.000000" b="0.000000" a="1.0"/>
|
||||
<color r="1.000000" g="1.000000" b="1.000000" a="1.0"/>
|
||||
<color r="1.000000" g="0.972549" b="1.000000" a="1.0"/>
|
||||
<color r="1.000000" g="0.941176" b="0.996078" a="1.0"/>
|
||||
<color r="1.000000" g="0.909804" b="0.992157" a="1.0"/>
|
||||
<color r="1.000000" g="0.878431" b="0.988235" a="1.0"/>
|
||||
<color r="1.000000" g="0.847059" b="0.984314" a="1.0"/>
|
||||
<color r="1.000000" g="0.815686" b="0.980392" a="1.0"/>
|
||||
<color r="1.000000" g="0.784314" b="0.976471" a="1.0"/>
|
||||
<color r="1.000000" g="0.752941" b="0.972549" a="1.0"/>
|
||||
<color r="1.000000" g="0.721569" b="0.968627" a="1.0"/>
|
||||
<color r="1.000000" g="0.690196" b="0.964706" a="1.0"/>
|
||||
<color r="1.000000" g="0.658824" b="0.960784" a="1.0"/>
|
||||
<color r="1.000000" g="0.627451" b="0.956863" a="1.0"/>
|
||||
<color r="1.000000" g="0.596078" b="0.952941" a="1.0"/>
|
||||
<color r="1.000000" g="0.564706" b="0.949020" a="1.0"/>
|
||||
<color r="1.000000" g="0.533333" b="0.945098" a="1.0"/>
|
||||
<color r="1.000000" g="0.501961" b="0.945098" a="1.0"/>
|
||||
<color r="1.000000" g="0.470588" b="0.941176" a="1.0"/>
|
||||
<color r="1.000000" g="0.439216" b="0.937255" a="1.0"/>
|
||||
<color r="1.000000" g="0.407843" b="0.933333" a="1.0"/>
|
||||
<color r="1.000000" g="0.376471" b="0.929412" a="1.0"/>
|
||||
<color r="1.000000" g="0.345098" b="0.925490" a="1.0"/>
|
||||
<color r="1.000000" g="0.313725" b="0.921569" a="1.0"/>
|
||||
<color r="1.000000" g="0.282353" b="0.917647" a="1.0"/>
|
||||
<color r="1.000000" g="0.250980" b="0.913725" a="1.0"/>
|
||||
<color r="1.000000" g="0.219608" b="0.909804" a="1.0"/>
|
||||
<color r="1.000000" g="0.188235" b="0.905882" a="1.0"/>
|
||||
<color r="1.000000" g="0.156863" b="0.901961" a="1.0"/>
|
||||
<color r="1.000000" g="0.125490" b="0.898039" a="1.0"/>
|
||||
<color r="1.000000" g="0.094118" b="0.894118" a="1.0"/>
|
||||
<color r="1.000000" g="0.062745" b="0.890196" a="1.0"/>
|
||||
<color r="0.701961" g="0.000000" b="1.000000" a="1.0"/>
|
||||
<color r="0.686275" g="0.000000" b="0.992157" a="1.0"/>
|
||||
<color r="0.666667" g="0.000000" b="0.984314" a="1.0"/>
|
||||
<color r="0.650980" g="0.000000" b="0.972549" a="1.0"/>
|
||||
<color r="0.631373" g="0.000000" b="0.964706" a="1.0"/>
|
||||
<color r="0.611765" g="0.000000" b="0.952941" a="1.0"/>
|
||||
<color r="0.596078" g="0.000000" b="0.945098" a="1.0"/>
|
||||
<color r="0.576471" g="0.000000" b="0.937255" a="1.0"/>
|
||||
<color r="0.556863" g="0.000000" b="0.925490" a="1.0"/>
|
||||
<color r="0.541176" g="0.000000" b="0.917647" a="1.0"/>
|
||||
<color r="0.521569" g="0.000000" b="0.905882" a="1.0"/>
|
||||
<color r="0.501961" g="0.000000" b="0.898039" a="1.0"/>
|
||||
<color r="0.486275" g="0.000000" b="0.890196" a="1.0"/>
|
||||
<color r="0.466667" g="0.000000" b="0.878431" a="1.0"/>
|
||||
<color r="0.447059" g="0.000000" b="0.870588" a="1.0"/>
|
||||
<color r="0.431373" g="0.000000" b="0.858824" a="1.0"/>
|
||||
<color r="0.411765" g="0.000000" b="0.850980" a="1.0"/>
|
||||
<color r="0.019608" g="0.925490" b="0.941176" a="1.0"/>
|
||||
<color r="0.019608" g="0.866667" b="0.878431" a="1.0"/>
|
||||
<color r="0.019608" g="0.803922" b="0.815686" a="1.0"/>
|
||||
<color r="0.015686" g="0.741176" b="0.752941" a="1.0"/>
|
||||
<color r="0.015686" g="0.682353" b="0.690196" a="1.0"/>
|
||||
<color r="0.015686" g="0.619608" b="0.627451" a="1.0"/>
|
||||
<color r="0.011765" g="0.556863" b="0.564706" a="1.0"/>
|
||||
<color r="0.011765" g="0.494118" b="0.501961" a="1.0"/>
|
||||
<color r="0.011765" g="0.435294" b="0.439216" a="1.0"/>
|
||||
<color r="0.007843" g="0.372549" b="0.376471" a="1.0"/>
|
||||
<color r="0.007843" g="0.309804" b="0.313725" a="1.0"/>
|
||||
<color r="0.007843" g="0.247059" b="0.250980" a="1.0"/>
|
||||
<color r="0.003922" g="0.188235" b="0.188235" a="1.0"/>
|
||||
<color r="0.003922" g="0.125490" b="0.125490" a="1.0"/>
|
||||
<color r="0.227451" g="0.403922" b="0.709804" a="1.0"/>
|
||||
<color r="1.0" g="1.0" b="1.0" a="1.0"/>
|
||||
</colorMap>
|
|
@ -61,6 +61,7 @@ import com.raytheon.uf.common.status.UFStatus.Priority;
|
|||
* Apr 24, 2013 1943 jsanchez Marked areaConfig as Deprecated.
|
||||
* Oct 22, 2013 2361 njensen Removed ISerializableObject
|
||||
* Apr 28, 2014 3033 jsanchez Properly handled back up configuration (*.xml) files.
|
||||
* Aug 28, 2014 ASM #15658 D. Friedman Add marine zone watch wording option.
|
||||
* </pre>
|
||||
*
|
||||
* @author chammack
|
||||
|
@ -103,6 +104,9 @@ public class WarngenConfiguration {
|
|||
@XmlElement(name = "includedWatch")
|
||||
private String[] includedWatches;
|
||||
|
||||
@XmlElement
|
||||
private boolean includeMarineAreasInWatches;
|
||||
|
||||
@XmlElementWrapper(name = "durations")
|
||||
@XmlElement(name = "duration")
|
||||
private int[] durations;
|
||||
|
@ -392,6 +396,14 @@ public class WarngenConfiguration {
|
|||
return includedWatches;
|
||||
}
|
||||
|
||||
public boolean isIncludeMarineAreasInWatches() {
|
||||
return includeMarineAreasInWatches;
|
||||
}
|
||||
|
||||
public void setIncludeMarineAreasInWatches(boolean includeMarineAreasInWatches) {
|
||||
this.includeMarineAreasInWatches = includeMarineAreasInWatches;
|
||||
}
|
||||
|
||||
public boolean getEnableRestart() {
|
||||
return enableRestart;
|
||||
}
|
||||
|
|
|
@ -11,7 +11,9 @@
|
|||
##### Evan Bookbinder 05-05-2013 handleClosesPoints and 3rd bullet changes (OVER & now)
|
||||
##### Evan Bookbinder 09-20-2013 Fixed rural area otherPoints in pathcast section, added rural phrase
|
||||
##### Qinglu Lin 03-17-2014 DR 16309. Updated inserttorwatches and insertsvrwatches.
|
||||
##### Qinglu Lin 05-21-2014 DR 16309. Updated inserttorwatches and insertsvrwatches by changing 'FOR##' to 'FOR ##'.
|
||||
##### Qinglu Lin 05-21-2014 DR 16309. Updated inserttorwatches and insertsvrwatches by changing 'FOR##' to 'FOR ##'.
|
||||
##### D. Friedman 08-28-2014 ASM #15658. Add marine watch wording.
|
||||
##### Qinglu Lin 08-29-2014 ASM #15551. Overhauled inserttorwatches and insertsvrwatches.
|
||||
####################################################################################################
|
||||
#*
|
||||
Mile Marker Test Code
|
||||
|
@ -189,94 +191,111 @@ ${drainage.name}##
|
|||
########END MACRO
|
||||
|
||||
#macro(inserttorwatches $watches $list $secondtimezone $dateUtil $timeFormat)
|
||||
#set($keys = [])
|
||||
#set($mymap = {})
|
||||
#set($tornadoWatches = [])
|
||||
#set($ALSO = "")
|
||||
|
||||
#foreach(${watch} in ${watches})
|
||||
#if(${watch.getPhenSig()} == 'TO.A')
|
||||
#set($key = ${watch.action} + ${watch.etn} + ${watch.startTime} + ${watch.endTime})
|
||||
#if (${list.contains(${keys}, $key)})
|
||||
#set($value = ${mymap.get($key)})
|
||||
#set($success = $tornadoWatches.add($watch))
|
||||
#end
|
||||
#end
|
||||
|
||||
#set($lastEtn = "")
|
||||
#set($lastEndTime = "")
|
||||
#foreach(${watch} in ${tornadoWatches})
|
||||
#if($lastEtn != "" && ${watch.etn} != ${lastEtn})
|
||||
. ##
|
||||
#end
|
||||
#set($endTime = ${watch.endTime})
|
||||
#if(${watch.etn} == ${lastEtn})
|
||||
#if(${endTime} == ${lastEndTime})
|
||||
...##
|
||||
#else
|
||||
#set($value = [])
|
||||
#set($success = $keys.add($key))
|
||||
...UNTIL ${dateUtil.format(${endTime}, ${timeFormat.plain}, 15, ${localtimezone})} FOR ##
|
||||
#end
|
||||
#set($success = $value.add($watch))
|
||||
#set($success = ${mymap.put($key,$value)})
|
||||
#else
|
||||
A TORNADO WATCH${ALSO} REMAINS IN EFFECT UNTIL ${dateUtil.format(${endTime}, ${timeFormat.plain}, 15, ${localtimezone})} FOR ##
|
||||
#set($ALSO = " ALSO")
|
||||
#end
|
||||
#end
|
||||
#set($torWatchAlso = "")
|
||||
#foreach(${key} in ${keys})
|
||||
#set($tornadoWatches = ${mymap.get($key)})
|
||||
#set($tornadoWatch = ${tornadoWatches.get(0)})
|
||||
A TORNADO WATCH ${torWatchAlso}REMAINS IN EFFECT UNTIL ${dateUtil.format(${tornadoWatch.endTime}, ${timeFormat.plain}, 15, ${localtimezone})}##
|
||||
${dateUtil.period(${tornadoWatch.endTime},${timeFormat.plain}, 15, ${localtimezone})}##
|
||||
#if(${secondtimezone})
|
||||
/${dateUtil.format(${watch.getEndTime()}, ${timeFormat.plain}, 15, ${secondtimezone})}/##
|
||||
#end
|
||||
FOR ##
|
||||
#set($numPortions = ${list.size(${tornadoWatches})})
|
||||
#set($count = 0)
|
||||
#foreach(${watch} in ${tornadoWatches})
|
||||
#set($count = $count + 1)
|
||||
#if(!${watch.marineAreas})
|
||||
#areaFormat(${watch.partOfState} true false true)${watch.state}##
|
||||
#if($count == $numPortions - 1)
|
||||
AND ##
|
||||
#elseif($count < $numPortions)
|
||||
...##
|
||||
#else
|
||||
#formatMarineAreas(${watch.marineAreas})
|
||||
#end
|
||||
#set($lastEtn = ${watch.etn})
|
||||
#set($lastEndTime = ${watch.endTime})
|
||||
#end
|
||||
#set($torWatchAlso = "ALSO ")
|
||||
. ##
|
||||
#if(${lastEtn} != "")
|
||||
.
|
||||
#end
|
||||
|
||||
|
||||
#end
|
||||
########END MACRO
|
||||
|
||||
#macro(insertsvrwatches $watches $list $secondtimezone $dateUtil $timeFormat)
|
||||
#set($keys = [])
|
||||
#set($mymap = {})
|
||||
#set($svrWatches = [])
|
||||
#set($ALSO = "")
|
||||
|
||||
#foreach(${watch} in ${watches})
|
||||
#if(${watch.getPhenSig()} == 'SV.A')
|
||||
#set($key = ${watch.action} + ${watch.etn} + ${watch.startTime} + ${watch.endTime})
|
||||
#if (${list.contains(${keys}, $key)})
|
||||
#set($value = ${mymap.get($key)})
|
||||
#set($success = $svrWatches.add($watch))
|
||||
#end
|
||||
#end
|
||||
|
||||
#set($lastEtn = "")
|
||||
#set($lastEndTime = "")
|
||||
#foreach(${watch} in ${svrWatches})
|
||||
#if($lastEtn != "" && ${watch.etn} != ${lastEtn})
|
||||
. ##
|
||||
#end
|
||||
#set($endTime = ${watch.endTime})
|
||||
#if(${watch.etn} == ${lastEtn})
|
||||
#if(${endTime} == ${lastEndTime})
|
||||
...##
|
||||
#else
|
||||
#set($value = [])
|
||||
#set($success = $keys.add($key))
|
||||
...UNTIL ${dateUtil.format(${endTime}, ${timeFormat.plain}, 15, ${localtimezone})} FOR ##
|
||||
#end
|
||||
#set($success = $value.add($watch))
|
||||
#set($success = ${mymap.put($key,$value)})
|
||||
#else
|
||||
A SEVERE THUNDERSTORM WATCH${ALSO} REMAINS IN EFFECT UNTIL ${dateUtil.format(${endTime}, ${timeFormat.plain}, 15, ${localtimezone})} FOR ##
|
||||
#set($ALSO = " ALSO")
|
||||
#end
|
||||
#end
|
||||
#set($svrWatchAlso = "")
|
||||
#foreach(${key} in ${keys})
|
||||
#set($severeWatches = ${mymap.get($key)})
|
||||
#set($svrWatch = ${severeWatches.get(0)})
|
||||
A SEVERE THUNDERSTORM WATCH ${svrWatchAlso}REMAINS IN EFFECT UNTIL ${dateUtil.format(${svrWatch.endTime}, ${timeFormat.plain}, 15, ${localtimezone})}##
|
||||
${dateUtil.period(${svrWatch.endTime},${timeFormat.plain}, 15, ${localtimezone})}##
|
||||
#if(${secondtimezone})
|
||||
/${dateUtil.format(${watch.getEndTime()}, ${timeFormat.plain}, 15, ${secondtimezone})}/##
|
||||
#end
|
||||
FOR ##
|
||||
#set($numPortions = ${list.size(${severeWatches})})
|
||||
#set($count = 0)
|
||||
#foreach(${watch} in ${severeWatches})
|
||||
#set($count = $count + 1)
|
||||
#if(!${watch.marineAreas})
|
||||
#areaFormat(${watch.partOfState} true false true)${watch.state}##
|
||||
#if($count == $numPortions - 1)
|
||||
#else
|
||||
#formatMarineAreas(${watch.marineAreas})
|
||||
#end
|
||||
#set($lastEtn = ${watch.etn})
|
||||
#set($lastEndTime = ${watch.endTime})
|
||||
#end
|
||||
#if(${lastEtn} != "")
|
||||
.
|
||||
#end
|
||||
#end
|
||||
########END MACRO
|
||||
|
||||
#macro(formatMarineAreas $marineAreas)
|
||||
#set($macount = 0)
|
||||
#set($numMarineAreas = ${list.size(${marineAreas})})
|
||||
#foreach(${marineArea} in ${marineAreas})
|
||||
#set($macount = $macount + 1)
|
||||
#if(${marineArea}=="THE ADJACENT COASTAL WATERS" && $macount > 1)
|
||||
OTHER ADJACENT COASTAL WATERS##
|
||||
#else
|
||||
${marineArea}##
|
||||
#end
|
||||
#if($macount == $numMarineAreas - 1)
|
||||
AND ##
|
||||
#elseif($count < $numPortions)
|
||||
#elseif($macount < $numMarineAreas)
|
||||
...##
|
||||
#end
|
||||
#end
|
||||
#set($svrWatchAlso = "ALSO ")
|
||||
. ##
|
||||
#end
|
||||
|
||||
|
||||
#end
|
||||
########END
|
||||
########END MACRO
|
||||
|
||||
#macro(printcoords $coordinates $list)
|
||||
#set($count = 0)
|
||||
|
|
|
@ -58,6 +58,9 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<includedWatch>SV.A</includedWatch>
|
||||
</includedWatches>
|
||||
|
||||
<!-- Include references to marine zones for watches. See marineZoneWording.xml -->
|
||||
<includeMarineAreasInWatches>true</includeMarineAreasInWatches>
|
||||
|
||||
<!-- durations: the list of possible durations -->
|
||||
<defaultDuration>60</defaultDuration>
|
||||
<durations>
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<!--
|
||||
This file defines grouping and replacement text for marine zones in the watch
|
||||
wording of the template.
|
||||
|
||||
For each entry, the "match" attribute defines a regular expression that is
|
||||
used to match marine zone UGCs. The "replace" attribute defines the text to
|
||||
pass to the template. If the replacement text is empty, the marine zone
|
||||
will not be used. If the "replace" attribute is not present, the marine
|
||||
zone's original name is used.
|
||||
|
||||
Marine zone UGCs are matched against entries in their given order; the first
|
||||
match is used. The order of the entries also determines the order of the
|
||||
values passed to the template.
|
||||
-->
|
||||
<zoneWordingConfig>
|
||||
<entry match="^LEZ.*" replace="THE ADJACENT COASTAL WATERS OF LAKE ERIE" />
|
||||
<entry match="^LHZ.*" replace="THE ADJACENT COASTAL WATERS OF LAKE HURON" />
|
||||
<entry match="^LMZ.*" replace="THE ADJACENT COASTAL WATERS OF LAKE MICHIGAN" />
|
||||
<entry match="^LOZ.*" replace="THE ADJACENT COASTAL WATERS OF LAKE ONTARIO" />
|
||||
<entry match="^LSZ.*" replace="THE ADJACENT COASTAL WATERS OF LAKE SUPERIOR" />
|
||||
<entry match="^LCZ.*" replace="THE ADJACENT COASTAL WATERS OF LAKE SAINT CLAIRE" />
|
||||
<entry match="^SLZ.*" replace="" /> <!-- Saint Lawrence River -->
|
||||
<entry match="^.*" replace="THE ADJACENT COASTAL WATERS" />
|
||||
</zoneWordingConfig>
|
|
@ -61,6 +61,9 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<includedWatch>SV.A</includedWatch>
|
||||
</includedWatches>
|
||||
|
||||
<!-- Include references to marine zones for watches. See marineZoneWording.xml. -->
|
||||
<includeMarineAreasInWatches>true</includeMarineAreasInWatches>
|
||||
|
||||
<!-- durations: the list of possible durations of the warning -->
|
||||
<defaultDuration>30</defaultDuration>
|
||||
<durations>
|
||||
|
|
|
@ -63,6 +63,9 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<includedWatch>SV.A</includedWatch>
|
||||
</includedWatches>
|
||||
|
||||
<!-- Include references to marine zones for watches. See marineZoneWording.xml. -->
|
||||
<includeMarineAreasInWatches>true</includeMarineAreasInWatches>
|
||||
|
||||
<!-- durations: the list of possible durations of the svs -->
|
||||
<!-- THIS REALLY SERVES NO PURPOSE BUT WILL CRASH WARNGEN IF REMVOED -->
|
||||
<defaultDuration>30</defaultDuration>
|
||||
|
|
Loading…
Add table
Reference in a new issue