Merge branch 'master_14.3.1.1' into master_14.3.2
Conflicts: cave/com.raytheon.viz.gfe/localization/gfe/userPython/textUtilities/headline/HazardsTable.py edexOsgi/com.raytheon.uf.edex.activetable/src/com/raytheon/uf/edex/activetable/ActiveTable.java Former-commit-id: 5aa2c444583d03b442768a8e9ea462877a25bb8d
This commit is contained in:
commit
8bfe8fb65f
11 changed files with 366 additions and 199 deletions
|
@ -36,6 +36,7 @@
|
|||
# __warnETNduplication() and
|
||||
# __highestETNActiveTable.
|
||||
# 11/11/14 4953 randerso Changed type of endTime from float to int
|
||||
# 02/05/15 4099 randerso Fixed exception handling in __getActiveTable
|
||||
#
|
||||
|
||||
|
||||
|
@ -933,7 +934,7 @@ class HazardsTable(VTECTableUtil.VTECTableUtil):
|
|||
|
||||
except:
|
||||
self.log.exception("Unable to access VTEC Active Table: ")
|
||||
raise Exception, s
|
||||
raise
|
||||
|
||||
def __createCityHazards(self):
|
||||
if not self.__accurateCities:
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
-Dthrift.stream.maxsize=200
|
||||
-Dviz.memory.warn.threshold=98</vmArgs>
|
||||
<vmArgsLin>-Xmx1280M -XX:MaxDirectMemorySize=2G</vmArgsLin>
|
||||
<vmArgsWin>-Dfile.encoding=UTF-8 -Xmx768M</vmArgsWin>
|
||||
<vmArgsWin>-Dfile.encoding=UTF-8 -Xmx1536M</vmArgsWin>
|
||||
</launcherArgs>
|
||||
|
||||
<windowImages/>
|
||||
|
|
|
@ -71,7 +71,7 @@
|
|||
</appender>
|
||||
|
||||
<!-- activeTableChange log -->
|
||||
<appender name="activeTableLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<appender name="activeTableChangeLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||
<fileNamePattern>${edex.home}/logs/edex-${edex.run.mode}-activeTableChange-%d{yyyyMMdd}.log</fileNamePattern>
|
||||
<maxHistory>30</maxHistory>
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
## EVAN BOOKBINDER -- SEP 18 2013 Implemented config.vm
|
||||
## PHIL KURIMSKI -- JUN 26 2014 OB14.2.2-9 ##
|
||||
## ADDED DSS EVENTS ##
|
||||
## UPDATED PHIL KURIMSKI -- FEB 18 2015 Implemented##
|
||||
## updated CTAs ##
|
||||
#####################################################
|
||||
#parse("config.vm")
|
||||
################################################
|
||||
|
@ -335,7 +337,7 @@ THIS IS A TEST MESSAGE. ##
|
|||
THIS IS A TEST MESSAGE. ##
|
||||
#end
|
||||
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})
|
||||
...${report}LOCATED ##
|
||||
...${report}WAS LOCATED ##
|
||||
#if(${stormType} == "line")
|
||||
#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine})
|
||||
#else
|
||||
|
@ -406,7 +408,7 @@ THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF ${specialE
|
|||
|
||||
## Comment out #parse command below to pull in Dynamic DSS Event Info
|
||||
## If this feature is utilized, the "specialEvent" bullet (output above) can
|
||||
## likely be commented out from the impactSevereThunderstormWarning.xml file
|
||||
## likely be commented out from the impactSpecialMarineWarning.xml file
|
||||
#parse("dssEvents.vm")
|
||||
|
||||
#####################
|
||||
|
@ -430,46 +432,46 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS...
|
|||
${ashfallCTA}
|
||||
|
||||
#if(${list.contains(${bullets}, "genericCTA")})
|
||||
#if(${stormType} == "line")
|
||||
AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS.
|
||||
MOVE TO SAFE HARBOR UNTIL HAZARDOUS WEATHER PASSES.
|
||||
|
||||
#else
|
||||
AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "gustyWindsCTA")})
|
||||
#if(${stormType} == "line")
|
||||
MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS.
|
||||
MOVE TO SAFE HARBOR IMMEDIATELY AS GUSTY WINDS AND HIGH WAVES ARE EXPECTED.
|
||||
|
||||
#else
|
||||
MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "hailWindsCTA")})
|
||||
#if(${stormType} == "line")
|
||||
MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS.
|
||||
BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE WITH THESE STORMS.
|
||||
|
||||
#else
|
||||
MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES.
|
||||
BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE WITH THIS STORM.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "nonThunderstormCTA")})
|
||||
MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE.
|
||||
SEEK SAFE SHELTER...MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES.
|
||||
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "waterspoutCTA")})
|
||||
#if(${list.contains(${bullets}, "thunderstorm")})
|
||||
THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
|
||||
#else
|
||||
WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "lightningCTA")})
|
||||
#if(${stormType} == "line")
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THESE STORMS. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
|
||||
#else
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "reportCTA")})
|
||||
REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE.
|
||||
REPORT SEVERE WEATHER TO THE NATIONAL WEATHER SERVICE OFFICE.
|
||||
|
||||
#end
|
||||
#if(${ctaSelected} == "YES")
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
Note: Volcano information will not show up in the GUI unless uncommented out
|
||||
Phil Kurimski 09-19-2013 added geospatialConfig.xml
|
||||
Phil Kurimski 06-26-2014 added DSS Events
|
||||
Phil Kurimski 02-18-2015 Updated CTA section
|
||||
-->
|
||||
|
||||
<!-- INCLUDE ALL GEOSPTATIAL INFORMATION FOR THIS PRODUCT
|
||||
|
@ -137,13 +138,13 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletName="specialEvent" bulletText="Special heads-up for large event/venue" parseString="THOSE ATTENDING"/>
|
||||
<bullet bulletText="" bulletType="title"/>
|
||||
<bullet bulletText=" ****** CALLS TO ACTION (CHOOSE 1 OR MORE) ****** " bulletType="title"/>
|
||||
<bullet bulletName="genericCTA" bulletText="As thunderstorms move over the water.." parseString="OVER THE WATER...BOATERS CAN EXPECT"/>
|
||||
<bullet bulletName="gustyWindsCTA" bulletText="Mariners can expect gusty winds.." parseString="MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES..."/>
|
||||
<bullet bulletName="hailWindsCTA" bulletText="Mariners can expect cta with hail/wind speeds" parseString="MARINERS CAN EXPECT WIND GUSTS"/>
|
||||
<bullet bulletName="genericCTA" bulletText="Generic CTA" parseString="MOVE TO SAFE HARBOR UNTIL HAZARDOUS WEATHER PASSES"/>
|
||||
<bullet bulletName="gustyWindsCTA" bulletText="Gusty Winds CTA" parseString="MOVE TO SAFE HARBOR IMMEDIATELY AS GUSTY WINDS AND HIGH WAVES ARE EXPECTED"/>
|
||||
<bullet bulletName="hailWindsCTA" bulletText="Wind/Hail cta with hail/wind speeds" parseString="DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE"/>
|
||||
<bullet bulletName="nonThunderstormCTA" bulletText="Non thunderstorm winds - mariners can expect gusty winds.." parseString="MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES"/>
|
||||
<bullet bulletName="waterspoutCTA" bulletText="Thunderstorms can produce waterspouts" parseString="THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent lightning" parseString="FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM"/>
|
||||
<bullet bulletName="reportCTA" bulletText="Report severe wx" parseString="REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY"/>
|
||||
<bullet bulletName="waterspoutCTA" bulletText="Waterspout CTA" parseString="CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent lightning CTA" parseString="FREQUENT LIGHTNING IS OCCURRING WITH"/>
|
||||
<bullet bulletName="reportCTA" bulletText="Report severe wx" parseString="REPORT SEVERE WEATHER TO THE NATIONAL WEATHER SERVICE"/>
|
||||
</bullets>
|
||||
</bulletActionGroup>
|
||||
<bulletActionGroup action="COR" phen="MA" sig="W">
|
||||
|
@ -196,13 +197,13 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletName="specialEvent" bulletText="Special heads-up for large event/venue" parseString="THOSE ATTENDING"/>
|
||||
<bullet bulletText="" bulletType="title"/>
|
||||
<bullet bulletText=" ****** CALLS TO ACTION (CHOOSE 1 OR MORE) ****** " bulletType="title"/>
|
||||
<bullet bulletName="genericCTA" bulletText="As thunderstorms move over the water.." parseString="OVER THE WATER...BOATERS CAN EXPECT"/>
|
||||
<bullet bulletName="gustyWindsCTA" bulletText="Mariners can expect gusty winds.." parseString="MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES..."/>
|
||||
<bullet bulletName="hailWindsCTA" bulletText="Mariners can expect cta with hail/wind speeds" parseString="MARINERS CAN EXPECT WIND GUSTS"/>
|
||||
<bullet bulletName="genericCTA" bulletText="Generic CTA" parseString="MOVE TO SAFE HARBOR UNTIL HAZARDOUS WEATHER PASSES"/>
|
||||
<bullet bulletName="gustyWindsCTA" bulletText="Gusty Winds CTA" parseString="MOVE TO SAFE HARBOR IMMEDIATELY AS GUSTY WINDS AND HIGH WAVES ARE EXPECTED"/>
|
||||
<bullet bulletName="hailWindsCTA" bulletText="Wind/Hail cta with hail/wind speeds" parseString="DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE"/>
|
||||
<bullet bulletName="nonThunderstormCTA" bulletText="Non thunderstorm winds - mariners can expect gusty winds.." parseString="MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES"/>
|
||||
<bullet bulletName="waterspoutCTA" bulletText="Thunderstorms can produce waterspouts" parseString="THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent lightning" parseString="FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM"/>
|
||||
<bullet bulletName="reportCTA" bulletText="Report severe wx" parseString="REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY"/>
|
||||
<bullet bulletName="waterspoutCTA" bulletText="Waterspout CTA" parseString="CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent lightning CTA" parseString="FREQUENT LIGHTNING IS OCCURRING WITH"/>
|
||||
<bullet bulletName="reportCTA" bulletText="Report severe wx" parseString="REPORT SEVERE WEATHER TO THE NATIONAL WEATHER SERVICE"/>
|
||||
</bullets>
|
||||
</bulletActionGroup>
|
||||
</bulletActionGroups>
|
||||
|
|
|
@ -6,6 +6,10 @@
|
|||
## UPDATED BOOKBINDER 9-18-2013 Implemented config.vm
|
||||
## PHIL KURIMSKI -- JUN 26 2014 OB14.2.2-9 ##
|
||||
## ADDED DSS EVENTS ##
|
||||
## UPDATED PHIL KURIMSKI -- FEB 18 2015 Implemented##
|
||||
## updated CTAs ##
|
||||
## MIKE REGA - 2-26-2015 removed wind/hail/spout ##
|
||||
## tags in CAN and EXP ##
|
||||
#####################################################
|
||||
#parse("config.vm")
|
||||
############################################
|
||||
|
@ -447,7 +451,7 @@ ${area.name}...
|
|||
THIS IS A TEST MESSAGE. ##
|
||||
#end
|
||||
#thirdBullet(${dateUtil},${event},${timeFormat},${localtimezone},${secondtimezone})
|
||||
...${report}LOCATED ##
|
||||
...${report}WAS LOCATED ##
|
||||
#if(${stormType} == "line")
|
||||
#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine})
|
||||
#else
|
||||
|
@ -507,7 +511,7 @@ THOSE ATTENDING !**event/venue name or location**! ARE IN THE PATH OF ${specialE
|
|||
|
||||
## Comment out #parse command below to pull in Dynamic DSS Event Info
|
||||
## If this feature is utilized, the "specialEvent" bullet (output above) can
|
||||
## likely be commented out from the impactSevereThunderstormWarning.xml file
|
||||
## likely be commented out from the impactSpecialMarineWarningFollowup.xml file
|
||||
#parse("dssEvents.vm")
|
||||
|
||||
#####################
|
||||
|
@ -532,46 +536,46 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS...
|
|||
${ashfallCTA}
|
||||
|
||||
#if(${list.contains(${bullets}, "genericCTA")})
|
||||
#if(${stormType} == "line")
|
||||
AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS.
|
||||
MOVE TO SAFE HARBOR UNTIL HAZARDOUS WEATHER PASSES.
|
||||
|
||||
#else
|
||||
AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "gustyWindsCTA")})
|
||||
#if(${stormType} == "line")
|
||||
MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS.
|
||||
MOVE TO SAFE HARBOR IMMEDIATELY AS GUSTY WINDS AND HIGH WAVES ARE EXPECTED.
|
||||
|
||||
#else
|
||||
MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "hailWindsCTA")})
|
||||
#if(${stormType} == "line")
|
||||
MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS.
|
||||
BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE WITH THESE STORMS.
|
||||
|
||||
#else
|
||||
MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES.
|
||||
BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE WITH THIS STORM.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "nonThunderstormCTA")})
|
||||
MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE.
|
||||
SEEK SAFE SHELTER...MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES.
|
||||
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "waterspoutCTA")})
|
||||
THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
#if(${list.contains(${bullets}, "thunderstorm")})
|
||||
THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
|
||||
#else
|
||||
WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "lightningCTA")})
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
#if(${stormType} == "line")
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THESE STORMS. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
|
||||
#else
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "reportCTA")})
|
||||
REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE.
|
||||
REPORT SEVERE WEATHER TO THE NATIONAL WEATHER SERVICE OFFICE.
|
||||
|
||||
#end
|
||||
#if(${ctaSelected} == "YES")
|
||||
|
@ -756,7 +760,7 @@ ${area.name}...
|
|||
#if(${productClass}=="T")
|
||||
THIS IS A TEST MESSAGE. ##
|
||||
#end
|
||||
AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${report}LOCATED ##
|
||||
AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${report}WAS LOCATED ##
|
||||
#if(${stormType} == "line")
|
||||
#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine})
|
||||
#else
|
||||
|
@ -822,7 +826,7 @@ THOSE ATTENDING THE !**event/venue name or location**! ARE IN THE PATH OF THIS S
|
|||
|
||||
## Comment out #parse command below to pull in Dynamic DSS Event Info
|
||||
## If this feature is utilized, the "specialEvent" bullet (output above) can
|
||||
## likely be commented out from the impactSevereThunderstormWarning.xml file
|
||||
## likely be commented out from the impactSpecialMarineWarningFollowup.xml file
|
||||
#parse("dssEvents.vm")
|
||||
|
||||
#####################
|
||||
|
@ -847,46 +851,46 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS...
|
|||
${ashfallCTA}
|
||||
|
||||
#if(${list.contains(${bullets}, "genericCTA")})
|
||||
#if(${stormType} == "line")
|
||||
AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS.
|
||||
MOVE TO SAFE HARBOR UNTIL HAZARDOUS WEATHER PASSES.
|
||||
|
||||
#else
|
||||
AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "gustyWindsCTA")})
|
||||
#if(${stormType} == "line")
|
||||
MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS.
|
||||
MOVE TO SAFE HARBOR IMMEDIATELY AS GUSTY WINDS AND HIGH WAVES ARE EXPECTED.
|
||||
|
||||
#else
|
||||
MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "hailWindsCTA")})
|
||||
#if(${stormType} == "line")
|
||||
MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS.
|
||||
BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE WITH THESE STORMS.
|
||||
|
||||
#else
|
||||
MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES.
|
||||
BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE WITH THIS STORM.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "nonThunderstormCTA")})
|
||||
MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE.
|
||||
SEEK SAFE SHELTER...MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES.
|
||||
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "waterspoutCTA")})
|
||||
THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
#if(${list.contains(${bullets}, "thunderstorm")})
|
||||
THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
|
||||
#else
|
||||
WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "lightningCTA")})
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
#if(${stormType} == "line")
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THESE STORMS. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
|
||||
#else
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "reportCTA")})
|
||||
REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE.
|
||||
REPORT SEVERE WEATHER TO THE NATIONAL WEATHER SERVICE OFFICE.
|
||||
|
||||
#end
|
||||
#if(${ctaSelected} == "YES")
|
||||
|
@ -1023,7 +1027,7 @@ ${area.name}...
|
|||
#if(${productClass}=="T")
|
||||
THIS IS A TEST MESSAGE. ##
|
||||
#end
|
||||
AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${report}LOCATED ##
|
||||
AT ${dateUtil.format(${event}, ${timeFormat.clock}, ${localtimezone})}...${report}WAS LOCATED ##
|
||||
##Many of the variables passed below are controlled by config.vm
|
||||
#if(${stormType} == "line")
|
||||
#handleClosestPoints(${list}, ${closestPoints}, ${otherClosestPoints}, ${stormType}, ${nearPhrase} , ${maxMarineNearDistance}, ${overPhrase}, ${maxMarineOverDistance}, ${marineDistanceUnits}, ${useSecondReferenceLine})
|
||||
|
@ -1090,7 +1094,7 @@ THOSE ATTENDING THE !**event/venue name or location**! ARE IN THE PATH OF THIS S
|
|||
|
||||
## Comment out #parse command below to pull in Dynamic DSS Event Info
|
||||
## If this feature is utilized, the "specialEvent" bullet (output above) can
|
||||
## likely be commented out from the impactSevereThunderstormWarning.xml file
|
||||
## likely be commented out from the impactSpecialMarineWarningFollowup.xml file
|
||||
#parse("dssEvents.vm")
|
||||
|
||||
#####################
|
||||
|
@ -1115,46 +1119,46 @@ PRECAUTIONARY/PREPAREDNESS ACTIONS...
|
|||
${ashfallCTA}
|
||||
|
||||
#if(${list.contains(${bullets}, "genericCTA")})
|
||||
#if(${stormType} == "line")
|
||||
AS THUNDERSTORMS MOVE OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THESE STORMS PASS.
|
||||
MOVE TO SAFE HARBOR UNTIL HAZARDOUS WEATHER PASSES.
|
||||
|
||||
#else
|
||||
AS THIS THUNDERSTORM MOVES OVER THE WATER...BOATERS CAN EXPECT GUSTY WINDS AND HIGH WAVES. MOVE TO SAFE HARBOR OR STAY CLOSE TO SHORE UNTIL THE STORM PASSES.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "gustyWindsCTA")})
|
||||
#if(${stormType} == "line")
|
||||
MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS.
|
||||
MOVE TO SAFE HARBOR IMMEDIATELY AS GUSTY WINDS AND HIGH WAVES ARE EXPECTED.
|
||||
|
||||
#else
|
||||
MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "hailWindsCTA")})
|
||||
#if(${stormType} == "line")
|
||||
MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS.
|
||||
BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THESE STORMS PASS. ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE WITH THESE STORMS.
|
||||
|
||||
#else
|
||||
MARINERS CAN EXPECT ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAINS. BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES.
|
||||
BOATERS SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THIS STORM PASSES. ${windCTA}${hailCTA}...HIGH WAVES...DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE WITH THIS STORM.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "nonThunderstormCTA")})
|
||||
MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES. BOATERS...ESPECIALLY THOSE UNDER SAIL...SHOULD SEEK SAFE HARBOR IMMEDIATELY...UNTIL THE HIGH WINDS SUBSIDE.
|
||||
SEEK SAFE SHELTER...MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES.
|
||||
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "waterspoutCTA")})
|
||||
THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
#if(${list.contains(${bullets}, "thunderstorm")})
|
||||
THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS. WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
|
||||
#else
|
||||
WATERSPOUTS CAN EASILY OVERTURN BOATS AND CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "lightningCTA")})
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
#if(${stormType} == "line")
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THESE STORMS. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
|
||||
#else
|
||||
FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM. IF CAUGHT ON THE OPEN WATER STAY BELOW DECK IF POSSIBLE...KEEP AWAY FROM UNGROUNDED METAL OBJECTS.
|
||||
|
||||
#end
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "reportCTA")})
|
||||
REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY. THEY WILL RELAY YOUR REPORT TO THE NATIONAL WEATHER SERVICE OFFICE.
|
||||
REPORT SEVERE WEATHER TO THE NATIONAL WEATHER SERVICE OFFICE.
|
||||
|
||||
#end
|
||||
#if(${ctaSelected} == "YES")
|
||||
|
@ -1266,11 +1270,21 @@ THIS IS A TEST MESSAGE. DO NOT TAKE ACTION BASED ON THIS MESSAGE.
|
|||
## Waterspout/Hail/Wind Tags used by CR for IBW
|
||||
##################################################################
|
||||
|
||||
#if(${action}=="CAN" || ${action}=="EXP")
|
||||
#set($windTag = "")
|
||||
#set($hailTag = "")
|
||||
#set($spoutTag = "")
|
||||
#end
|
||||
|
||||
#if($spoutTag.length() > 0)
|
||||
<L>${spoutTag}</L>
|
||||
#end
|
||||
#if($hailTag.length() > 0)
|
||||
<L>HAIL...${hailTag}IN</L>
|
||||
#end
|
||||
#if($windTag.length() > 0)
|
||||
<L>WIND...${windTag}KTS</L>
|
||||
#end
|
||||
|
||||
$$
|
||||
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
Note: Volcano information will not show up in the GUI unless uncommented out
|
||||
Phil Kurimski 09-19-2013 added geospatialConfig.xml
|
||||
Phil Kurimski 06-26-2014 added DSS Events
|
||||
Phil Kurimski 02-18-2015 Updated CTA section
|
||||
-->
|
||||
|
||||
<!-- INCLUDE ALL GEOSPTATIAL INFORMATION FOR THIS PRODUCT
|
||||
|
@ -184,13 +185,13 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletName="specialEvent" bulletText="Special heads-up for large event/venue" parseString="THOSE ATTENDING"/>
|
||||
<bullet bulletText="" bulletType="title"/>
|
||||
<bullet bulletText=" ****** CALLS TO ACTION (CHOOSE 1 OR MORE) ****** " bulletType="title"/>
|
||||
<bullet bulletName="genericCTA" bulletText="As thunderstorms move over the water.." parseString="OVER THE WATER...BOATERS CAN EXPECT"/>
|
||||
<bullet bulletName="gustyWindsCTA" bulletText="Mariners can expect gusty winds.." parseString="MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES..."/>
|
||||
<bullet bulletName="hailWindsCTA" bulletText="Mariners can expect cta with hail/wind speeds" parseString="MARINERS CAN EXPECT WIND GUSTS"/>
|
||||
<bullet bulletName="genericCTA" bulletText="Generic CTA" parseString="MOVE TO SAFE HARBOR UNTIL HAZARDOUS WEATHER PASSES"/>
|
||||
<bullet bulletName="gustyWindsCTA" bulletText="Gusty Winds CTA" parseString="MOVE TO SAFE HARBOR IMMEDIATELY AS GUSTY WINDS AND HIGH WAVES ARE EXPECTED"/>
|
||||
<bullet bulletName="hailWindsCTA" bulletText="Wind/Hail cta with hail/wind speeds" parseString="DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE"/>
|
||||
<bullet bulletName="nonThunderstormCTA" bulletText="Non thunderstorm winds - mariners can expect gusty winds.." parseString="MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES"/>
|
||||
<bullet bulletName="waterspoutCTA" bulletText="Thunderstorms can produce waterspouts" parseString="THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent lightning" parseString="FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM"/>
|
||||
<bullet bulletName="reportCTA" bulletText="Report severe wx" parseString="REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY"/>
|
||||
<bullet bulletName="waterspoutCTA" bulletText="Waterspout CTA" parseString="CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent lightning CTA" parseString="FREQUENT LIGHTNING IS OCCURRING WITH"/>
|
||||
<bullet bulletName="reportCTA" bulletText="Report severe wx" parseString="REPORT SEVERE WEATHER TO THE NATIONAL WEATHER SERVICE"/>
|
||||
</bullets>
|
||||
</bulletActionGroup>
|
||||
<bulletActionGroup action="COR" phen="MA" sig="W">
|
||||
|
@ -243,13 +244,13 @@ turned on unless the corresponding .vm file is turned on in a given template's .
|
|||
<bullet bulletName="specialEvent" bulletText="Special heads-up for large event/venue" parseString="THOSE ATTENDING"/>
|
||||
<bullet bulletText="" bulletType="title"/>
|
||||
<bullet bulletText=" ****** CALLS TO ACTION (CHOOSE 1 OR MORE) ****** " bulletType="title"/>
|
||||
<bullet bulletName="genericCTA" bulletText="As thunderstorms move over the water.." parseString="OVER THE WATER...BOATERS CAN EXPECT"/>
|
||||
<bullet bulletName="gustyWindsCTA" bulletText="Mariners can expect gusty winds.." parseString="MARINERS CAN EXPECT GUSTY WINDS...HIGH WAVES..."/>
|
||||
<bullet bulletName="hailWindsCTA" bulletText="Mariners can expect cta with hail/wind speeds" parseString="MARINERS CAN EXPECT WIND GUSTS"/>
|
||||
<bullet bulletName="genericCTA" bulletText="Generic CTA" parseString="MOVE TO SAFE HARBOR UNTIL HAZARDOUS WEATHER PASSES"/>
|
||||
<bullet bulletName="gustyWindsCTA" bulletText="Gusty Winds CTA" parseString="MOVE TO SAFE HARBOR IMMEDIATELY AS GUSTY WINDS AND HIGH WAVES ARE EXPECTED"/>
|
||||
<bullet bulletName="hailWindsCTA" bulletText="Wind/Hail cta with hail/wind speeds" parseString="DANGEROUS LIGHTNING...AND HEAVY RAIN ARE POSSIBLE"/>
|
||||
<bullet bulletName="nonThunderstormCTA" bulletText="Non thunderstorm winds - mariners can expect gusty winds.." parseString="MARINERS CAN EXPECT GUSTY WINDS...AND INCREASING WAVES"/>
|
||||
<bullet bulletName="waterspoutCTA" bulletText="Thunderstorms can produce waterspouts" parseString="THUNDERSTORMS CAN PRODUCE SUDDEN WATERSPOUTS"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent lightning" parseString="FREQUENT LIGHTNING IS OCCURRING WITH THIS STORM"/>
|
||||
<bullet bulletName="reportCTA" bulletText="Report severe wx" parseString="REPORT SEVERE WEATHER TO THE COAST GUARD OR NEAREST LAW ENFORCEMENT AGENCY"/>
|
||||
<bullet bulletName="waterspoutCTA" bulletText="Waterspout CTA" parseString="CREATE LOCALLY HAZARDOUS SEAS. SEEK SAFE HARBOR IMMEDIATELY"/>
|
||||
<bullet bulletName="lightningCTA" bulletText="Frequent lightning CTA" parseString="FREQUENT LIGHTNING IS OCCURRING WITH"/>
|
||||
<bullet bulletName="reportCTA" bulletText="Report severe wx" parseString="REPORT SEVERE WEATHER TO THE NATIONAL WEATHER SERVICE"/>
|
||||
</bullets>
|
||||
</bulletActionGroup>
|
||||
</bulletActionGroups>
|
||||
|
|
|
@ -6,8 +6,9 @@
|
|||
## EDITED EVAN BOOKBINDER 2-25-13 FOR IBW 2013 ##
|
||||
## EDITED PHIL KURIMSKI 5-20-13 FOR UPDATED IMPACT STATEMENTS ##
|
||||
## EDITED PHIL KURIMSKI 9-17-13 FOR SMW IMPACT STATEMENTS ##
|
||||
## EDITED EvAN BOOKBINDER 2-18-14 FOR 2014 IMPACT STATEMENTS ##
|
||||
## EDITED EVAN BOOKBINDER 2-18-14 FOR 2014 IMPACT STATEMENTS ##
|
||||
## EDITED PHIL KURIMSKI 6-26-15 FIXED CONSID IMPCT VARIABLE ##
|
||||
## EDITED PHIL KURIMSKI 2-19-15 UPDATED SMW IMPACT STATEMENTS ##
|
||||
################################################################
|
||||
##
|
||||
################################################################
|
||||
|
@ -114,7 +115,63 @@
|
|||
################################################################
|
||||
## Finally create the Impact Statements for the SMW template
|
||||
################################################################
|
||||
#set($smwimpact = "OVERTURNED AND CAPSIZED BOATS.")
|
||||
###################################################
|
||||
## HANDLE HAIL POSSIBILITIES ######################
|
||||
###################################################
|
||||
#set($smwHailImpact = "")
|
||||
#set($hailAppend = "")
|
||||
#if($hailTag == ">.75")
|
||||
#set($smwHailImpact = "LARGE HAIL COULD RESULT IN STRUCTURAL DAMAGE.")
|
||||
#set($hailAppend = " AND HAIL")
|
||||
#end
|
||||
#if($hailTag == ">2.0")
|
||||
#set($smwHailImpact = "LARGE HAIL COULD RESULT IN PERSONAL INJURY AND SIGNIFICANT STRUCTURAL DAMAGE.")
|
||||
#set($hailAppend = " AND HAIL")
|
||||
#end
|
||||
###################################################
|
||||
## HANDLE WIND POSSIBILITIES ######################
|
||||
###################################################
|
||||
#set($smwWindImpact = "")
|
||||
#if(${windTag} == ">34" || ${windTag} == "40" || ${windTag} == "49")
|
||||
#set($smwWindImpact = "SMALL CRAFT COULD BE DAMAGED IN BRIEFLY HIGHER WINDS AND SUDDENLY HIGHER WAVES.")
|
||||
#end
|
||||
## If winds are 50 knots or greater do not include hail impact statement
|
||||
#if(${windTag} == "50" || ${windTag} == "65")
|
||||
#set($smwWindImpact = "BOATS COULD SUFFER SIGNIFICANT STRUCTURAL DAMAGE IN HIGH WINDS${hailAppend}. SMALL CRAFT COULD CAPSIZE IN SUDDENLY HIGHER WAVES.")
|
||||
#set($smwHailImpact = "")
|
||||
#end
|
||||
###################################################
|
||||
## HANDLE WATERSPOUTS #############################
|
||||
###################################################
|
||||
#set($smwWaterspoutImpact = "")
|
||||
#if(${list.contains(${bullets}, "thunderstorm")})
|
||||
#set($extraImpact = "EASILY OVERTURN BOATS AND ")
|
||||
#else
|
||||
#set($extraImpact = "")
|
||||
#end
|
||||
#if(${list.contains(${bullets}, "sightedSpout")} || ${list.contains(${bullets}, "possibleSpout")})
|
||||
#set($smwWaterspoutImpact = "WATERSPOUTS CAN ${extraImpact}CREATE LOCALLY HAZARDOUS SEAS.")
|
||||
#end
|
||||
##########################################################
|
||||
## Merge the Hail...Wind and Waterspout Impact Statements
|
||||
##########################################################
|
||||
#if($smwWindImpact.length() > 0 && $smwHailImpact.length() > 0 && $smwWaterspoutImpact.length() > 0)
|
||||
#set($smwimpact = "${smwWaterspoutImpact} ${smwWindImpact} ${smwHailImpact}")
|
||||
#elseif($smwWindImpact.length() > 0 && $smwHailImpact.length() > 0)
|
||||
#set($smwimpact = "${smwWindImpact} ${smwHailImpact}")
|
||||
#elseif($smwWindImpact.length() > 0 && $smwWaterspoutImpact.length() > 0)
|
||||
#set($smwimpact = "${smwWaterspoutImpact} ${smwWindImpact}")
|
||||
#elseif($smwHailImpact.length() > 0 && $smwWaterspoutImpact.length() > 0)
|
||||
#set($smwimpact = "${smwWaterspoutImpact} ${smwHailImpact}")
|
||||
#elseif($smwWaterspoutImpact.length() > 0)
|
||||
#set($smwimpact = "${smwWaterspoutImpact}")
|
||||
#elseif($smwWindImpact.length() > 0)
|
||||
#set($smwimpact = "${smwWindImpact}")
|
||||
#elseif($smwHailImpact.length() > 0)
|
||||
#set($smwimpact = "${smwHailImpact}")
|
||||
#else
|
||||
#set($smwimpact = "!**YOU DID NOT SELECT ANY THREATS WORTHY OF SMW CRITERIA. PLEASE CLOSE THIS WINDOW AND RE-GENERATE THIS WARNING!**!")
|
||||
#end
|
||||
############################################################################
|
||||
## End of File
|
||||
############################################################################
|
||||
|
|
|
@ -60,6 +60,10 @@ import com.raytheon.uf.common.util.CollectionUtil;
|
|||
import com.raytheon.uf.common.util.FileUtil;
|
||||
import com.raytheon.uf.edex.core.EDEXUtil;
|
||||
import com.raytheon.uf.edex.database.DataAccessLayerException;
|
||||
import com.raytheon.uf.edex.database.cluster.ClusterLockUtils;
|
||||
import com.raytheon.uf.edex.database.cluster.ClusterLockUtils.LockState;
|
||||
import com.raytheon.uf.edex.database.cluster.ClusterTask;
|
||||
import com.raytheon.uf.edex.database.cluster.handler.CurrentTimeClusterLockHandler;
|
||||
import com.raytheon.uf.edex.database.dao.CoreDao;
|
||||
import com.raytheon.uf.edex.database.dao.DaoConfig;
|
||||
import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
||||
|
@ -97,6 +101,9 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
|||
* Pass issuance site id to getActiveTable()
|
||||
* in updateActiveTable() so records will
|
||||
* be updated correctly.
|
||||
* Feb 05, 2015 4099 randerso Fixed latest ETN query for year-end
|
||||
* Feb 23, 2015 4127 dgilling Use cluster locking to only allow 1 active
|
||||
* table write at a time.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -111,6 +118,10 @@ public class ActiveTable {
|
|||
private static final Logger changeLog = Logger
|
||||
.getLogger("ActiveTableChange");
|
||||
|
||||
private static final String ACTIVE_TABLE_LOCK_NAME = "ActiveTableWriteLock";
|
||||
|
||||
private static final long DEFAULT_LOCK_TIMEOUT = 5 * TimeUtil.MILLIS_PER_MINUTE;
|
||||
|
||||
private static ThreadLocal<PythonScript> threadLocalPythonScript = new ThreadLocal<PythonScript>() {
|
||||
|
||||
/*
|
||||
|
@ -285,7 +296,7 @@ public class ActiveTable {
|
|||
*/
|
||||
private void updateActiveTable(String siteId,
|
||||
List<ActiveTableRecord> newRecords, float offsetSecs) {
|
||||
if (newRecords.size() > 0) {
|
||||
if (!newRecords.isEmpty()) {
|
||||
ActiveTableMode mode = ActiveTableMode.PRACTICE;
|
||||
if (newRecords.get(0) instanceof OperationalActiveTableRecord) {
|
||||
mode = ActiveTableMode.OPERATIONAL;
|
||||
|
@ -296,36 +307,67 @@ public class ActiveTable {
|
|||
IPerformanceStatusHandler perfStat = PerformanceStatus
|
||||
.getHandler("ActiveTable");
|
||||
ITimer timer = TimeUtil.getTimer();
|
||||
timer.start();
|
||||
List<ActiveTableRecord> activeTable = getActiveTable(issueSiteId, mode);
|
||||
timer.stop();
|
||||
perfStat.logDuration("getActiveTable", timer.getElapsedTime());
|
||||
MergeResult result = null;
|
||||
ClusterTask writeLock = null;
|
||||
try {
|
||||
boolean logFirst = true;
|
||||
timer.start();
|
||||
do {
|
||||
if (logFirst) {
|
||||
statusHandler
|
||||
.info("updateActiveTable() waiting on lock ["
|
||||
+ ACTIVE_TABLE_LOCK_NAME + ":"
|
||||
+ mode.toString() + "].");
|
||||
logFirst = false;
|
||||
}
|
||||
writeLock = ClusterLockUtils.lock(ACTIVE_TABLE_LOCK_NAME,
|
||||
mode.toString(), new CurrentTimeClusterLockHandler(
|
||||
DEFAULT_LOCK_TIMEOUT, false), true);
|
||||
} while (!writeLock.getLockState().equals(LockState.SUCCESSFUL));
|
||||
statusHandler
|
||||
.info("updateActiveTable() obtained lock ["
|
||||
+ ACTIVE_TABLE_LOCK_NAME + ":"
|
||||
+ mode.toString() + "].");
|
||||
timer.stop();
|
||||
perfStat.logDuration("getLock", timer.getElapsedTime());
|
||||
|
||||
// get decoder sites to see if we need to backup active table
|
||||
Set<String> decoderSites = getDecoderSites(siteId);
|
||||
|
||||
// if any new record is from one of the decoder sites
|
||||
// we need to queue a backup
|
||||
for (ActiveTableRecord rec : newRecords) {
|
||||
if (decoderSites.contains(rec.getOfficeid())) {
|
||||
ActiveTableBackup.queue(mode, activeTable);
|
||||
break;
|
||||
timer.reset();
|
||||
timer.start();
|
||||
List<ActiveTableRecord> activeTable = getActiveTable(
|
||||
issueSiteId, mode);
|
||||
timer.stop();
|
||||
perfStat.logDuration("getActiveTable", timer.getElapsedTime());
|
||||
// get decoder sites to see if we need to backup active table
|
||||
Set<String> decoderSites = getDecoderSites(siteId);
|
||||
// if any new record is from one of the decoder sites
|
||||
// we need to queue a backup
|
||||
for (ActiveTableRecord rec : newRecords) {
|
||||
if (decoderSites.contains(rec.getOfficeid())) {
|
||||
ActiveTableBackup.queue(mode, activeTable);
|
||||
break;
|
||||
}
|
||||
}
|
||||
timer.reset();
|
||||
timer.start();
|
||||
result = filterTable(siteId, activeTable, newRecords, mode,
|
||||
offsetSecs);
|
||||
timer.stop();
|
||||
perfStat.logDuration("filterTable", timer.getElapsedTime());
|
||||
timer.reset();
|
||||
timer.start();
|
||||
updateTable(siteId, result, mode);
|
||||
timer.stop();
|
||||
perfStat.logDuration("updateTable", timer.getElapsedTime());
|
||||
} finally {
|
||||
if (writeLock != null) {
|
||||
statusHandler.info("updateActiveTable() released lock ["
|
||||
+ ACTIVE_TABLE_LOCK_NAME + ":" + mode.toString()
|
||||
+ "].");
|
||||
ClusterLockUtils.unlock(writeLock, true);
|
||||
}
|
||||
}
|
||||
|
||||
timer.reset();
|
||||
timer.start();
|
||||
MergeResult result = filterTable(siteId, activeTable, newRecords,
|
||||
mode, offsetSecs);
|
||||
timer.stop();
|
||||
perfStat.logDuration("filterTable", timer.getElapsedTime());
|
||||
|
||||
timer.reset();
|
||||
timer.start();
|
||||
updateTable(siteId, result, mode);
|
||||
timer.stop();
|
||||
perfStat.logDuration("updateTable", timer.getElapsedTime());
|
||||
if (result.changeList.size() > 0) {
|
||||
if (!result.changeList.isEmpty()) {
|
||||
sendNotification(mode, result.changeList, "VTECDecoder");
|
||||
}
|
||||
}
|
||||
|
@ -403,29 +445,28 @@ public class ActiveTable {
|
|||
ActiveTableMode mode, String phensigList, String action,
|
||||
String etn, Calendar currentTime, boolean requestValidTimes,
|
||||
boolean latestEtn) {
|
||||
synchronized (ActiveTable.class) {
|
||||
DatabaseQuery query = null;
|
||||
CoreDao dao = null;
|
||||
DatabaseQuery query = null;
|
||||
CoreDao dao = null;
|
||||
|
||||
if (mode.equals(ActiveTableMode.OPERATIONAL)) {
|
||||
query = new DatabaseQuery(OperationalActiveTableRecord.class);
|
||||
dao = operationalDao;
|
||||
} else {
|
||||
query = new DatabaseQuery(PracticeActiveTableRecord.class);
|
||||
dao = practiceDao;
|
||||
}
|
||||
if (mode.equals(ActiveTableMode.OPERATIONAL)) {
|
||||
query = new DatabaseQuery(OperationalActiveTableRecord.class);
|
||||
dao = operationalDao;
|
||||
} else {
|
||||
query = new DatabaseQuery(PracticeActiveTableRecord.class);
|
||||
dao = practiceDao;
|
||||
}
|
||||
|
||||
if (phensigList != null) {
|
||||
query.addQueryParam("phensig", phensigList, "in");
|
||||
}
|
||||
if (phensigList != null) {
|
||||
query.addQueryParam("phensig", phensigList, "in");
|
||||
}
|
||||
|
||||
if (action != null) {
|
||||
query.addQueryParam("act", action, "in");
|
||||
}
|
||||
if (action != null) {
|
||||
query.addQueryParam("act", action, "in");
|
||||
}
|
||||
|
||||
if (etn != null) {
|
||||
query.addQueryParam("etn", etn, "in");
|
||||
}
|
||||
if (etn != null) {
|
||||
query.addQueryParam("etn", etn, "in");
|
||||
}
|
||||
|
||||
if (requestValidTimes && (currentTime != null)) {
|
||||
// Current Time
|
||||
|
@ -439,18 +480,29 @@ public class ActiveTable {
|
|||
query.addOrder("etn", false);
|
||||
query.setMaxResults(1);
|
||||
}
|
||||
|
||||
query.addQueryParam("officeid", siteId, "in");
|
||||
|
||||
List<ActiveTableRecord> result = null;
|
||||
try {
|
||||
result = (List<ActiveTableRecord>) dao.queryByCriteria(query);
|
||||
} catch (DataAccessLayerException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error querying active table for site " + siteId, e);
|
||||
}
|
||||
return result;
|
||||
if (requestValidTimes && currentTime != null) {
|
||||
// Current Time
|
||||
query.addQueryParam("endTime", currentTime, "greater_than");
|
||||
}
|
||||
if (latestEtn && currentTime != null) {
|
||||
Calendar yearStart = Calendar.getInstance();
|
||||
yearStart.set(currentTime.get(Calendar.YEAR), Calendar.JANUARY, 1,
|
||||
0, 0);
|
||||
query.addQueryParam("issueTime", yearStart, "greater_than");
|
||||
query.addOrder("etn", false);
|
||||
query.setMaxResults(1);
|
||||
}
|
||||
|
||||
query.addQueryParam("officeid", siteId, "in");
|
||||
|
||||
List<ActiveTableRecord> result = null;
|
||||
try {
|
||||
result = (List<ActiveTableRecord>) dao.queryByCriteria(query);
|
||||
} catch (DataAccessLayerException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error querying active table for site " + siteId, e);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -463,23 +515,12 @@ public class ActiveTable {
|
|||
*/
|
||||
private static void updateTable(String siteId, MergeResult changes,
|
||||
ActiveTableMode mode) {
|
||||
synchronized (ActiveTable.class) {
|
||||
List<ActiveTableRecord> updated = changes.updatedList;
|
||||
List<ActiveTableRecord> purged = changes.purgedList;
|
||||
List<ActiveTableRecord> updated = changes.updatedList;
|
||||
List<ActiveTableRecord> purged = changes.purgedList;
|
||||
|
||||
CoreDao dao = null;
|
||||
if (mode.equals(ActiveTableMode.OPERATIONAL)) {
|
||||
dao = operationalDao;
|
||||
} else {
|
||||
dao = practiceDao;
|
||||
}
|
||||
for (ActiveTableRecord update : updated) {
|
||||
dao.saveOrUpdate(update);
|
||||
}
|
||||
for (ActiveTableRecord delete : purged) {
|
||||
dao.delete(delete);
|
||||
}
|
||||
}
|
||||
CoreDao dao = (ActiveTableMode.OPERATIONAL.equals(mode)) ? operationalDao
|
||||
: practiceDao;
|
||||
dao.bulkSaveOrUpdateAndDelete(updated, purged);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -550,22 +591,23 @@ public class ActiveTable {
|
|||
ActiveTableMode tableName, List<ActiveTableRecord> newRecords,
|
||||
float timeOffset, boolean makeBackup, boolean runIngestAT,
|
||||
String xmlSource) throws JepException {
|
||||
String scriptName = runIngestAT ? "ingestAT.py" : "MergeVTEC.py";
|
||||
IPathManager pathMgr = PathManagerFactory.getPathManager();
|
||||
LocalizationContext commonCx = pathMgr.getContext(
|
||||
LocalizationType.COMMON_STATIC, LocalizationLevel.BASE);
|
||||
String scriptPath = pathMgr.getFile(commonCx,
|
||||
FileUtil.join(ActiveTablePyIncludeUtil.VTEC, scriptName))
|
||||
.getPath();
|
||||
String pythonIncludePath = PyUtil.buildJepIncludePath(
|
||||
ActiveTablePyIncludeUtil.getCommonPythonIncludePath(),
|
||||
ActiveTablePyIncludeUtil.getVtecIncludePath(siteId),
|
||||
ActiveTablePyIncludeUtil.getGfeConfigIncludePath(siteId),
|
||||
ActiveTablePyIncludeUtil.getIscScriptsIncludePath());
|
||||
|
||||
MergeResult result = null;
|
||||
PythonScript script = null;
|
||||
ClusterTask writeLock = null;
|
||||
try {
|
||||
String scriptName = runIngestAT ? "ingestAT.py" : "MergeVTEC.py";
|
||||
IPathManager pathMgr = PathManagerFactory.getPathManager();
|
||||
LocalizationContext commonCx = pathMgr.getContext(
|
||||
LocalizationType.COMMON_STATIC, LocalizationLevel.BASE);
|
||||
String scriptPath = pathMgr.getFile(commonCx,
|
||||
FileUtil.join(ActiveTablePyIncludeUtil.VTEC, scriptName))
|
||||
.getPath();
|
||||
String pythonIncludePath = PyUtil.buildJepIncludePath(
|
||||
ActiveTablePyIncludeUtil.getCommonPythonIncludePath(),
|
||||
ActiveTablePyIncludeUtil.getVtecIncludePath(siteId),
|
||||
ActiveTablePyIncludeUtil.getGfeConfigIncludePath(siteId),
|
||||
ActiveTablePyIncludeUtil.getIscScriptsIncludePath());
|
||||
|
||||
try {
|
||||
script = new PythonScript(scriptPath, pythonIncludePath,
|
||||
ActiveTable.class.getClassLoader());
|
||||
|
@ -575,6 +617,23 @@ public class ActiveTable {
|
|||
throw e;
|
||||
}
|
||||
|
||||
boolean logFirst = true;
|
||||
do {
|
||||
if (logFirst) {
|
||||
statusHandler.info("mergeRemoteTable() waiting on lock ["
|
||||
+ ACTIVE_TABLE_LOCK_NAME + ":"
|
||||
+ tableName.toString() + "].");
|
||||
logFirst = false;
|
||||
}
|
||||
writeLock = ClusterLockUtils.lock(ACTIVE_TABLE_LOCK_NAME,
|
||||
tableName.toString(),
|
||||
new CurrentTimeClusterLockHandler(DEFAULT_LOCK_TIMEOUT,
|
||||
false), true);
|
||||
} while (!writeLock.getLockState().equals(LockState.SUCCESSFUL));
|
||||
statusHandler.info("mergeRemoteTable() obtained lock ["
|
||||
+ ACTIVE_TABLE_LOCK_NAME + ":" + tableName.toString()
|
||||
+ "].");
|
||||
|
||||
try {
|
||||
String site4Char = SiteMap.getInstance().getSite4LetterId(
|
||||
siteId);
|
||||
|
@ -597,18 +656,26 @@ public class ActiveTable {
|
|||
"Error merging active table", e);
|
||||
throw e;
|
||||
}
|
||||
|
||||
if (result != null) {
|
||||
updateTable(siteId, result, tableName);
|
||||
}
|
||||
} finally {
|
||||
if (writeLock != null) {
|
||||
statusHandler.info("mergeRemoteTable() released lock ["
|
||||
+ ACTIVE_TABLE_LOCK_NAME + ":" + tableName.toString()
|
||||
+ "].");
|
||||
ClusterLockUtils.unlock(writeLock, true);
|
||||
}
|
||||
|
||||
if (script != null) {
|
||||
script.dispose();
|
||||
script = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (result != null) {
|
||||
updateTable(siteId, result, tableName);
|
||||
if (!result.changeList.isEmpty()) {
|
||||
sendNotification(tableName, result.changeList, "MergeVTEC");
|
||||
}
|
||||
if ((result != null) && (!result.changeList.isEmpty())) {
|
||||
sendNotification(tableName, result.changeList, "MergeVTEC");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
# 06/17/13 #3296 randerso Moved active table backup and purging
|
||||
# to a separate thread in java.
|
||||
# Added performance logging
|
||||
# 02/05/15 #4099 randerso Changed log level of year-end issuance tweak
|
||||
#
|
||||
|
||||
import time
|
||||
|
@ -119,7 +120,7 @@ class ActiveTable(VTECTableUtil.VTECTableUtil):
|
|||
if oldYear < newYear:
|
||||
if (newR['act'] == "EXP" and newR['endTime'] == oldR['endTime']) or \
|
||||
self.__overlaps((oldR['startTime'],oldR['endTime']), (newR['startTime'],newR['endTime'])):
|
||||
LogStream.logVerbose("Reset issuance time to last year:",
|
||||
LogStream.logEvent("Reset issuance time to last year:",
|
||||
"\nNewRec: ", self.printEntry(newR),
|
||||
"OldRec: ", self.printEntry(oldR))
|
||||
newR['issueTime'] = lastYearIssueTime
|
||||
|
|
|
@ -101,6 +101,7 @@ import com.raytheon.uf.edex.database.query.DatabaseQuery;
|
|||
* Dec 13, 2013 2555 rjpeter Added processByCriteria and fixed Generics warnings.
|
||||
* Jan 23, 2014 2555 rjpeter Updated processByCriteria to be a row at a time using ScrollableResults.
|
||||
* Apr 23, 2014 2726 rjpeter Updated processByCriteria to throw exceptions back up to caller.
|
||||
* Feb 23, 2015 4127 dgilling Added bulkSaveOrUpdateAndDelete().
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
|
@ -1143,4 +1144,26 @@ public class CoreDao extends HibernateDaoSupport {
|
|||
return getSessionFactory().getClassMetadata(daoClass);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates/saves a set of records and deletes a set of records in the
|
||||
* database in a single transaction.
|
||||
*
|
||||
* @param updates
|
||||
* Records to update or add.
|
||||
* @param deletes
|
||||
* Records to delete.
|
||||
*/
|
||||
public void bulkSaveOrUpdateAndDelete(
|
||||
final Collection<? extends Object> updates,
|
||||
final Collection<? extends Object> deletes) {
|
||||
txTemplate.execute(new TransactionCallbackWithoutResult() {
|
||||
@Override
|
||||
public void doInTransactionWithoutResult(TransactionStatus status) {
|
||||
HibernateTemplate ht = getHibernateTemplate();
|
||||
ht.saveOrUpdateAll(updates);
|
||||
ht.deleteAll(deletes);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue