Merge branch 'ss_builds'(12.12.1-1) into development
Conflicts: cave/com.raytheon.viz.aviation/src/com/raytheon/viz/aviation/editor/TafViewerEditorDlg.java cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/DefineRefSetDialog.java cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/FormatterLauncherDialog.java cave/com.raytheon.viz.grid/src/com/raytheon/viz/grid/inv/GribDataCubeAlertMessageParser.java edexOsgi/com.raytheon.edex.plugin.grib/res/spring/grib-request.xml edexOsgi/com.raytheon.edex.plugin.grib/src/com/raytheon/edex/plugin/grib/dao/GribDao.java edexOsgi/com.raytheon.edex.plugin.grib/utility/common_static/base/purge/gribPurgeRules.xml edexOsgi/com.raytheon.uf.common.gridcoverage/src/com/raytheon/uf/common/gridcoverage/GridCoverage.java edexOsgi/com.raytheon.uf.common.serialization/src/com/raytheon/uf/common/serialization/DynamicSerializationManager.java edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/plugin/PluginDao.java edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/purge/PurgeRuleSet.java edexOsgi/com.raytheon.uf.edex.database/src/com/raytheon/uf/edex/database/purge/PurgeRuleTree.java edexOsgi/com.raytheon.uf.tools.cli/impl/src/purgeallmodeldata/purgeAllModelData.py pythonPackages/dynamicserialize/dstypes/com/raytheon/uf/common/dataplugin/__init__.py Change-Id: Iefdb4f7ba08dc052250d432bb0363a9f83031fcc Former-commit-id:69fc030bb4
[formerly69fc030bb4
[formerly 911c845199714c07e93f9847ab00fcd6d28a4223]] Former-commit-id:e8090e654b
Former-commit-id:60f78c22e3
This commit is contained in:
commit
7761060a12
28 changed files with 582 additions and 347 deletions
|
@ -123,7 +123,7 @@
|
||||||
|
|
||||||
<ini-substitutions>
|
<ini-substitutions>
|
||||||
<max-memory>
|
<max-memory>
|
||||||
<value>2048M</value>
|
<value>3072M</value>
|
||||||
</max-memory>
|
</max-memory>
|
||||||
|
|
||||||
<max-perm>
|
<max-perm>
|
||||||
|
|
|
@ -76,7 +76,10 @@
|
||||||
# Status: TEST
|
# Status: TEST
|
||||||
# Title: AvnFPS: TAF No Significant Weather (NSW) not QC'd correctly
|
# Title: AvnFPS: TAF No Significant Weather (NSW) not QC'd correctly
|
||||||
#
|
#
|
||||||
#
|
# Date Ticket# Engineer Description
|
||||||
|
# ------------ ---------- ----------- --------------------------
|
||||||
|
# Nov 02, 2012 15476 zhao Retrieve latest METAR record from database
|
||||||
|
##
|
||||||
import logging, time
|
import logging, time
|
||||||
import Avn, AvnLib, AvnParser, TafDecoder
|
import Avn, AvnLib, AvnParser, TafDecoder
|
||||||
|
|
||||||
|
@ -104,7 +107,8 @@ def updateTafs(bbb, fcsts):
|
||||||
|
|
||||||
AvnLib.adjustTimes(bbb, taf)
|
AvnLib.adjustTimes(bbb, taf)
|
||||||
evtime=taf['vtime']['str'][5:]
|
evtime=taf['vtime']['str'][5:]
|
||||||
metar = MetarData.retrieve(ident)[0]
|
# For DR15476: use 'maxSize=0' to indicate that the latest record is to be retrieved
|
||||||
|
metar = MetarData.retrieve(ident,0)[0]
|
||||||
AvnLib.updateTafWithMetar(taf['group'][0]['prev'], metar.dcd)
|
AvnLib.updateTafWithMetar(taf['group'][0]['prev'], metar.dcd)
|
||||||
lines = AvnLib.makeTafFromPeriods(ident, bbb, taf['group'],
|
lines = AvnLib.makeTafFromPeriods(ident, bbb, taf['group'],
|
||||||
tafDuration=tafDuration,
|
tafDuration=tafDuration,
|
||||||
|
|
|
@ -1411,9 +1411,12 @@ class FWS_Overrides:
|
||||||
|
|
||||||
for element, defaultFlag in self._weInfoHiddenList():
|
for element, defaultFlag in self._weInfoHiddenList():
|
||||||
if defaultFlag:
|
if defaultFlag:
|
||||||
self._periodElementDict["Today"].append(element)
|
if len(self._periodElementDict["Today"]) != 0:
|
||||||
self._periodElementDict["Tonight"].append(element)
|
self._periodElementDict["Today"].append(element)
|
||||||
self._periodElementDict["Tomorrow"].append(element)
|
if len(self._periodElementDict["Tonight"]) != 0:
|
||||||
|
self._periodElementDict["Tonight"].append(element)
|
||||||
|
if len(self._periodElementDict["Tomorrow"]) != 0:
|
||||||
|
self._periodElementDict["Tomorrow"].append(element)
|
||||||
self._periodAllElementDict["Today"].append(element)
|
self._periodAllElementDict["Today"].append(element)
|
||||||
self._periodAllElementDict["Tonight"].append(element)
|
self._periodAllElementDict["Tonight"].append(element)
|
||||||
self._periodAllElementDict["Tomorrow"].append(element)
|
self._periodAllElementDict["Tomorrow"].append(element)
|
||||||
|
|
|
@ -222,6 +222,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback;
|
||||||
* 12OCT2012 1229 rferrel Changes for non-blocking FindReplaceDlg.
|
* 12OCT2012 1229 rferrel Changes for non-blocking FindReplaceDlg.
|
||||||
* made non-blocking.
|
* made non-blocking.
|
||||||
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
|
* 10/15/2012 1229 rferrel Changes for non-blocking HelpUsageDlg.
|
||||||
|
* 11/05/2012 15477 zhao Trim blank lines in text in Editor when check Syntax
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -2753,7 +2754,8 @@ public class TafViewerEditorDlg extends CaveSWTDialog implements ITafSettable,
|
||||||
private boolean checkSyntaxInEditor(boolean doLogMessage) {
|
private boolean checkSyntaxInEditor(boolean doLogMessage) {
|
||||||
// Get the content of the Taf Editor.
|
// Get the content of the Taf Editor.
|
||||||
// Assume editorTafTabComp is for the active tab.
|
// Assume editorTafTabComp is for the active tab.
|
||||||
String in = (editorTafTabComp.getTextEditorControl().getText());
|
// DR15477: trim blank lines before Syntax Checking
|
||||||
|
String in = (editorTafTabComp.getTextEditorControl().getText().trim());
|
||||||
// Declare variables for processing the editor's contents.
|
// Declare variables for processing the editor's contents.
|
||||||
boolean errorInTaf = false;
|
boolean errorInTaf = false;
|
||||||
int idx1 = 0;
|
int idx1 = 0;
|
||||||
|
|
|
@ -173,6 +173,9 @@ public class DefineRefSetDialog extends CaveJFACEDialog implements
|
||||||
* Modal dialog from the menu so only one can be open at a time.
|
* Modal dialog from the menu so only one can be open at a time.
|
||||||
*/
|
*/
|
||||||
private CaveJFACEDialog menuModalDlg;
|
private CaveJFACEDialog menuModalDlg;
|
||||||
|
private SaveDeleteEditAreaGroupDialog deleteGroupDlg;
|
||||||
|
|
||||||
|
private SaveDeleteEditAreaGroupDialog saveGroupDlg;
|
||||||
|
|
||||||
public DefineRefSetDialog(Shell parent, DataManager dataManager) {
|
public DefineRefSetDialog(Shell parent, DataManager dataManager) {
|
||||||
super(parent);
|
super(parent);
|
||||||
|
|
|
@ -23,6 +23,7 @@ import java.awt.Point;
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -68,7 +69,8 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* 04/08/2008 chammack Initial Port from AWIPS I (minus ISC support)
|
* 04/08/2008 chammack Initial Port from AWIPS I (minus ISC support)
|
||||||
* 07/23/2012 #936 dgilling Reinstate config-handling code to
|
* 07/23/2012 #936 dgilling Reinstate config-handling code to
|
||||||
* calcGridLabels().
|
* calcGridLabels().
|
||||||
*
|
* 11/05/2012 #14566 jzeng Reverse the order of grids
|
||||||
|
* in calcGridLabels ()
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author chammack
|
* @author chammack
|
||||||
|
@ -282,6 +284,8 @@ public class SamplePainter {
|
||||||
inGrid = true;
|
inGrid = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Collections.reverse(grids);
|
||||||
|
|
||||||
// get the list of samples that should be painted and in the
|
// get the list of samples that should be painted and in the
|
||||||
// order
|
// order
|
||||||
for (GridID grid : grids) {
|
for (GridID grid : grids) {
|
||||||
|
|
|
@ -125,6 +125,9 @@ import com.raytheon.viz.hydrocommon.util.DbUtils;
|
||||||
* 24 April 2012 14669 wkwock Handle invalid color name
|
* 24 April 2012 14669 wkwock Handle invalid color name
|
||||||
* 08 May 2012 14958 wkwock Fix overcrowded TS list
|
* 08 May 2012 14958 wkwock Fix overcrowded TS list
|
||||||
* 30 May 2012 14967 wkwock Fix incorrect product time
|
* 30 May 2012 14967 wkwock Fix incorrect product time
|
||||||
|
* 06 Nov 2012 15399 wkwock Fix refine the plot algorithm and sampling algorithm
|
||||||
|
* 06 Nov 2012 15459 lbousaidi update data when page/up or page/down is pressed without having
|
||||||
|
* to click in graph button again.
|
||||||
* @author lvenable
|
* @author lvenable
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*
|
*
|
||||||
|
@ -423,8 +426,10 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
@Override
|
@Override
|
||||||
public void keyPressed(KeyEvent e) {
|
public void keyPressed(KeyEvent e) {
|
||||||
if (e.keyCode == SWT.ARROW_UP) {
|
if (e.keyCode == SWT.ARROW_UP) {
|
||||||
|
newRequest=true;
|
||||||
dialog.pageUpAction();
|
dialog.pageUpAction();
|
||||||
} else if (e.keyCode == SWT.ARROW_DOWN) {
|
} else if (e.keyCode == SWT.ARROW_DOWN) {
|
||||||
|
newRequest=true;
|
||||||
dialog.pageDownAction();
|
dialog.pageDownAction();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1274,8 +1279,8 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
swapPoints(rubberBandX1, rubberBandX2, rubberBandY1,
|
swapPoints(rubberBandX1, rubberBandX2, rubberBandY1,
|
||||||
rubberBandY2);
|
rubberBandY2);
|
||||||
}
|
}
|
||||||
Date xMin = pixel2x(gd, rubberBandX1);
|
Date xMin = pixel2x(gd, rubberBandX1-GRAPHBORDER_LEFT);
|
||||||
Date xMax = pixel2x(gd, rubberBandX2);
|
Date xMax = pixel2x(gd, rubberBandX2-GRAPHBORDER_LEFT);
|
||||||
|
|
||||||
gd.setXMin(xMin);
|
gd.setXMin(xMin);
|
||||||
gd.setXMax(xMax);
|
gd.setXMax(xMax);
|
||||||
|
@ -1587,7 +1592,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
*/
|
*/
|
||||||
private String buildPointString(int x, int y) {
|
private String buildPointString(int x, int y) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
Date xValue = pixel2x(graphData, x);
|
Date xValue = pixel2x(graphData, x-GRAPHBORDER_LEFT);
|
||||||
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm'Z'");
|
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm'Z'");
|
||||||
format.setTimeZone(TimeZone.getTimeZone("GMT"));
|
format.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||||
sb.append(format.format(xValue));
|
sb.append(format.format(xValue));
|
||||||
|
@ -2066,7 +2071,7 @@ public class TimeSeriesDisplayCanvas extends TimeSeriesGraphCanvas implements
|
||||||
getAgain = false;
|
getAgain = false;
|
||||||
} else if (traceSelected && dialog.isInsert()) {
|
} else if (traceSelected && dialog.isInsert()) {
|
||||||
insertedPoint = new TimeSeriesPoint();
|
insertedPoint = new TimeSeriesPoint();
|
||||||
insertedPoint.setX(pixel2x(graphData, e.x));
|
insertedPoint.setX(pixel2x(graphData, e.x-GRAPHBORDER_LEFT));
|
||||||
insertedPoint.setY(pixel2y(graphData, e.y));
|
insertedPoint.setY(pixel2y(graphData, e.y));
|
||||||
ForecastData data = createPoint(
|
ForecastData data = createPoint(
|
||||||
graphData.getTraceData(selectedTraceId), insertedPoint);
|
graphData.getTraceData(selectedTraceId), insertedPoint);
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="satBundleItem" file="bundles/DefaultCONUSSatellite.xml"
|
<contribute xsi:type="satBundleItem" file="bundles/DefaultCONUSSatellite.xml"
|
||||||
menuText="3.9u" id="3.9u">
|
menuText="3.9u" id="3.9u">
|
||||||
<substitute key="timeMatchMode" value="${blendedTimeMatchMode;ALL_IMAGES}"/>
|
<dataURI>/satellite/%/NESDIS/GOES%/%/Imager_3.9_micron_IR</dataURI>
|
||||||
<substitute key="element" value="Imager 3.9 micron IR"/>
|
<substitute key="element" value="Imager 3.9 micron IR"/>
|
||||||
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
<substitute key="colormap" value="Sat/IR/CIRA (IR Default)"/>
|
||||||
</contribute>
|
</contribute>
|
||||||
|
@ -51,7 +51,7 @@
|
||||||
</contribute>
|
</contribute>
|
||||||
<contribute xsi:type="satBundleItem" file="bundles/DerivedCONUSSatellite.xml"
|
<contribute xsi:type="satBundleItem" file="bundles/DerivedCONUSSatellite.xml"
|
||||||
menuText="11u-3.9u" id="11-3.9u">
|
menuText="11u-3.9u" id="11-3.9u">
|
||||||
<substitute key="timeMatchMode" value="${blendedTimeMatchMode;ALL_IMAGES}"/>
|
<dataURI>/satellite/%/NESDIS/GOES%/%/Imager_3.9_micron_IR</dataURI>
|
||||||
<substitute key="element" value="satDif11u3_9uIR"/>
|
<substitute key="element" value="satDif11u3_9uIR"/>
|
||||||
<substitute key="colormap" value="Sat/VIS/CA (Low Light Vis)"/>
|
<substitute key="colormap" value="Sat/VIS/CA (Low Light Vis)"/>
|
||||||
</contribute>
|
</contribute>
|
||||||
|
|
|
@ -67,6 +67,7 @@ import com.vividsolutions.jts.geom.Polygon;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Jul 30, 2010 mschenke Initial creation
|
* Jul 30, 2010 mschenke Initial creation
|
||||||
|
* Oct 31, 2012 DR 15287 D. Friedman Fix overlap calculation
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -334,7 +335,7 @@ public class SatBestResResourceData extends AbstractRequestableResourceData {
|
||||||
|
|
||||||
for (Polygon last : prevs) {
|
for (Polygon last : prevs) {
|
||||||
// Don't want to double include percentage areas
|
// Don't want to double include percentage areas
|
||||||
totalPercentage -= last.intersection(polygon)
|
totalPercentage -= last.intersection(polygon).intersection(extent)
|
||||||
.getArea() / extent.getArea();
|
.getArea() / extent.getArea();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -125,6 +125,8 @@ import com.vividsolutions.jts.geom.Polygon;
|
||||||
* Sep 27, 2012 #1196 rferrel Refactored to use non-blocking dialogs
|
* Sep 27, 2012 #1196 rferrel Refactored to use non-blocking dialogs
|
||||||
* Oct 03, 2012 DR 15426 Qinglu Lin Unlock WarnGen GUI for COR, implemented in corSelected();
|
* Oct 03, 2012 DR 15426 Qinglu Lin Unlock WarnGen GUI for COR, implemented in corSelected();
|
||||||
* but lock immediate cause, implemented in individual template.
|
* but lock immediate cause, implemented in individual template.
|
||||||
|
* Nov 02, 2012 DR 15455 Qinglu Lin Added warngenLayer.setWarningAction() in resetPressed()
|
||||||
|
* and in updateListSelected().
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -1169,6 +1171,7 @@ public class WarngenDialog extends CaveSWTDialog implements
|
||||||
warngenLayer.getStormTrackState().trackVisible = false;
|
warngenLayer.getStormTrackState().trackVisible = false;
|
||||||
}
|
}
|
||||||
warngenLayer.resetInitialFrame();
|
warngenLayer.resetInitialFrame();
|
||||||
|
warngenLayer.setWarningAction(null);
|
||||||
instructionsLabel.setText("Instructions:");
|
instructionsLabel.setText("Instructions:");
|
||||||
warngenLayer.issueRefresh();
|
warngenLayer.issueRefresh();
|
||||||
}
|
}
|
||||||
|
@ -1566,6 +1569,7 @@ public class WarngenDialog extends CaveSWTDialog implements
|
||||||
totalSegments = 0;
|
totalSegments = 0;
|
||||||
warngenLayer.getStormTrackState().endTime = null;
|
warngenLayer.getStormTrackState().endTime = null;
|
||||||
WarningAction action = WarningAction.valueOf(data.getAct());
|
WarningAction action = WarningAction.valueOf(data.getAct());
|
||||||
|
warngenLayer.setWarningAction(action);
|
||||||
if (action == WarningAction.CON) {
|
if (action == WarningAction.CON) {
|
||||||
oldWarning = conSelected(data);
|
oldWarning = conSelected(data);
|
||||||
} else if (action == WarningAction.COR) {
|
} else if (action == WarningAction.COR) {
|
||||||
|
|
|
@ -52,6 +52,7 @@ import org.opengis.referencing.operation.MathTransform;
|
||||||
|
|
||||||
import com.raytheon.uf.common.activetable.ActiveTableRecord;
|
import com.raytheon.uf.common.activetable.ActiveTableRecord;
|
||||||
import com.raytheon.uf.common.dataplugin.warning.AbstractWarningRecord;
|
import com.raytheon.uf.common.dataplugin.warning.AbstractWarningRecord;
|
||||||
|
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||||
import com.raytheon.uf.common.dataplugin.warning.config.BulletActionGroup;
|
import com.raytheon.uf.common.dataplugin.warning.config.BulletActionGroup;
|
||||||
import com.raytheon.uf.common.dataplugin.warning.config.DialogConfiguration;
|
import com.raytheon.uf.common.dataplugin.warning.config.DialogConfiguration;
|
||||||
import com.raytheon.uf.common.dataplugin.warning.config.GridSpacing;
|
import com.raytheon.uf.common.dataplugin.warning.config.GridSpacing;
|
||||||
|
@ -137,6 +138,11 @@ import com.vividsolutions.jts.io.WKTReader;
|
||||||
* 03/19/2012 DR 14690 Qinglu Lin While newHatchedArea==null, handle the polygon differently
|
* 03/19/2012 DR 14690 Qinglu Lin While newHatchedArea==null, handle the polygon differently
|
||||||
* for initial warning and followup (CON); and
|
* for initial warning and followup (CON); and
|
||||||
* convert ratio to percentage while doing comparison.
|
* convert ratio to percentage while doing comparison.
|
||||||
|
* 10/29/2012 DR 15479 Qinglu Lin Added code to call removeDuplicateCoordinate()
|
||||||
|
* in redrawBoxFromHatched().
|
||||||
|
* 11/02/2012 DR 15455 Qinglu Lin Added setWarningAction(), called redrawBoxFromTrack() while
|
||||||
|
* warningAction is neither null nor WarningAction.NEW, removed
|
||||||
|
* some code from redrawBoxFromHatched().
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -222,6 +228,8 @@ public class WarngenLayer extends AbstractStormTrackResource {
|
||||||
|
|
||||||
private GeospatialDataList geoData = null;
|
private GeospatialDataList geoData = null;
|
||||||
|
|
||||||
|
private WarningAction warningAction = null;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
for (int i = 0; i < 128; i++) {
|
for (int i = 0; i < 128; i++) {
|
||||||
if (i % 32 == 0) {
|
if (i % 32 == 0) {
|
||||||
|
@ -474,14 +482,18 @@ public class WarngenLayer extends AbstractStormTrackResource {
|
||||||
if (frameCount == 1 && displayState.geomChanged) {
|
if (frameCount == 1 && displayState.geomChanged) {
|
||||||
displayState.geomChanged = false;
|
displayState.geomChanged = false;
|
||||||
}
|
}
|
||||||
// Initialize box
|
if (warningAction == null || warningAction == WarningAction.NEW) {
|
||||||
if (((configuration.isTrackEnabled() == false || configuration
|
// Initialize box
|
||||||
.getPathcastConfig() == null) && this.displayState.displayType != DisplayType.POLY)
|
if (((configuration.isTrackEnabled() == false || configuration
|
||||||
|| frameCount == 1) {
|
.getPathcastConfig() == null) && this.displayState.displayType != DisplayType.POLY)
|
||||||
createSquare();
|
|| frameCount == 1) {
|
||||||
resetInitialFrame();
|
createSquare();
|
||||||
|
resetInitialFrame();
|
||||||
|
} else {
|
||||||
|
redrawBoxFromTrack();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
redrawBoxFromTrack();
|
redrawBoxFromTrack();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1364,10 +1376,6 @@ public class WarngenLayer extends AbstractStormTrackResource {
|
||||||
|
|
||||||
if (displayState.mode == Mode.DRAG_ME) {
|
if (displayState.mode == Mode.DRAG_ME) {
|
||||||
return;
|
return;
|
||||||
} else if (displayState.trackVisible == false
|
|
||||||
&& displayState.displayType != DisplayType.POLY) {
|
|
||||||
createSquare();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
DestinationGeodeticCalculator gc = new DestinationGeodeticCalculator();
|
DestinationGeodeticCalculator gc = new DestinationGeodeticCalculator();
|
||||||
GeometryFactory gf = new GeometryFactory();
|
GeometryFactory gf = new GeometryFactory();
|
||||||
|
@ -1585,6 +1593,7 @@ public class WarngenLayer extends AbstractStormTrackResource {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
long t0 = System.currentTimeMillis();
|
long t0 = System.currentTimeMillis();
|
||||||
|
state.removeDuplicateCoordinate();
|
||||||
Polygon hatched = new PolygonUtil(this, geoData.nx, geoData.ny,
|
Polygon hatched = new PolygonUtil(this, geoData.nx, geoData.ny,
|
||||||
20, geoData.localExtent, geoData.localToLatLon)
|
20, geoData.localExtent, geoData.localToLatLon)
|
||||||
.hatchWarningArea(state.getWarningPolygon(),
|
.hatchWarningArea(state.getWarningPolygon(),
|
||||||
|
@ -2322,4 +2331,8 @@ public class WarngenLayer extends AbstractStormTrackResource {
|
||||||
+ e.getLocalizedMessage(), e);
|
+ e.getLocalizedMessage(), e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setWarningAction(WarningAction warningAction) {
|
||||||
|
this.warningAction = warningAction;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,11 +19,15 @@
|
||||||
**/
|
**/
|
||||||
package com.raytheon.viz.warngen.gui;
|
package com.raytheon.viz.warngen.gui;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.LinkedHashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
import com.vividsolutions.jts.geom.Coordinate;
|
||||||
import com.vividsolutions.jts.geom.Geometry;
|
import com.vividsolutions.jts.geom.Geometry;
|
||||||
|
import com.vividsolutions.jts.geom.GeometryFactory;
|
||||||
import com.vividsolutions.jts.geom.Polygon;
|
import com.vividsolutions.jts.geom.Polygon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,6 +40,7 @@ import com.vividsolutions.jts.geom.Polygon;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* May 7, 2010 mschenke Initial creation
|
* May 7, 2010 mschenke Initial creation
|
||||||
* 03/14/2012 DR 14690 Qinglu Lin Add clear2().
|
* 03/14/2012 DR 14690 Qinglu Lin Add clear2().
|
||||||
|
* 10/26/2012 DR 15479 Qinglu Lin Added removeDuplicateCoordinate().
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -115,6 +120,31 @@ public class WarngenUIState {
|
||||||
return oldWarningArea;
|
return oldWarningArea;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* removeDuplicateCoordinate
|
||||||
|
* remove duplicate intermediate coordinates in warningPolygon.
|
||||||
|
* History
|
||||||
|
* 10-26-2012 Qinglu Lin DR15479 Created.
|
||||||
|
*/
|
||||||
|
public void removeDuplicateCoordinate() {
|
||||||
|
Coordinate[] verts = warningPolygon.getCoordinates();
|
||||||
|
Set<Coordinate> coords = new LinkedHashSet<Coordinate>();
|
||||||
|
for (Coordinate c: verts)
|
||||||
|
coords.add(c);
|
||||||
|
if ((verts.length-coords.size()) < 2)
|
||||||
|
return;
|
||||||
|
Coordinate[] vertices = new Coordinate[coords.size()+1];
|
||||||
|
Iterator<Coordinate> iter = coords.iterator();
|
||||||
|
int i = 0;
|
||||||
|
while (iter.hasNext()) {
|
||||||
|
vertices[i] = new Coordinate(iter.next());
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
vertices[i] = new Coordinate(vertices[0]);
|
||||||
|
GeometryFactory gf = new GeometryFactory();
|
||||||
|
warningPolygon = gf.createPolygon(gf.createLinearRing(vertices), null);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the old warning area in lat/lon projection. Will be converted to
|
* Set the old warning area in lat/lon projection. Will be converted to
|
||||||
* local
|
* local
|
||||||
|
|
|
@ -159,7 +159,7 @@ def d_dx(grid):
|
||||||
# Returns the derivative along the second innermost axis. By convention
|
# Returns the derivative along the second innermost axis. By convention
|
||||||
# this is the y-axis.
|
# this is the y-axis.
|
||||||
def d_dy(grid):
|
def d_dy(grid):
|
||||||
return centeredDifference(grid, -2)
|
return -centeredDifference(grid, -2)
|
||||||
|
|
||||||
# Returns the derivative along the third innermost axis. By convention
|
# Returns the derivative along the third innermost axis. By convention
|
||||||
# this is the z-axis. If a 2-dimensional grid is specified, an error
|
# this is the z-axis. If a 2-dimensional grid is specified, an error
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
# A simple example would be
|
# A simple example would be
|
||||||
# BASE:common_static/textdb/textCategoryClass.txt
|
# BASE:common_static/textdb/textCategoryClass.txt
|
||||||
|
|
||||||
|
#SCAN_COMMON files
|
||||||
|
SITE:common_static/scan/SCANRunSiteConfig.xml
|
||||||
|
|
||||||
#AvnFPS files
|
#AvnFPS files
|
||||||
SITE:cave_static/aviation/avnwatch/aviationForecasterConfig.xml
|
SITE:cave_static/aviation/avnwatch/aviationForecasterConfig.xml
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,17 @@
|
||||||
<constructor-arg ref="gridDataQueryHandler"/>
|
<constructor-arg ref="gridDataQueryHandler"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
|
<bean factory-bean="handlerRegistry" factory-method="register">
|
||||||
|
<constructor-arg value="com.raytheon.uf.common.dataplugin.grib.request.GetCoverageRequest"/>
|
||||||
|
<constructor-arg ref="getCoverageHandler"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
|
<bean id="getCoveragesHandler" class="com.raytheon.edex.plugin.grib.handler.GetCoveragesHandler" />
|
||||||
|
<bean factory-bean="handlerRegistry" factory-method="register">
|
||||||
|
<constructor-arg value="com.raytheon.uf.common.dataplugin.grib.request.GetCoveragesRequest"/>
|
||||||
|
<constructor-arg ref="getCoveragesHandler"/>
|
||||||
|
</bean>
|
||||||
|
|
||||||
<bean id="deleteAllModelDataHandler" class="com.raytheon.edex.plugin.grib.handler.DeleteAllModelDataHandler" />
|
<bean id="deleteAllModelDataHandler" class="com.raytheon.edex.plugin.grib.handler.DeleteAllModelDataHandler" />
|
||||||
<bean factory-bean="handlerRegistry" factory-method="register">
|
<bean factory-bean="handlerRegistry" factory-method="register">
|
||||||
<constructor-arg value="com.raytheon.uf.common.dataplugin.grib.request.DeleteAllModelDataRequest"/>
|
<constructor-arg value="com.raytheon.uf.common.dataplugin.grib.request.DeleteAllModelDataRequest"/>
|
||||||
|
|
|
@ -149,6 +149,7 @@ public class GribDao extends PluginDao {
|
||||||
* @throws PluginException
|
* @throws PluginException
|
||||||
*/
|
*/
|
||||||
private void updateCaches() throws PluginException {
|
private void updateCaches() throws PluginException {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
List<Integer> orphanedIds = purgeGribModelOrphans();
|
List<Integer> orphanedIds = purgeGribModelOrphans();
|
||||||
EDEXUtil.getMessageProducer().sendAsyncUri(PURGE_MODEL_CACHE_TOPIC,
|
EDEXUtil.getMessageProducer().sendAsyncUri(PURGE_MODEL_CACHE_TOPIC,
|
||||||
|
|
|
@ -447,7 +447,7 @@
|
||||||
<n3D>0</n3D>
|
<n3D>0</n3D>
|
||||||
<levelsDesc>MB 0>500</levelsDesc>
|
<levelsDesc>MB 0>500</levelsDesc>
|
||||||
<levels>
|
<levels>
|
||||||
<level>MB0500</level>
|
<level>SFC</level>
|
||||||
</levels>
|
</levels>
|
||||||
</gribParameterInfo>
|
</gribParameterInfo>
|
||||||
<gribParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
<gribParameterInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="parameterInfo">
|
||||||
|
|
|
@ -51,6 +51,8 @@ import com.vividsolutions.jts.geom.Coordinate;
|
||||||
* May 18, 2011 mnash Initial creation
|
* May 18, 2011 mnash Initial creation
|
||||||
* Sep 10, 2012 15337 kshresth Changed sector on OCONUS:Products under
|
* Sep 10, 2012 15337 kshresth Changed sector on OCONUS:Products under
|
||||||
* Derived Products Imagery Display
|
* Derived Products Imagery Display
|
||||||
|
* Nov 01, 2012 15346 kshresth Added Satellite Products for OCONUS
|
||||||
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author mnash
|
* @author mnash
|
||||||
|
@ -144,17 +146,17 @@ public class SatelliteMenuUtil extends AbstractMenuUtil {
|
||||||
// sector0
|
// sector0
|
||||||
sub = new VariableSubstitution();
|
sub = new VariableSubstitution();
|
||||||
sub.key = "sector0";
|
sub.key = "sector0";
|
||||||
sub.value = "Northern Hemisphere Composite";
|
sub.value = state + " Regional";
|
||||||
((CommonIncludeMenuContribution) file.contributions[0]).substitutions[0] = sub;
|
((CommonIncludeMenuContribution) file.contributions[0]).substitutions[0] = sub;
|
||||||
// sector1
|
// sector1
|
||||||
sub = new VariableSubstitution();
|
sub = new VariableSubstitution();
|
||||||
sub.key = "sector1";
|
sub.key = "sector1";
|
||||||
sub.value = "Northern Hemisphere Composite";
|
sub.value = state + " National";
|
||||||
((CommonIncludeMenuContribution) file.contributions[0]).substitutions[1] = sub;
|
((CommonIncludeMenuContribution) file.contributions[0]).substitutions[1] = sub;
|
||||||
// sector2
|
// sector2
|
||||||
sub = new VariableSubstitution();
|
sub = new VariableSubstitution();
|
||||||
sub.key = "sector2";
|
sub.key = "sector2";
|
||||||
sub.value = "Northern Hemisphere Composite";
|
sub.value = "Supernational";
|
||||||
((CommonIncludeMenuContribution) file.contributions[0]).substitutions[2] = sub;
|
((CommonIncludeMenuContribution) file.contributions[0]).substitutions[2] = sub;
|
||||||
// sector 3, for these sites copy sector2
|
// sector 3, for these sites copy sector2
|
||||||
sub = new VariableSubstitution();
|
sub = new VariableSubstitution();
|
||||||
|
|
|
@ -25,6 +25,7 @@ import java.util.Date;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import com.raytheon.uf.common.monitor.config.FFMPSourceConfigurationManager.SOURCE_TYPE;
|
import com.raytheon.uf.common.monitor.config.FFMPSourceConfigurationManager.SOURCE_TYPE;
|
||||||
import com.raytheon.uf.common.monitor.xml.SourceXML;
|
import com.raytheon.uf.common.monitor.xml.SourceXML;
|
||||||
|
@ -54,10 +55,8 @@ public class FFMPDataContainer {
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||||
.getHandler(FFMPDataContainer.class);
|
.getHandler(FFMPDataContainer.class);
|
||||||
|
|
||||||
private java.util.concurrent.ConcurrentHashMap<String, FFMPBasinData> basinDataMap
|
private final ConcurrentHashMap<String, FFMPBasinData> basinDataMap = new ConcurrentHashMap<String, FFMPBasinData>();// DR
|
||||||
= new java.util.concurrent.ConcurrentHashMap<String, FFMPBasinData>();//DR 15471
|
|
||||||
//private HashMap<String, FFMPBasinData> basinDataMap = new HashMap<String, FFMPBasinData>();
|
|
||||||
|
|
||||||
private String sourceName = null;
|
private String sourceName = null;
|
||||||
|
|
||||||
private String filePath = null;
|
private String filePath = null;
|
||||||
|
@ -80,56 +79,6 @@ public class FFMPDataContainer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Set<String> getKeys() {
|
|
||||||
return basinDataMap.keySet();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the one you are looking for
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public FFMPBasinData getBasinData(String huc) {
|
|
||||||
if (basinDataMap.containsKey(huc)) {
|
|
||||||
return basinDataMap.get(huc);
|
|
||||||
} else {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* maybe this will work
|
|
||||||
*
|
|
||||||
* @param basins
|
|
||||||
* @param hucName
|
|
||||||
*/
|
|
||||||
public void setBasinBuddyData(FFMPBasinData basins, String hucName) {
|
|
||||||
for (Entry<Long, FFMPBasin> entry : basins.getBasins().entrySet()) {
|
|
||||||
FFMPBasin basin = getBasinData(hucName).get(entry.getKey());
|
|
||||||
if (basin != null) {
|
|
||||||
if (basin instanceof FFMPGuidanceBasin) {
|
|
||||||
FFMPGuidanceBasin gbasin = (FFMPGuidanceBasin) basin;
|
|
||||||
gbasin.getGuidValues().putAll(
|
|
||||||
((FFMPGuidanceBasin) entry.getValue())
|
|
||||||
.getGuidValues());
|
|
||||||
} else {
|
|
||||||
basin.getValues().putAll(entry.getValue().getValues());
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
getBasinData(hucName).put(entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a brand new one for new source, or initialization
|
|
||||||
*
|
|
||||||
* @param basins
|
|
||||||
*/
|
|
||||||
public void setBasinData(String huc, FFMPBasinData fftiData) {
|
|
||||||
basinDataMap.put(huc, fftiData);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds to the cache
|
* Adds to the cache
|
||||||
*
|
*
|
||||||
|
@ -147,234 +96,156 @@ public class FFMPDataContainer {
|
||||||
|
|
||||||
FFMPBasinData currBasinData = getBasinData(huc);
|
FFMPBasinData currBasinData = getBasinData(huc);
|
||||||
|
|
||||||
if (currBasinData == null) {
|
synchronized (currBasinData) {
|
||||||
setBasinData(huc, newBasinData);
|
|
||||||
} else {
|
|
||||||
|
|
||||||
for (Long key : newBasinData.getBasins().keySet()) {
|
if (currBasinData == null) {
|
||||||
|
setBasinData(huc, newBasinData);
|
||||||
|
} else {
|
||||||
|
|
||||||
if (guid) {
|
for (Long key : newBasinData.getBasins().keySet()) {
|
||||||
|
|
||||||
FFMPGuidanceBasin basin = null;
|
if (guid) {
|
||||||
|
|
||||||
if (currBasinData.get(key) instanceof FFMPGuidanceBasin) {
|
FFMPGuidanceBasin basin = null;
|
||||||
basin = (FFMPGuidanceBasin) currBasinData.get(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (basin == null) {
|
if (currBasinData.get(key) instanceof FFMPGuidanceBasin) {
|
||||||
|
basin = (FFMPGuidanceBasin) currBasinData.get(key);
|
||||||
FFMPBasin newbasin = newBasinData.get(key);
|
|
||||||
basin = new FFMPGuidanceBasin(key,
|
|
||||||
newbasin.getAggregated());
|
|
||||||
|
|
||||||
if (newbasin instanceof FFMPGuidanceBasin) {
|
|
||||||
|
|
||||||
Float val = ((FFMPGuidanceBasin) newbasin).getValue(date, source.getSourceName());
|
|
||||||
basin.setValue(source.getSourceName(), date, val);
|
|
||||||
} else {
|
|
||||||
Float val = newbasin.getValue(date);
|
|
||||||
basin.setValue(source.getSourceName(), date, val);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
currBasinData.put(key, basin);
|
if (basin == null) {
|
||||||
|
|
||||||
} else {
|
FFMPBasin newbasin = newBasinData.get(key);
|
||||||
|
basin = new FFMPGuidanceBasin(key,
|
||||||
|
newbasin.getAggregated());
|
||||||
|
|
||||||
FFMPBasin newbasin = newBasinData.get(key);
|
if (newbasin instanceof FFMPGuidanceBasin) {
|
||||||
|
|
||||||
if (newbasin instanceof FFMPGuidanceBasin) {
|
Float val = ((FFMPGuidanceBasin) newbasin)
|
||||||
|
.getValue(date, source.getSourceName());
|
||||||
FFMPGuidanceBasin newGbasin = (FFMPGuidanceBasin)newBasinData.get(key);
|
basin.setValue(source.getSourceName(), date,
|
||||||
Float basinVal = basin.getValue(date, source.getSourceName());
|
val);
|
||||||
Float newBasinVal = newGbasin.getValue(date, source.getSourceName());
|
|
||||||
|
|
||||||
if (basinVal != null
|
|
||||||
&& basinVal >= 0.0f
|
|
||||||
&& !basinVal.isNaN()
|
|
||||||
&& basinVal != FFMPUtils.MISSING) {
|
|
||||||
|
|
||||||
if (newBasinVal != null
|
|
||||||
&& newBasinVal >= 0.0f
|
|
||||||
&& !newBasinVal.isNaN()
|
|
||||||
&& newBasinVal != FFMPUtils.MISSING) {
|
|
||||||
|
|
||||||
float val = (float) ((basinVal + newBasinVal) / 2.0);
|
|
||||||
basin.setValue(source.getSourceName(),
|
|
||||||
date, val);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
|
Float val = newbasin.getValue(date);
|
||||||
if (newBasinVal.isNaN()) {
|
basin.setValue(source.getSourceName(), date,
|
||||||
newBasinVal = FFMPUtils.MISSING;
|
val);
|
||||||
}
|
|
||||||
|
|
||||||
basin.setValue(source.getSourceName(),
|
|
||||||
date, newBasinVal);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//currBasinData.put(key, basin);
|
||||||
|
syncPut(currBasinData, key, basin);
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
Float basinVal = basin.getValue(date, source.getSourceName());
|
FFMPBasin newbasin = newBasinData.get(key);
|
||||||
Float newBasinVal = newbasin.getValue();
|
|
||||||
|
if (newbasin instanceof FFMPGuidanceBasin) {
|
||||||
if (basinVal != null
|
|
||||||
&& basinVal >= 0.0f
|
FFMPGuidanceBasin newGbasin = (FFMPGuidanceBasin) newBasinData
|
||||||
&& !basinVal.isNaN()
|
.get(key);
|
||||||
&& basinVal != FFMPUtils.MISSING) {
|
Float basinVal = basin.getValue(date,
|
||||||
|
source.getSourceName());
|
||||||
if (newBasinVal != null
|
Float newBasinVal = newGbasin.getValue(date,
|
||||||
&& newBasinVal >= 0.0f
|
source.getSourceName());
|
||||||
&& !newBasinVal.isNaN()
|
|
||||||
&& newBasinVal != FFMPUtils.MISSING) {
|
if (basinVal != null && basinVal >= 0.0f
|
||||||
|
&& !basinVal.isNaN()
|
||||||
|
&& basinVal != FFMPUtils.MISSING) {
|
||||||
|
|
||||||
|
if (newBasinVal != null
|
||||||
|
&& newBasinVal >= 0.0f
|
||||||
|
&& !newBasinVal.isNaN()
|
||||||
|
&& newBasinVal != FFMPUtils.MISSING) {
|
||||||
|
|
||||||
float val = (float) ((basinVal + newBasinVal) / 2.0);
|
float val = (float) ((basinVal + newBasinVal) / 2.0);
|
||||||
basin.setValue(source.getSourceName(),
|
basin.setValue(source.getSourceName(),
|
||||||
date, val);
|
date, val);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (newBasinVal.isNaN()) {
|
||||||
|
newBasinVal = FFMPUtils.MISSING;
|
||||||
|
}
|
||||||
|
|
||||||
|
basin.setValue(source.getSourceName(),
|
||||||
|
date, newBasinVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (newBasinVal.isNaN()) {
|
Float basinVal = basin.getValue(date,
|
||||||
newBasinVal = FFMPUtils.MISSING;
|
source.getSourceName());
|
||||||
|
Float newBasinVal = newbasin.getValue();
|
||||||
|
|
||||||
|
if (basinVal != null && basinVal >= 0.0f
|
||||||
|
&& !basinVal.isNaN()
|
||||||
|
&& basinVal != FFMPUtils.MISSING) {
|
||||||
|
|
||||||
|
if (newBasinVal != null
|
||||||
|
&& newBasinVal >= 0.0f
|
||||||
|
&& !newBasinVal.isNaN()
|
||||||
|
&& newBasinVal != FFMPUtils.MISSING) {
|
||||||
|
|
||||||
|
float val = (float) ((basinVal + newBasinVal) / 2.0);
|
||||||
|
basin.setValue(source.getSourceName(),
|
||||||
|
date, val);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (newBasinVal.isNaN()) {
|
||||||
|
newBasinVal = FFMPUtils.MISSING;
|
||||||
|
}
|
||||||
|
|
||||||
|
basin.setValue(source.getSourceName(),
|
||||||
|
date, newBasinVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
basin.setValue(source.getSourceName(),
|
|
||||||
date, newBasinVal);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
FFMPBasin basin = currBasinData.get(key);
|
|
||||||
FFMPBasin newbasin = newBasinData.get(key);
|
|
||||||
Float val = 0.0f;
|
|
||||||
|
|
||||||
if (basin == null) {
|
|
||||||
|
|
||||||
basin = new FFMPBasin(key, newbasin.getAggregated());
|
|
||||||
val = newbasin.getValue(date);
|
|
||||||
|
|
||||||
if (val.isNaN()) {
|
|
||||||
val = 0.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
basin.setValue(date, val);
|
|
||||||
currBasinData.put(key, basin);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
if (basin.getValue(date) != null
|
FFMPBasin basin = currBasinData.get(key);
|
||||||
&& !basin.getValue(date).isNaN()
|
FFMPBasin newbasin = newBasinData.get(key);
|
||||||
&& basin.getValue(date) != 0.0) {
|
Float val = 0.0f;
|
||||||
if (newbasin.getValue(date) != null
|
|
||||||
&& !newbasin.getValue(date).isNaN()
|
|
||||||
&& newbasin.getValue(date) != 0.0) {
|
|
||||||
|
|
||||||
val = (float) ((basin.getValue(date) + newbasin
|
if (basin == null) {
|
||||||
.getValue(date)) / 2);
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
basin = new FFMPBasin(key, newbasin.getAggregated());
|
||||||
val = newbasin.getValue(date);
|
val = newbasin.getValue(date);
|
||||||
|
|
||||||
if (val.isNaN()) {
|
if (val.isNaN()) {
|
||||||
val = 0.0f;
|
val = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
basin.setValue(date, val);
|
||||||
|
//currBasinData.put(key, basin);
|
||||||
|
syncPut(currBasinData, key, basin);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
if (basin.getValue(date) != null
|
||||||
|
&& !basin.getValue(date).isNaN()
|
||||||
|
&& basin.getValue(date) != 0.0) {
|
||||||
|
if (newbasin.getValue(date) != null
|
||||||
|
&& !newbasin.getValue(date).isNaN()
|
||||||
|
&& newbasin.getValue(date) != 0.0) {
|
||||||
|
|
||||||
|
val = (float) ((basin.getValue(date) + newbasin
|
||||||
|
.getValue(date)) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
val = newbasin.getValue(date);
|
||||||
|
|
||||||
|
if (val.isNaN()) {
|
||||||
|
val = 0.0f;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
basin.setValue(date, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
basin.setValue(date, val);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSourceName(String sourceName) {
|
|
||||||
this.sourceName = sourceName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSourceName() {
|
|
||||||
return sourceName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* check for the oldest key
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public Date getOldest() {
|
|
||||||
try {
|
|
||||||
for (Entry<Long, FFMPBasin> entry : getBasinData("ALL").getBasins()
|
|
||||||
.entrySet()) {
|
|
||||||
FFMPBasin basin = entry.getValue();
|
|
||||||
if (basin instanceof FFMPGuidanceBasin) {
|
|
||||||
((FFMPGuidanceBasin) basin).getGuidValues().firstKey();
|
|
||||||
} else {
|
|
||||||
return basin.getValues().firstKey();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.debug("No old times available..." + getSourceName());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the list of ordered time keys
|
|
||||||
*
|
|
||||||
* @param barrierTime
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public ArrayList<Date> getOrderedTimes(Date barrierTime) {
|
|
||||||
ArrayList<Date> orderedTimes = new ArrayList<Date>();
|
|
||||||
try {
|
|
||||||
for (Entry<Long, FFMPBasin> entry : getBasinData("ALL").getBasins()
|
|
||||||
.entrySet()) {
|
|
||||||
FFMPBasin basin = entry.getValue();
|
|
||||||
for (Date time : basin.getValues().descendingKeySet()) {
|
|
||||||
if (time.after(barrierTime)) {
|
|
||||||
orderedTimes.add(time);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Collections.reverse(orderedTimes);
|
|
||||||
|
|
||||||
return orderedTimes;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.debug("No ordered times available..."
|
|
||||||
+ getSourceName());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* check for the newest key
|
|
||||||
*
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public Date getNewest() {
|
|
||||||
try {
|
|
||||||
for (Entry<Long, FFMPBasin> entry : getBasinData("ALL").getBasins()
|
|
||||||
.entrySet()) {
|
|
||||||
FFMPBasin basin = entry.getValue();
|
|
||||||
if (basin instanceof FFMPGuidanceBasin) {
|
|
||||||
((FFMPGuidanceBasin) basin).getGuidValues().lastKey();
|
|
||||||
} else {
|
|
||||||
return basin.getValues().lastKey();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
statusHandler.debug("No new times available..." + getSourceName());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check for the key
|
* check for the key
|
||||||
*
|
*
|
||||||
|
@ -383,13 +254,18 @@ public class FFMPDataContainer {
|
||||||
*/
|
*/
|
||||||
public boolean containsKey(Date date) {
|
public boolean containsKey(Date date) {
|
||||||
boolean contains = false;
|
boolean contains = false;
|
||||||
|
|
||||||
if (getBasinData("ALL") != null) {
|
if (getBasinData("ALL") != null) {
|
||||||
for (Entry<Long, FFMPBasin> entry : getBasinData("ALL").getBasins()
|
|
||||||
.entrySet()) {
|
HashMap<Long, FFMPBasin> basins = getBasinData("ALL").getBasins();
|
||||||
FFMPBasin basin = entry.getValue();
|
|
||||||
contains = basin.getValues().containsKey(date);
|
synchronized (basins) {
|
||||||
if (contains == true) {
|
for (Entry<Long, FFMPBasin> entry : basins.entrySet()) {
|
||||||
return true;
|
FFMPBasin basin = entry.getValue();
|
||||||
|
contains = basin.getValues().containsKey(date);
|
||||||
|
if (contains == true) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -404,38 +280,45 @@ public class FFMPDataContainer {
|
||||||
*/
|
*/
|
||||||
public boolean containsKey(String sourceName) {
|
public boolean containsKey(String sourceName) {
|
||||||
boolean contains = false;
|
boolean contains = false;
|
||||||
for (Entry<Long, FFMPBasin> entry : getBasinData("ALL").getBasins()
|
HashMap<Long, FFMPBasin> basins = getBasinData("ALL").getBasins();
|
||||||
.entrySet()) {
|
|
||||||
FFMPBasin basin = entry.getValue();
|
synchronized (basins) {
|
||||||
if (basin instanceof FFMPGuidanceBasin) {
|
for (Entry<Long, FFMPBasin> entry : basins.entrySet()) {
|
||||||
contains = ((FFMPGuidanceBasin) basin).containsKey(sourceName);
|
FFMPBasin basin = entry.getValue();
|
||||||
if (contains == true) {
|
if (basin instanceof FFMPGuidanceBasin) {
|
||||||
// System.out.println("Contains Key: " + sourceName);
|
contains = ((FFMPGuidanceBasin) basin)
|
||||||
return true;
|
.containsKey(sourceName);
|
||||||
|
if (contains == true) {
|
||||||
|
// System.out.println("Contains Key: " + sourceName);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// System.out.println("No Key: " + sourceName);
|
// System.out.println("No Key: " + sourceName);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* check for size
|
* Get the one you are looking for
|
||||||
*
|
*
|
||||||
* @param date
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public int size() {
|
public FFMPBasinData getBasinData(String huc) {
|
||||||
for (Entry<Long, FFMPBasin> entry : getBasinData("ALL").getBasins()
|
if (basinDataMap.containsKey(huc)) {
|
||||||
.entrySet()) {
|
return basinDataMap.get(huc);
|
||||||
FFMPBasin basin = entry.getValue();
|
} else {
|
||||||
if (basin instanceof FFMPGuidanceBasin) {
|
return null;
|
||||||
return ((FFMPGuidanceBasin) basin).getGuidValues().size();
|
|
||||||
} else {
|
|
||||||
return basin.getValues().size();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return 0;
|
}
|
||||||
|
|
||||||
|
public String getFilePath() {
|
||||||
|
return filePath;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Set<String> getKeys() {
|
||||||
|
return basinDataMap.keySet();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -457,6 +340,98 @@ public class FFMPDataContainer {
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check for the newest key
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Date getNewest() {
|
||||||
|
try {
|
||||||
|
|
||||||
|
HashMap<Long, FFMPBasin> basins = getBasinData("ALL").getBasins();
|
||||||
|
|
||||||
|
synchronized (basins) {
|
||||||
|
for (Entry<Long, FFMPBasin> entry : basins.entrySet()) {
|
||||||
|
FFMPBasin basin = entry.getValue();
|
||||||
|
if (basin instanceof FFMPGuidanceBasin) {
|
||||||
|
((FFMPGuidanceBasin) basin).getGuidValues().lastKey();
|
||||||
|
} else {
|
||||||
|
return basin.getValues().lastKey();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
statusHandler.debug("No new times available..." + getSourceName());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check for the oldest key
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public Date getOldest() {
|
||||||
|
try {
|
||||||
|
HashMap<Long, FFMPBasin> basins = getBasinData("ALL").getBasins();
|
||||||
|
|
||||||
|
synchronized (basins) {
|
||||||
|
for (Entry<Long, FFMPBasin> entry : basins.entrySet()) {
|
||||||
|
FFMPBasin basin = entry.getValue();
|
||||||
|
if (basin instanceof FFMPGuidanceBasin) {
|
||||||
|
((FFMPGuidanceBasin) basin).getGuidValues().firstKey();
|
||||||
|
} else {
|
||||||
|
return basin.getValues().firstKey();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
statusHandler.debug("No old times available..." + getSourceName());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list of ordered time keys
|
||||||
|
*
|
||||||
|
* @param barrierTime
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public ArrayList<Date> getOrderedTimes(Date barrierTime) {
|
||||||
|
ArrayList<Date> orderedTimes = new ArrayList<Date>();
|
||||||
|
try {
|
||||||
|
HashMap<Long, FFMPBasin> basins = getBasinData("ALL").getBasins();
|
||||||
|
|
||||||
|
synchronized (basins) {
|
||||||
|
for (Entry<Long, FFMPBasin> entry : basins.entrySet()) {
|
||||||
|
FFMPBasin basin = entry.getValue();
|
||||||
|
for (Date time : basin.getValues().descendingKeySet()) {
|
||||||
|
if (time.after(barrierTime)) {
|
||||||
|
orderedTimes.add(time);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.reverse(orderedTimes);
|
||||||
|
|
||||||
|
return orderedTimes;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
statusHandler.debug("No ordered times available..."
|
||||||
|
+ getSourceName());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSourceName() {
|
||||||
|
return sourceName;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* clean up old junk
|
* clean up old junk
|
||||||
*/
|
*/
|
||||||
|
@ -466,12 +441,86 @@ public class FFMPDataContainer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* maybe this will work
|
||||||
|
*
|
||||||
|
* @param basins
|
||||||
|
* @param hucName
|
||||||
|
*/
|
||||||
|
public void setBasinBuddyData(FFMPBasinData basins, String hucName) {
|
||||||
|
|
||||||
|
for (Entry<Long, FFMPBasin> entry : basins.getBasins().entrySet()) {
|
||||||
|
FFMPBasin basin = getBasinData(hucName).get(entry.getKey());
|
||||||
|
if (basin != null) {
|
||||||
|
if (basin instanceof FFMPGuidanceBasin) {
|
||||||
|
FFMPGuidanceBasin gbasin = (FFMPGuidanceBasin) basin;
|
||||||
|
gbasin.getGuidValues().putAll(
|
||||||
|
((FFMPGuidanceBasin) entry.getValue())
|
||||||
|
.getGuidValues());
|
||||||
|
} else {
|
||||||
|
basin.getValues().putAll(entry.getValue().getValues());
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
syncPut(getBasinData(hucName), entry.getKey(), entry.getValue());
|
||||||
|
//getBasinData(hucName).put(entry.getKey(), entry.getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a brand new one for new source, or initialization
|
||||||
|
*
|
||||||
|
* @param basins
|
||||||
|
*/
|
||||||
|
public void setBasinData(String huc, FFMPBasinData fftiData) {
|
||||||
|
basinDataMap.put(huc, fftiData);
|
||||||
|
}
|
||||||
|
|
||||||
public void setFilePath(String filePath) {
|
public void setFilePath(String filePath) {
|
||||||
this.filePath = filePath;
|
this.filePath = filePath;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getFilePath() {
|
public void setSourceName(String sourceName) {
|
||||||
return filePath;
|
this.sourceName = sourceName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* check for size
|
||||||
|
*
|
||||||
|
* @param date
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public int size() {
|
||||||
|
|
||||||
|
HashMap<Long, FFMPBasin> basins = getBasinData("ALL").getBasins();
|
||||||
|
|
||||||
|
synchronized (basins) {
|
||||||
|
for (Entry<Long, FFMPBasin> entry : basins.entrySet()) {
|
||||||
|
FFMPBasin basin = entry.getValue();
|
||||||
|
if (basin instanceof FFMPGuidanceBasin) {
|
||||||
|
return ((FFMPGuidanceBasin) basin).getGuidValues().size();
|
||||||
|
} else {
|
||||||
|
return basin.getValues().size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DR 15471 lock put() to avoid ConcurrentModificationException
|
||||||
|
*/
|
||||||
|
|
||||||
|
private void syncPut(FFMPBasinData fbd, Long key, FFMPBasin value){
|
||||||
|
if(fbd==null || key==null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
HashMap<Long,FFMPBasin> basins = fbd.getBasins();
|
||||||
|
if(basins == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
synchronized (basins) {
|
||||||
|
basins.put(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,7 +45,7 @@ import com.raytheon.uf.common.serialization.SerializationUtil;
|
||||||
* Date Ticket# Engineer Description
|
* Date Ticket# Engineer Description
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
* Feb 12, 2009 lvenable Initial creation
|
* Feb 12, 2009 lvenable Initial creation
|
||||||
*
|
* Oct 25, 2012 DR 15514 gzhang Adding getHucLevelsInArray()
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author dhladky
|
* @author dhladky
|
||||||
|
@ -259,4 +259,43 @@ public class FFMPTemplateConfigurationManager implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* DR 15514: based on getHucLevels()
|
||||||
|
*/
|
||||||
|
public String[] getHucLevelsInArray() {
|
||||||
|
|
||||||
|
Integer hucNum = 4;
|
||||||
|
Boolean isVirtual = true;
|
||||||
|
String[] result = null;
|
||||||
|
java.util.concurrent.locks.ReentrantLock lock = new java.util.concurrent.locks.ReentrantLock();
|
||||||
|
|
||||||
|
synchronized(configXml){
|
||||||
|
hucNum = getNumberOfHuc();
|
||||||
|
isVirtual = getVirtual();
|
||||||
|
}
|
||||||
|
|
||||||
|
lock.lock();
|
||||||
|
try{
|
||||||
|
java.util.List<String> list = new ArrayList<String>();
|
||||||
|
list.add("ALL");
|
||||||
|
list.add("COUNTY");
|
||||||
|
|
||||||
|
if(isVirtual){
|
||||||
|
list.add("VIRTUAL");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int i = hucNum - 1; i >= 0; i--){
|
||||||
|
list.add("HUC"+i);
|
||||||
|
}
|
||||||
|
|
||||||
|
result = list.toArray(new String[]{});
|
||||||
|
|
||||||
|
}finally{
|
||||||
|
if(result==null) result = new String[]{};// guaranteed not null
|
||||||
|
lock.unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1558,8 +1558,7 @@ public abstract class PluginDao extends CoreDao {
|
||||||
byte[] data = SerializationUtil.transformToThrift(entry
|
byte[] data = SerializationUtil.transformToThrift(entry
|
||||||
.getValue());
|
.getValue());
|
||||||
|
|
||||||
// debug transform back for object inspection
|
SerializationUtil.transformFromThrift(data);
|
||||||
Object obj = SerializationUtil.transformFromThrift(data);
|
|
||||||
|
|
||||||
// save list to disk (in gz format?)
|
// save list to disk (in gz format?)
|
||||||
FileUtil.bytes2File(data, file, true);
|
FileUtil.bytes2File(data, file, true);
|
||||||
|
|
|
@ -80,7 +80,7 @@ public class PurgeRuleSet implements ISerializableObject {
|
||||||
return defaultRules;
|
return defaultRules;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDefaultRules(List<PurgeRule> defaultRules) {
|
public void setDefaultRules(final List<PurgeRule> defaultRules) {
|
||||||
this.defaultRules = defaultRules;
|
this.defaultRules = defaultRules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,7 +89,7 @@ public class PurgeRuleSet implements ISerializableObject {
|
||||||
*
|
*
|
||||||
* @param defaultRule
|
* @param defaultRule
|
||||||
*/
|
*/
|
||||||
public void setDefaultRule(PurgeRule defaultRule) {
|
public void setDefaultRule(final PurgeRule defaultRule) {
|
||||||
this.defaultRules = new ArrayList<PurgeRule>(1);
|
this.defaultRules = new ArrayList<PurgeRule>(1);
|
||||||
this.defaultRules.add(defaultRule);
|
this.defaultRules.add(defaultRule);
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ public class PurgeRuleSet implements ISerializableObject {
|
||||||
return (rules == null) ? Collections.<PurgeRule> emptyList() : rules;
|
return (rules == null) ? Collections.<PurgeRule> emptyList() : rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRules(List<PurgeRule> rules) {
|
public void setRules(final ArrayList<PurgeRule> rules) {
|
||||||
this.rules = rules;
|
this.rules = rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ public class PurgeRuleSet implements ISerializableObject {
|
||||||
return keys;
|
return keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setKeys(List<String> keys) {
|
public void setKeys(final List<String> keys) {
|
||||||
this.keys = keys;
|
this.keys = keys;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ public class PurgeRuleSet implements ISerializableObject {
|
||||||
* purge rules for.
|
* purge rules for.
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public List<PurgeRule> getRuleForKeys(String[] keyValues) {
|
public List<PurgeRule> getRuleForKeys(final String[] keyValues) {
|
||||||
if (purgeTree == null) {
|
if (purgeTree == null) {
|
||||||
purgeTree = new PurgeRuleTree(this);
|
purgeTree = new PurgeRuleTree(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ import com.vividsolutions.jts.geom.Polygon;
|
||||||
* ------------ ---------- ----------- --------------------------
|
* ------------ ---------- ----------- --------------------------
|
||||||
*
|
*
|
||||||
* 07/14/09 2152 D. Hladky Initial release
|
* 07/14/09 2152 D. Hladky Initial release
|
||||||
*
|
* 10/25/12 DR 15514 G. Zhang Fix ConcurrentModificationException
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
* @author dhladky
|
* @author dhladky
|
||||||
|
@ -213,11 +213,13 @@ public class FFMPProcessor {
|
||||||
FFMPSourceConfigurationManager.SOURCE_TYPE.GAGE
|
FFMPSourceConfigurationManager.SOURCE_TYPE.GAGE
|
||||||
.getSourceType())) {
|
.getSourceType())) {
|
||||||
|
|
||||||
ArrayList<String> hucs = template.getTemplateMgr().getHucLevels();
|
//ArrayList<String> hucs = template.getTemplateMgr().getHucLevels();// DR 15514
|
||||||
|
String[] hucs = template.getTemplateMgr().getHucLevelsInArray();// DR 15514
|
||||||
synchronized (hucs) {
|
synchronized (hucs) {
|
||||||
if (hucs != null) {
|
if (hucs != null) {
|
||||||
for (String huc : hucs) {
|
//for (String huc : hucs) {
|
||||||
|
for(int i=0; i<hucs.length; i++){
|
||||||
|
String huc = hucs[i];
|
||||||
if (huc != null) {
|
if (huc != null) {
|
||||||
if (!huc.equals("ALL") || !huc.equals("VIRTUAL")) {
|
if (!huc.equals("ALL") || !huc.equals("VIRTUAL")) {
|
||||||
setValues(huc);
|
setValues(huc);
|
||||||
|
|
|
@ -29,6 +29,20 @@ import com.raytheon.uf.common.status.UFStatus;
|
||||||
import com.vividsolutions.jts.geom.Coordinate;
|
import com.vividsolutions.jts.geom.Coordinate;
|
||||||
import com.vividsolutions.jts.geom.Geometry;
|
import com.vividsolutions.jts.geom.Geometry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* <pre>
|
||||||
|
*
|
||||||
|
* SOFTWARE HISTORY
|
||||||
|
* Date Ticket# Engineer Description
|
||||||
|
* ------------ ---------- ----------- --------------------------
|
||||||
|
*
|
||||||
|
* Oct 31, 2012 15464 zhao updated satellite URIfilters
|
||||||
|
*
|
||||||
|
* </pre>
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
public class FogURIFilter extends URIFilter {
|
public class FogURIFilter extends URIFilter {
|
||||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||||
.getHandler(FogURIFilter.class);
|
.getHandler(FogURIFilter.class);
|
||||||
|
@ -72,6 +86,12 @@ public class FogURIFilter extends URIFilter {
|
||||||
public static String vis = "Imager_Visible";
|
public static String vis = "Imager_Visible";
|
||||||
|
|
||||||
public String satRegion = null;
|
public String satRegion = null;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* new field: satellite coverage ID
|
||||||
|
*/
|
||||||
|
public String satCoverageIdIR = null;
|
||||||
|
public String satCoverageIdVis = null;
|
||||||
|
|
||||||
/** URI pattern for VIS */
|
/** URI pattern for VIS */
|
||||||
public Pattern visURIpattern = null;
|
public Pattern visURIpattern = null;
|
||||||
|
@ -164,7 +184,8 @@ public class FogURIFilter extends URIFilter {
|
||||||
*/
|
*/
|
||||||
public void setVISPattern() {
|
public void setVISPattern() {
|
||||||
visURIpattern = Pattern.compile("/satellite/" + wildCard + uriSeperator
|
visURIpattern = Pattern.compile("/satellite/" + wildCard + uriSeperator
|
||||||
+ NESDIS + uriSeperator + getSatRegion() + uriSeperator + vis);
|
+ NESDIS + uriSeperator + getSatRegion() + uriSeperator + vis
|
||||||
|
+ uriSeperator + satCoverageIdVis);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -184,7 +205,7 @@ public class FogURIFilter extends URIFilter {
|
||||||
public void setIR3_9Pattern() {
|
public void setIR3_9Pattern() {
|
||||||
ir3_9URIpattern = Pattern.compile("/satellite/" + wildCard
|
ir3_9URIpattern = Pattern.compile("/satellite/" + wildCard
|
||||||
+ uriSeperator + NESDIS + uriSeperator + getSatRegion()
|
+ uriSeperator + NESDIS + uriSeperator + getSatRegion()
|
||||||
+ uriSeperator + ir3_9);
|
+ uriSeperator + ir3_9 + uriSeperator + satCoverageIdIR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -204,7 +225,7 @@ public class FogURIFilter extends URIFilter {
|
||||||
public void setIR10_7Pattern() {
|
public void setIR10_7Pattern() {
|
||||||
ir10_7URIpattern = Pattern.compile("/satellite/" + wildCard
|
ir10_7URIpattern = Pattern.compile("/satellite/" + wildCard
|
||||||
+ uriSeperator + NESDIS + uriSeperator + getSatRegion()
|
+ uriSeperator + NESDIS + uriSeperator + getSatRegion()
|
||||||
+ uriSeperator + ir10_7);
|
+ uriSeperator + ir10_7 + uriSeperator + satCoverageIdIR );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -227,18 +248,33 @@ public class FogURIFilter extends URIFilter {
|
||||||
// -122.53428764092014, 47.662021408089124 for SEW
|
// -122.53428764092014, 47.662021408089124 for SEW
|
||||||
if (cwaCenterCoor != null) {
|
if (cwaCenterCoor != null) {
|
||||||
if (cwaCenterCoor.y > 30.0 && cwaCenterCoor.x < -130.0) {
|
if (cwaCenterCoor.y > 30.0 && cwaCenterCoor.x < -130.0) {
|
||||||
satRegion = "GOES-12\\(M\\)/Alaska_Regional";
|
//satRegion = "GOES-12\\(M\\)/Alaska_Regional";
|
||||||
|
satRegion = "GOES-15\\(P\\)/Alaska_Regional";
|
||||||
|
satCoverageIdIR = "328892060";
|
||||||
|
satCoverageIdVis = "1160112258";
|
||||||
} else if (cwaCenterCoor.y < 30.0 && cwaCenterCoor.x < -130.0) {
|
} else if (cwaCenterCoor.y < 30.0 && cwaCenterCoor.x < -130.0) {
|
||||||
satRegion = "GOES-12\\(M\\)/Hawaii_Regional";
|
//satRegion = "GOES-12\\(M\\)/Hawaii_Regional";
|
||||||
|
satRegion = "GOES-15\\(P\\)/Hawaii_Regional";
|
||||||
|
satCoverageIdIR = "1162224264";
|
||||||
|
satCoverageIdVis = "880359024";
|
||||||
} else if (cwaCenterCoor.x < -105.0) {
|
} else if (cwaCenterCoor.x < -105.0) {
|
||||||
satRegion = "GOES-11\\(L\\)/West_CONUS";
|
//satRegion = "GOES-11\\(L\\)/West_CONUS";
|
||||||
// satRegion = "GOES-12\\(M\\)/West_CONUS";
|
// satRegion = "GOES-12\\(M\\)/West_CONUS";
|
||||||
|
satRegion = "GOES-15\\(P\\)/West_CONUS";
|
||||||
|
satCoverageIdIR = "667897505";
|
||||||
|
satCoverageIdVis = "371138769";
|
||||||
} else if (cwaCenterCoor.x > -105.0) {
|
} else if (cwaCenterCoor.x > -105.0) {
|
||||||
satRegion = "GOES-13\\(N\\)/East_CONUS";
|
satRegion = "GOES-13\\(N\\)/East_CONUS";
|
||||||
|
//satRegion = "GOES-14\\(O\\)/East_CONUS";
|
||||||
|
satCoverageIdIR = "553646295";
|
||||||
|
satCoverageIdVis = "-668648557";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
satRegion = "GOES-13\\(N\\)/East_CONUS";
|
satRegion = "GOES-13\\(N\\)/East_CONUS";
|
||||||
|
//satRegion = "GOES-14\\(O\\)/East_CONUS";
|
||||||
|
satCoverageIdIR = "553646295";
|
||||||
|
satCoverageIdVis = "-668648557";
|
||||||
statusHandler
|
statusHandler
|
||||||
.error("FogFilter "
|
.error("FogFilter "
|
||||||
+ name
|
+ name
|
||||||
|
|
|
@ -60,6 +60,8 @@ import com.raytheon.uf.edex.site.SiteActivationMessage.Action;
|
||||||
* Nov 30, 2010 rjpeter Initial creation
|
* Nov 30, 2010 rjpeter Initial creation
|
||||||
* Jul 31, 2012 #965 dgilling Force ordering of sites in
|
* Jul 31, 2012 #965 dgilling Force ordering of sites in
|
||||||
* getActiveSites().
|
* getActiveSites().
|
||||||
|
* Nov 1, 2012 15417 ryu Modified getActiveSites to include
|
||||||
|
* home site only if activated.
|
||||||
*
|
*
|
||||||
* </pre>
|
* </pre>
|
||||||
*
|
*
|
||||||
|
@ -139,8 +141,13 @@ public class SiteAwareRegistry {
|
||||||
public String[] getActiveSites() {
|
public String[] getActiveSites() {
|
||||||
// make a set of the strings for each listener site
|
// make a set of the strings for each listener site
|
||||||
Set<String> tmp = new LinkedHashSet<String>();
|
Set<String> tmp = new LinkedHashSet<String>();
|
||||||
tmp.add(PropertiesFactory.getInstance().getEnvProperties()
|
String mySite = PropertiesFactory.getInstance().getEnvProperties()
|
||||||
.getEnvValue("SITENAME"));
|
.getEnvValue("SITENAME");
|
||||||
|
for (ISiteActivationListener sa : activationListeners) {
|
||||||
|
if (sa.getActiveSites().contains(mySite)) {
|
||||||
|
tmp.add(mySite);
|
||||||
|
}
|
||||||
|
}
|
||||||
for (ISiteActivationListener sa : activationListeners) {
|
for (ISiteActivationListener sa : activationListeners) {
|
||||||
tmp.addAll(sa.getActiveSites());
|
tmp.addAll(sa.getActiveSites());
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,9 +8,9 @@
|
||||||
# Authors: Virgil Middendorf (BYZ), Steve Sigler (MSO) #
|
# Authors: Virgil Middendorf (BYZ), Steve Sigler (MSO) #
|
||||||
# Contributers: Ahmad Garabi, Ken Sargeant, Dave Pike, Dave Rosenberg, #
|
# Contributers: Ahmad Garabi, Ken Sargeant, Dave Pike, Dave Rosenberg, #
|
||||||
# Tim Barker, Maureen Ballard, Jay Smith, Dave Tomalak, #
|
# Tim Barker, Maureen Ballard, Jay Smith, Dave Tomalak, #
|
||||||
# Evelyn Bersack, #
|
# Evelyn Bersack, Juliya Dynina #
|
||||||
# #
|
# #
|
||||||
# Date of last revision: 07/07/11 #
|
# Date of last revision: 11/02/12 #
|
||||||
# #
|
# #
|
||||||
# Script description: This script can create a netcdf file containing IFPS #
|
# Script description: This script can create a netcdf file containing IFPS #
|
||||||
# grids, quality control the netcdf file, send the file to a local rsync #
|
# grids, quality control the netcdf file, send the file to a local rsync #
|
||||||
|
@ -141,6 +141,7 @@
|
||||||
# 04/16/12: Added a little error checking for work directory and replaced #
|
# 04/16/12: Added a little error checking for work directory and replaced #
|
||||||
# the hard-coded path to /awips2/fxa/bin with $FXA_BIN. Removed #
|
# the hard-coded path to /awips2/fxa/bin with $FXA_BIN. Removed #
|
||||||
# awips1 code. #
|
# awips1 code. #
|
||||||
|
# 11/02/12: Restored error checking for AWIPS2. #
|
||||||
################################################################################
|
################################################################################
|
||||||
# check to see if site id was passed as argument
|
# check to see if site id was passed as argument
|
||||||
# if not then exit from the script
|
# if not then exit from the script
|
||||||
|
@ -227,7 +228,7 @@ cdfTimeRange="-s ${start_time} -e ${end_time} "
|
||||||
# The script will attempt to create the netcdf file three times before failing.
|
# The script will attempt to create the netcdf file three times before failing.
|
||||||
creationAttemptCount=1
|
creationAttemptCount=1
|
||||||
badGridFlag=1
|
badGridFlag=1
|
||||||
while (( ( $creationAttemptCount <= creationAttempts ) && ( $badGridFlag == 1 ) ))
|
while (( ( $creationAttemptCount <= $creationAttempts ) && ( $badGridFlag == 1 ) ))
|
||||||
do
|
do
|
||||||
# create the netcdf file
|
# create the netcdf file
|
||||||
echo starting netcdf file creation...attempt number ${creationAttemptCount} at $(date) >> $LOG_FILE
|
echo starting netcdf file creation...attempt number ${creationAttemptCount} at $(date) >> $LOG_FILE
|
||||||
|
@ -239,7 +240,7 @@ do
|
||||||
if (( filesize < 1000000 )) ;then
|
if (( filesize < 1000000 )) ;then
|
||||||
echo $filesize >> $LOG_FILE
|
echo $filesize >> $LOG_FILE
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL ${probAlertNum} "${SITE} netcdf file determined to be incomplete and not sent to webfarms. Did you publish to official?"
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "${SITE} netcdf file determined to be incomplete and not sent to webfarms. Did you publish to official?" -s
|
||||||
fi
|
fi
|
||||||
rm -f ${WRKDIR}/CurrentFcst.$$.${site}.cdf
|
rm -f ${WRKDIR}/CurrentFcst.$$.${site}.cdf
|
||||||
echo netcdf file is too small. Either the Official database is empty OR EDEX is down. >> $LOG_FILE
|
echo netcdf file is too small. Either the Official database is empty OR EDEX is down. >> $LOG_FILE
|
||||||
|
@ -253,25 +254,21 @@ do
|
||||||
##############################################
|
##############################################
|
||||||
# STOP HERE RIGHT NOW
|
# STOP HERE RIGHT NOW
|
||||||
##############################################
|
##############################################
|
||||||
|
|
||||||
if [[ $QCnetCDF == "yes" ]] ;then
|
if [[ $QCnetCDF == "yes" ]] ;then
|
||||||
#Check netcdf file for errors.
|
#Check netcdf file for errors.
|
||||||
echo started netcdf file checking at $(date) >> $LOG_FILE
|
echo started netcdf file checking at $(date) >> $LOG_FILE
|
||||||
${GFESUITE_BIN}/iscMosaic -h $CDSHOST $parmlist -f ${WRKDIR}/CurrentFcst.$$.${site}.cdf -d ${SITE}_GRID_Test_Fcst_00000000_0000 -D $iscMosaicDelay >> ${WRKDIR}/iscmosaicOutput.$$ 2>&1
|
${GFESUITE_BIN}/iscMosaic -h $CDSHOST $parmlist -f ${WRKDIR}/CurrentFcst.$$.${site}.cdf -d ${SITE}_GRID_Test_Fcst_00000000_0000 -D $iscMosaicDelay
|
||||||
|
|
||||||
# cd $runDir
|
if [[ $? > 0 ]] ;then
|
||||||
iscmosaicError=$(cat ${WRKDIR}/iscmosaicOutput.$$ | grep Failure)
|
|
||||||
if [[ $iscmosaicError != "" ]] ;then
|
|
||||||
echo "isc error|${iscmosaicError}|" >> $LOG_FILE
|
|
||||||
if [[ $creationAttemptCount == $creationAttempts ]] ;then
|
if [[ $creationAttemptCount == $creationAttempts ]] ;then
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL 1 "Errors detected in ${SITE} netcdf file again and not sent to webfarms. Send Grids Manually."
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "Errors detected in ${SITE} netcdf file again and not sent to webfarms. Send Grids Manually." -s
|
||||||
fi
|
fi
|
||||||
echo "Errors detected in ${SITE} netcdf file again and not sent to webfarms. Script stopped." >> $LOG_FILE
|
echo "Errors detected in ${SITE} netcdf file again and not sent to webfarms. Script stopped." >> $LOG_FILE
|
||||||
exit
|
exit
|
||||||
else
|
else
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL 1 "Errors detected in ${SITE} netcdf file again. Regenerating netcdf file attempt # ${creationAttemptCount}."
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "Errors detected in ${SITE} netcdf file again. Regenerating netcdf file attempt # ${creationAttemptCount}." -s
|
||||||
fi
|
fi
|
||||||
echo "Errors detected in ${SITE} netcdf file. Regenerating netcdf file." >> $LOG_FILE
|
echo "Errors detected in ${SITE} netcdf file. Regenerating netcdf file." >> $LOG_FILE
|
||||||
fi
|
fi
|
||||||
|
@ -281,7 +278,6 @@ do
|
||||||
echo The netcdf file appears to be good. >> $LOG_FILE
|
echo The netcdf file appears to be good. >> $LOG_FILE
|
||||||
badGridFlag=0
|
badGridFlag=0
|
||||||
fi
|
fi
|
||||||
rm -f ${WRKDIR}/iscmosaicOutput.$$
|
|
||||||
else
|
else
|
||||||
echo netcdf file checking bypassed at $(date) >> $LOG_FILE
|
echo netcdf file checking bypassed at $(date) >> $LOG_FILE
|
||||||
badGridFlag=0
|
badGridFlag=0
|
||||||
|
@ -330,10 +326,31 @@ echo ...finished. >> $LOG_FILE
|
||||||
echo " " >> $LOG_FILE
|
echo " " >> $LOG_FILE
|
||||||
|
|
||||||
# move optimized netcdf file to the local rsync server.
|
# move optimized netcdf file to the local rsync server.
|
||||||
echo trying to scp optimized netcdf file to $locServer at $(date) >> $LOG_FILE
|
for i in 1 2 3
|
||||||
scp ${WRKDIR}/CurrentFcst.$$.${site}.opt.cdf.gz ${locServer}:${locDirectory}/${site} >> $LOG_FILE 2>&1
|
do
|
||||||
echo ...finished. >> $LOG_FILE
|
CHK=`ssh -q -o "BatchMode yes" -o "ConnectTimeout 5" $locServer "echo success"`;
|
||||||
echo " " >> $LOG_FILE
|
if [ "success" = $CHK ] >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo attempt $i to scp optimized netcdf file to $locServer at $(date) >> $LOG_FILE
|
||||||
|
scp ${WRKDIR}/CurrentFcst.$$.${site}.opt.cdf.gz ${locServer}:${locDirectory}/${site} >> $LOG_FILE 2>&1
|
||||||
|
echo ...finished. >> $LOG_FILE
|
||||||
|
echo " " >> $LOG_FILE
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
# failed to connect - wait 5 seconds and try again
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $CHK != "success" ]] ;then
|
||||||
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "Failed to send optimized netcdf file to $locServer. Script stopped." -s
|
||||||
|
fi
|
||||||
|
# cleanup the zipped optimized file on AWIPS
|
||||||
|
rm -f ${WRKDIR}/CurrentFcst.$$.${site}.opt.cdf.gz
|
||||||
|
echo "Failed to send optimized netcdf file to $locServer at $(date). Script stopped." >> $LOG_FILE
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# cleaning up the zipped optimized file on AWIPS.
|
# cleaning up the zipped optimized file on AWIPS.
|
||||||
echo cleaning up the zipped optimized file on AWIPS at $(date) >> $LOG_FILE
|
echo cleaning up the zipped optimized file on AWIPS at $(date) >> $LOG_FILE
|
||||||
|
@ -345,7 +362,7 @@ echo " " >> $LOG_FILE
|
||||||
if [[ $SendQCgoodNotification == "yes" ]] ;then
|
if [[ $SendQCgoodNotification == "yes" ]] ;then
|
||||||
echo sending forecaster notification that QC passed at $(date) >> $LOG_FILE
|
echo sending forecaster notification that QC passed at $(date) >> $LOG_FILE
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL 1 "${SITE} netcdf file passed quality control check. Now rsyncing the file to the webfarms."
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "${SITE} netcdf file passed quality control check. Now rsyncing the file to the webfarms." -s
|
||||||
fi
|
fi
|
||||||
echo ...finished. >> $LOG_FILE
|
echo ...finished. >> $LOG_FILE
|
||||||
echo " " >> $LOG_FILE
|
echo " " >> $LOG_FILE
|
||||||
|
@ -386,7 +403,7 @@ do
|
||||||
echo Waited more than $rsyncWait minutes to start a rsync to the Web Farm >> $LOG_FILE
|
echo Waited more than $rsyncWait minutes to start a rsync to the Web Farm >> $LOG_FILE
|
||||||
echo but another rsync process is still running - so could not. >> $LOG_FILE
|
echo but another rsync process is still running - so could not. >> $LOG_FILE
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL 1 "${SITE} GFE netcdf file NOT sent to the Consolidated web farm. Another rsync process blocked transfer."
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "${SITE} GFE netcdf file NOT sent to the Consolidated web farm. Another rsync process blocked transfer." -s
|
||||||
fi
|
fi
|
||||||
rsync_ok="no"
|
rsync_ok="no"
|
||||||
break
|
break
|
||||||
|
@ -427,7 +444,7 @@ do
|
||||||
msg=$(ssh $locServer ${locDirectory}/checkCWFGrids.pl ${SITE})
|
msg=$(ssh $locServer ${locDirectory}/checkCWFGrids.pl ${SITE})
|
||||||
if [[ $msg != "" ]] ;then
|
if [[ $msg != "" ]] ;then
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL ${probAlertNum} "${msg}"
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "${msg}" -s
|
||||||
fi
|
fi
|
||||||
echo Detected that grids did NOT make it to the Consolidated web farm at $(date) >> $LOG_FILE
|
echo Detected that grids did NOT make it to the Consolidated web farm at $(date) >> $LOG_FILE
|
||||||
echo "${msg}" >> $LOG_FILE
|
echo "${msg}" >> $LOG_FILE
|
||||||
|
@ -451,7 +468,7 @@ do
|
||||||
if [[ $sendCWFnotification == "yes" ]] ;then
|
if [[ $sendCWFnotification == "yes" ]] ;then
|
||||||
echo Detected that grids DID make it to the consolidated web farm at $(date) >> $LOG_FILE
|
echo Detected that grids DID make it to the consolidated web farm at $(date) >> $LOG_FILE
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL 1 "${SITE} GFE netcdf file sent to the consolidated web farm."
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "${SITE} GFE netcdf file sent to the consolidated web farm." -s
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -460,14 +477,14 @@ do
|
||||||
if [[ $sendCWFnotification == "yes" ]] ;then
|
if [[ $sendCWFnotification == "yes" ]] ;then
|
||||||
echo Detected that grids DID make it to the consolidated web farm at $(date) >> $LOG_FILE
|
echo Detected that grids DID make it to the consolidated web farm at $(date) >> $LOG_FILE
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL 1 "${SITE} GFE netcdf file sent to the consolidated web farm."
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "${SITE} GFE netcdf file sent to the consolidated web farm." -s
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if [[ ( $rsyncAttempt > 5 ) && ( $rsyncCompleted = 0) ]] ;then
|
if [[ ( $rsyncAttempt > 5 ) && ( $rsyncCompleted = 0) ]] ;then
|
||||||
rsyncCompleted=1
|
rsyncCompleted=1
|
||||||
if [[ $turnOffAllNotifications == "no" ]] ;then
|
if [[ $turnOffAllNotifications == "no" ]] ;then
|
||||||
${FXA_BIN}/sendNotificationMsg ANNOUNCER LOCAL ${probAlertNum} "${SITE} GFE netcdf file was NOT sent to the Consolidated Web Farm, because rsync connection is broken."
|
${GFESUITE_BIN}/sendGfeMessage -h ${CDSHOST} -c NDFD -m "${SITE} GFE netcdf file was NOT sent to the Consolidated Web Farm, because rsync connection is broken." -s
|
||||||
fi
|
fi
|
||||||
echo Detected that grids did NOT make it to the Consolidated web farm at $(date) >> $LOG_FILE
|
echo Detected that grids did NOT make it to the Consolidated web farm at $(date) >> $LOG_FILE
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -111,7 +111,7 @@ class ifpServerText:
|
||||||
"EditAreaGroup": ("COMMON_STATIC", "gfe/editAreaGroups"),
|
"EditAreaGroup": ("COMMON_STATIC", "gfe/editAreaGroups"),
|
||||||
"SampleSet": ("COMMON_STATIC", "gfe/sampleSets"),
|
"SampleSet": ("COMMON_STATIC", "gfe/sampleSets"),
|
||||||
"ColorTable": ("CAVE_STATIC", "colormaps/GFE"),
|
"ColorTable": ("CAVE_STATIC", "colormaps/GFE"),
|
||||||
"WeatherElementGroup": ("COMMON_STATIC", "gfe/weGroups"),
|
"WeatherElementGroup": ("CAVE_STATIC", "gfe/weGroups"),
|
||||||
"SelectTR": ("COMMON_STATIC", "gfe/text/selecttr"),
|
"SelectTR": ("COMMON_STATIC", "gfe/text/selecttr"),
|
||||||
"Tool": ("CAVE_STATIC", "gfe/userPython/smartTools"),
|
"Tool": ("CAVE_STATIC", "gfe/userPython/smartTools"),
|
||||||
"Procedure": ("CAVE_STATIC", "gfe/userPython/procedures"),
|
"Procedure": ("CAVE_STATIC", "gfe/userPython/procedures"),
|
||||||
|
@ -770,4 +770,4 @@ def main():
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|
|
@ -72,7 +72,7 @@ def main():
|
||||||
|
|
||||||
# Currently sendNotificationMsg requires the optional (flag) arguments
|
# Currently sendNotificationMsg requires the optional (flag) arguments
|
||||||
# be placed prior to the positional arguments.
|
# be placed prior to the positional arguments.
|
||||||
commandLine = "sendNotificationMsg"
|
commandLine = "/awips2/fxa/bin/sendNotificationMsg"
|
||||||
if options.host is not None:
|
if options.host is not None:
|
||||||
commandLine += " --host=" + options.host
|
commandLine += " --host=" + options.host
|
||||||
if options.port is not None:
|
if options.port is not None:
|
||||||
|
@ -83,4 +83,4 @@ def main():
|
||||||
os.system(commandLine)
|
os.system(commandLine)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
Loading…
Add table
Reference in a new issue