Merge branch 'omaha_13.5.2' (omaha_13.5.2-6) into omaha_13.5.3
Conflicts: cave/com.raytheon.viz.texteditor/src/com/raytheon/viz/texteditor/dialogs/TextEditorDialog.java ncep/gov.noaa.nws.ncep.edex.plugin.stormtrack/res/spring/stormtrack-ingest.xml Former-commit-id:3a859792ae
[formerly 8b80beb42d0a76cd158857df7f497c6eff874fe1] Former-commit-id:4a32664d5e
This commit is contained in:
commit
3d7af2ceb3
183 changed files with 2016 additions and 1348 deletions
|
@ -28,24 +28,39 @@
|
|||
# Date Ticket# Engineer Description
|
||||
# ------------ ---------- ----------- --------------------------
|
||||
# 07/25/08 njensen Initial Creation.
|
||||
#
|
||||
# 09/05/13 #2329 randerso Added error handling
|
||||
#
|
||||
#
|
||||
|
||||
import sys
|
||||
import sys, traceback, os, time, LogStream
|
||||
from java.util import ArrayList
|
||||
|
||||
def getCombinations(comboName):
|
||||
outercombos = ArrayList()
|
||||
cmd = "md = __import__(\"" + comboName + "\")"
|
||||
exec cmd
|
||||
comList = md.Combinations
|
||||
for i in comList:
|
||||
combos = ArrayList()
|
||||
innerList = i[0]
|
||||
for zone in innerList:
|
||||
combos.add(zone)
|
||||
outercombos.add(combos)
|
||||
return outercombos
|
||||
try:
|
||||
outercombos = ArrayList()
|
||||
md = __import__(comboName)
|
||||
comList = md.Combinations
|
||||
for i in comList:
|
||||
combos = ArrayList()
|
||||
innerList = i[0]
|
||||
for zone in innerList:
|
||||
combos.add(zone)
|
||||
outercombos.add(combos)
|
||||
return outercombos
|
||||
|
||||
except AttributeError as e:
|
||||
filename = md.__file__
|
||||
if filename.endswith("pyc") or filename.endswith("pyo"):
|
||||
filename = filename[:-1]
|
||||
with open(filename,'r') as fd:
|
||||
filecontents = fd.read()
|
||||
|
||||
LogStream.logProblem("\nERROR loading combinations file: "+ comboName +
|
||||
"\nmd.__file__: " + md.__file__ +
|
||||
"\ndir(md): " + str(dir(md)) +
|
||||
"\n" + md.__file__ + " last modified: " + time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(os.path.getmtime(md.__file__))) +
|
||||
"\n" + filename + " last modified: " + time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime(os.path.getmtime(filename))) +
|
||||
"\nContents of " + filename + "\n" + filecontents)
|
||||
raise e
|
||||
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<dfltGeogArea>BasicWX_US</dfltGeogArea>
|
||||
<resourceParameters>
|
||||
pluginName=grid
|
||||
GDFILE=FFG-TIR-HiRes
|
||||
GDFILE=FFG-TIR
|
||||
|
||||
</resourceParameters>
|
||||
<inventoryEnabled>true</inventoryEnabled>
|
||||
|
|
|
@ -34,6 +34,8 @@ import java.util.List;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 24, 2013 2189 mschenke Initial creation
|
||||
* Sep 13, 2013 16581 kshrestha Variables scaleFont and smoothing
|
||||
* initialized to true.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -45,9 +47,9 @@ public abstract class AbstractAWTFont implements IFont {
|
|||
|
||||
protected Font font;
|
||||
|
||||
protected boolean scaleFont;
|
||||
protected boolean scaleFont = true;
|
||||
|
||||
protected boolean smoothing;
|
||||
protected boolean smoothing = true;
|
||||
|
||||
protected AbstractAWTFont(String fontName, float fontSize, Style[] styles) {
|
||||
this(new Font(fontName, toAwtStyle(styles), (int) fontSize));
|
||||
|
|
|
@ -68,6 +68,8 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* Aug 27, 2013 #2287 randerso Replaced hard coded constant with densityFactor
|
||||
* parameter to allow application specific density
|
||||
* scaling to better match A1 displays
|
||||
* Sep 10, 2013 DR 16257 MPorricelli Fix so that wind for global grids displays on
|
||||
* mercator maps.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -215,14 +217,31 @@ public abstract class AbstractGriddedDisplay<T> implements IRenderable {
|
|||
// space
|
||||
// Linear distance(between (0,0) and (0,1) makes more sense but
|
||||
// looks to sparse.
|
||||
DirectPosition2D p1 = new DirectPosition2D(0, 0);
|
||||
DirectPosition2D p2 = new DirectPosition2D(1, 1);
|
||||
try {
|
||||
grid2grid.transform(p1, p1);
|
||||
grid2grid.transform(p2, p2);
|
||||
} catch (TransformException e) {
|
||||
throw new VizException(e);
|
||||
}
|
||||
DirectPosition2D p1 = new DirectPosition2D();
|
||||
DirectPosition2D p2 = new DirectPosition2D();
|
||||
|
||||
boolean doneTryingCoords = false;
|
||||
int i = -1;
|
||||
// starting with coords (0,0), (1,1), try until tranform succeeds,
|
||||
// or until have gone through a set of diagonal coords
|
||||
do {
|
||||
try {
|
||||
i++;
|
||||
if (i + 1 < gridDims[0] && i + 1 < gridDims[1]) {
|
||||
p1.x = p1.y = i;
|
||||
p2.x = p2.y = i + 1;
|
||||
grid2grid.transform(p1, p1);
|
||||
grid2grid.transform(p2, p2);
|
||||
doneTryingCoords = true;
|
||||
}
|
||||
} catch (TransformException e) {
|
||||
if (i + 1 >= gridDims[0] || i + 1 >= gridDims[1]) {
|
||||
doneTryingCoords = true;
|
||||
throw new VizException(e);
|
||||
}
|
||||
}
|
||||
} while (!doneTryingCoords);
|
||||
|
||||
pixelSize = p1.distance(p2);
|
||||
|
||||
IExtent viewPixelExtent = paintProps.getView().getExtent();
|
||||
|
|
|
@ -61,6 +61,10 @@ import com.vividsolutions.jts.geom.Coordinate;
|
|||
* adjustment of density.
|
||||
* Added gridRelative flag to indicate whether direction
|
||||
* data is relative to grid or true north
|
||||
* Sep 9, 2013 DR16257 MPorricelli When setDestinationGeographicPoint fails (which can
|
||||
* happen for global lat/lon grid winds displayed on
|
||||
* Equidistant Cylindrical map) try again with different
|
||||
* pixel location.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -157,7 +161,7 @@ public class GriddedVectorDisplay extends AbstractGriddedDisplay<Coordinate> {
|
|||
if (Float.isNaN(spd) || Float.isNaN(dir)) {
|
||||
return;
|
||||
}
|
||||
|
||||
int tryDiffPixLoc = 0;
|
||||
try {
|
||||
ReferencedCoordinate rCoord = new ReferencedCoordinate(
|
||||
gridGeometryOfGrid, ijcoord);
|
||||
|
@ -169,12 +173,24 @@ public class GriddedVectorDisplay extends AbstractGriddedDisplay<Coordinate> {
|
|||
|
||||
if (stationPixelLocation != null) {
|
||||
stationPixelLocation[1]--;
|
||||
double[] newWorldLocation = this.descriptor
|
||||
.pixelToWorld(stationPixelLocation);
|
||||
this.gc.setStartingGeographicPoint(stationLocation[0],
|
||||
stationLocation[1]);
|
||||
this.gc.setDestinationGeographicPoint(newWorldLocation[0],
|
||||
newWorldLocation[1]);
|
||||
do {
|
||||
try {
|
||||
double[] newWorldLocation = this.descriptor
|
||||
.pixelToWorld(stationPixelLocation);
|
||||
this.gc.setStartingGeographicPoint(stationLocation[0],
|
||||
stationLocation[1]);
|
||||
this.gc.setDestinationGeographicPoint(
|
||||
newWorldLocation[0], newWorldLocation[1]);
|
||||
tryDiffPixLoc = 2; // setting of pts succeeded; do not need to try again
|
||||
|
||||
} catch (Exception e2) {
|
||||
if (tryDiffPixLoc == 0) { // setting of points failed first time through
|
||||
stationPixelLocation[1] += 2; // try pixel location in opposite dir of 1st try
|
||||
tryDiffPixLoc++;
|
||||
} else
|
||||
throw new VizException(e2); // failed on second try; give up
|
||||
}
|
||||
} while (tryDiffPixLoc < 2);
|
||||
}
|
||||
|
||||
if (gridRelative) {
|
||||
|
@ -185,6 +201,7 @@ public class GriddedVectorDisplay extends AbstractGriddedDisplay<Coordinate> {
|
|||
|
||||
// rotate dir from true north to display up
|
||||
dir -= this.gc.getAzimuth();
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new VizException(e);
|
||||
}
|
||||
|
|
|
@ -44,6 +44,10 @@ import org.opengis.referencing.operation.TransformException;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Oct 13, 2011 bsteffen Initial creation
|
||||
* Sep 10, 2013 DR 16257 MPorricelli Eliminate values that
|
||||
* fail to be tranformed,e.g.
|
||||
* when too close to pole for
|
||||
* mercator projections
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -146,7 +150,19 @@ public class PlotLocationCache {
|
|||
ConcatenatedTransform.create(grid2crs, crs2crs),
|
||||
crs2grid);
|
||||
|
||||
grid2grid.transform(result, 0, result, 0, xDim * yDim);
|
||||
try {
|
||||
grid2grid.transform(result, 0, result, 0, xDim * yDim);
|
||||
} catch (TransformException e1) {
|
||||
// Set values to NaN when fail transform
|
||||
for (int i = 0; i < result.length; i += 2) {
|
||||
try {
|
||||
grid2grid.transform(result, i, result, i, 1);
|
||||
} catch (TransformException e2) {
|
||||
result[i] = Float.NaN;
|
||||
result[i + 1] = Float.NaN;
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (FactoryException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (InvalidGridGeometryException e) {
|
||||
|
|
|
@ -61,6 +61,8 @@ import com.raytheon.viz.gfe.textformatter.TextProductManager;
|
|||
* 26 SEP 2012 15423 ryu Fix product correction in practice mode
|
||||
* 15 MAY 2013 1842 dgilling Change constructor signature to accept a
|
||||
* DataManager instance.
|
||||
* 05 SEP 2013 2329 randerso Added call to ZoneCombinerComp.applyZoneCombo when
|
||||
* when run formatter button is clicked.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -386,12 +388,12 @@ public class ProductAreaComp extends Composite implements
|
|||
// use
|
||||
// it, else use the default
|
||||
String dbId = null;
|
||||
// zoneCombinerComp.compactList();
|
||||
zoneCombiner.applyZoneCombo();
|
||||
dbId = ((FormatterLauncherDialog) productTabCB)
|
||||
.getSelectedDataSource(productName);
|
||||
FormatterUtil.runFormatterScript(textProductMgr,
|
||||
productName, zoneCombiner.getZoneGroupings(),
|
||||
dbId, vtecMode, ProductAreaComp.this);
|
||||
productName, dbId, vtecMode,
|
||||
ProductAreaComp.this);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
|
@ -22,16 +22,12 @@ package com.raytheon.viz.gfe.dialogs.formatterlauncher;
|
|||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
import org.eclipse.jface.preference.IPreferenceStore;
|
||||
|
@ -61,6 +57,7 @@ import org.opengis.referencing.FactoryException;
|
|||
import org.opengis.referencing.operation.TransformException;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.gfe.db.objects.GridLocation;
|
||||
import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException;
|
||||
import com.raytheon.uf.common.localization.FileUpdatedMessage;
|
||||
import com.raytheon.uf.common.localization.FileUpdatedMessage.FileChangeType;
|
||||
import com.raytheon.uf.common.localization.ILocalizationFileObserver;
|
||||
|
@ -70,21 +67,17 @@ import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel
|
|||
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType;
|
||||
import com.raytheon.uf.common.localization.LocalizationFile;
|
||||
import com.raytheon.uf.common.localization.PathManagerFactory;
|
||||
import com.raytheon.uf.common.localization.exception.LocalizationOpFailedException;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.util.FileUtil;
|
||||
import com.raytheon.uf.common.util.file.FilenameFilters;
|
||||
import com.raytheon.uf.viz.core.RGBColors;
|
||||
import com.raytheon.uf.viz.core.VizApp;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.viz.gfe.Activator;
|
||||
import com.raytheon.viz.gfe.core.DataManagerUIFactory;
|
||||
import com.raytheon.viz.gfe.textformatter.CombinationsFileGenerator;
|
||||
import com.raytheon.viz.gfe.textformatter.CombinationsFileUtil;
|
||||
import com.raytheon.viz.gfe.textformatter.TextProductManager;
|
||||
import com.raytheon.viz.gfe.ui.AccessMgr;
|
||||
import com.raytheon.viz.gfe.ui.zoneselector.ZoneSelector;
|
||||
|
||||
/**
|
||||
|
@ -100,8 +93,9 @@ import com.raytheon.viz.gfe.ui.zoneselector.ZoneSelector;
|
|||
* Changes for non-blocking SaveDeleteComboDlg.
|
||||
* Changes for non-blocking ShuffleZoneGroupsDialog.
|
||||
* Changes for non-blocking ZoneColorEditorDlg.
|
||||
*
|
||||
* Mar 14, 2013 1794 djohnson Consolidate common FilenameFilter implementations.
|
||||
* Sep 05, 2013 2329 randerso Removed obsolete methods, added ApplyZoneCombo method
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -307,6 +301,8 @@ public class ZoneCombinerComp extends Composite implements
|
|||
createMapArea(theSaved);
|
||||
|
||||
createBottomControls();
|
||||
|
||||
applyButtonState(false);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -455,6 +451,7 @@ public class ZoneCombinerComp extends Composite implements
|
|||
@Override
|
||||
public void widgetSelected(SelectionEvent e) {
|
||||
zoneSelector.updateCombos(new HashMap<String, Integer>());
|
||||
applyButtonState(false);
|
||||
}
|
||||
});
|
||||
clearMI.setText("Clear");
|
||||
|
@ -731,14 +728,7 @@ public class ZoneCombinerComp extends Composite implements
|
|||
applyZoneComboBtn.addSelectionListener(new SelectionAdapter() {
|
||||
@Override
|
||||
public void widgetSelected(SelectionEvent event) {
|
||||
try {
|
||||
CombinationsFileGenerator.generateAutoCombinationsFile(
|
||||
zoneSelector.getZoneGroupings(),
|
||||
getCombinationsFileName() + ".py");
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM, "Unable to save "
|
||||
+ getCombinationsFileName(), e);
|
||||
}
|
||||
applyZoneCombo();
|
||||
}
|
||||
});
|
||||
Label label = new Label(controlComp, SWT.CENTER);
|
||||
|
@ -754,6 +744,25 @@ public class ZoneCombinerComp extends Composite implements
|
|||
label.setAlignment(SWT.CENTER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Save zone combo
|
||||
*/
|
||||
public void applyZoneCombo() {
|
||||
if (!buttonState()) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
CombinationsFileUtil.generateAutoCombinationsFile(
|
||||
zoneSelector.getZoneGroupings(), getCombinationsFileName()
|
||||
+ ".py");
|
||||
applyButtonState(false);
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM, "Unable to save "
|
||||
+ getCombinationsFileName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the Color Editor dialog.
|
||||
*/
|
||||
|
@ -845,93 +854,6 @@ public class ZoneCombinerComp extends Composite implements
|
|||
return file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the names of the combo files at the given level. If level is null,
|
||||
* get the names of the combo files at all levels. Otherwise, only get the
|
||||
* names of the files at the given level.
|
||||
*
|
||||
* @param level
|
||||
* @return the save combo files at the given level
|
||||
*/
|
||||
public String[] getSavedCombos(LocalizationLevel level) {
|
||||
String comboDirName = "saved";
|
||||
String[] combos;
|
||||
File localFile;
|
||||
// Accept any file whose name ends with ".py".
|
||||
FilenameFilter filter = FilenameFilters.byFileExtension(".py");
|
||||
|
||||
if (level == null) {
|
||||
// Aggregate the filenames for all levels.
|
||||
// Use a set to keep names unique.
|
||||
Set<String> comboSet = new TreeSet<String>();
|
||||
LocalizationLevel[] levels = PathManagerFactory.getPathManager()
|
||||
.getAvailableLevels();
|
||||
for (int i = levels.length - 1; i >= 0; --i) {
|
||||
localFile = getLocalization(comboDirName, levels[i]);
|
||||
if ((localFile != null) && localFile.exists()) {
|
||||
comboSet.addAll(Arrays.asList(localFile.list(filter)));
|
||||
}
|
||||
}
|
||||
|
||||
combos = comboSet.toArray(new String[0]);
|
||||
} else {
|
||||
// Get only the filenames for USER level.
|
||||
localFile = getLocalization(comboDirName);
|
||||
combos = localFile.list(filter);
|
||||
}
|
||||
return combos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the combinations file called filename if it is in list or
|
||||
* filename.py is in list, and return the loaded file as a List of Lists of
|
||||
* Strings.
|
||||
*
|
||||
* @param list
|
||||
* The list of valid filenames
|
||||
* @param filename
|
||||
* The filename to load
|
||||
* @return the contents of the file, as a List of Lists of Strings.
|
||||
*/
|
||||
// public List<List<String>> findCombos(String[] list, String filename) {
|
||||
// List<List<String>> listOfCombos = null;
|
||||
// for (int i = 0; i < list.length; i++) {
|
||||
// if (list[i].equals(filename) || list[i].equals(filename + ".py")) {
|
||||
// listOfCombos = loadCombinationsFile(filename);
|
||||
// }
|
||||
// }
|
||||
// return listOfCombos;
|
||||
// }
|
||||
|
||||
/**
|
||||
* Deletes the saved file chosen
|
||||
*
|
||||
* @param name
|
||||
* the combo file name
|
||||
* @throws LocalizationOpFailedException
|
||||
* if the server copy of the file cannot be deleted
|
||||
*/
|
||||
public void deleteSavedCombos(String name)
|
||||
throws LocalizationOpFailedException {
|
||||
String searchName = FileUtil.join(CombinationsFileUtil.COMBO_DIR_PATH,
|
||||
"saved", name + ".py");
|
||||
IPathManager pm = PathManagerFactory.getPathManager();
|
||||
LocalizationContext userContext = pm.getContext(
|
||||
LocalizationType.CAVE_STATIC, LocalizationLevel.USER);
|
||||
LocalizationFile userFile = pm.getLocalizationFile(userContext,
|
||||
searchName);
|
||||
|
||||
if (AccessMgr.verifyDelete(userFile.getName(),
|
||||
LocalizationType.CAVE_STATIC, false)) {
|
||||
if (userFile.isAvailableOnServer()) {
|
||||
userFile.delete();
|
||||
} else if (userFile.exists()) {
|
||||
File localFile = userFile.getFile();
|
||||
localFile.delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the localization for the save and delete functions. This is a
|
||||
* wrapper around getLocalization(String, level).
|
||||
|
@ -987,34 +909,40 @@ public class ZoneCombinerComp extends Composite implements
|
|||
}
|
||||
|
||||
public Map<String, Integer> loadCombinationsFile(String comboName) {
|
||||
List<List<String>> combolist = new ArrayList<List<String>>();
|
||||
File localFile = PathManagerFactory.getPathManager().getStaticFile(
|
||||
FileUtil.join(CombinationsFileUtil.COMBO_DIR_PATH, comboName
|
||||
+ ".py"));
|
||||
if (localFile != null) {
|
||||
combolist = CombinationsFileUtil.init(comboName);
|
||||
}
|
||||
|
||||
// reformat combinations into combo dictionary
|
||||
Map<String, Integer> d = new HashMap<String, Integer>();
|
||||
Map<String, Integer> dict = new HashMap<String, Integer>();
|
||||
try {
|
||||
IPathManager pm = PathManagerFactory.getPathManager();
|
||||
LocalizationContext ctx = pm.getContext(
|
||||
LocalizationType.CAVE_STATIC, LocalizationLevel.SITE);
|
||||
File localFile = pm.getFile(ctx, FileUtil.join(
|
||||
CombinationsFileUtil.COMBO_DIR_PATH, comboName + ".py"));
|
||||
|
||||
List<List<String>> combolist = new ArrayList<List<String>>();
|
||||
if (localFile != null && localFile.exists()) {
|
||||
combolist = CombinationsFileUtil.init(comboName);
|
||||
} else {
|
||||
statusHandler.error("Combinations file does not found: "
|
||||
+ comboName);
|
||||
}
|
||||
|
||||
// reformat combinations into combo dictionary
|
||||
int group = 1;
|
||||
for (List<String> zonelist : combolist) {
|
||||
for (String z : zonelist) {
|
||||
d.put(z, group);
|
||||
dict.put(z, group);
|
||||
}
|
||||
group += 1;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.SIGNIFICANT,
|
||||
"Combo file is not in combo format: " + comboName);
|
||||
} catch (GfeException e) {
|
||||
statusHandler.handle(Priority.SIGNIFICANT, e.getLocalizedMessage(),
|
||||
e);
|
||||
return new HashMap<String, Integer>();
|
||||
}
|
||||
|
||||
currentComboFile = FileUtil.join(CombinationsFileUtil.COMBO_DIR_PATH,
|
||||
comboName + ".py");
|
||||
|
||||
return d;
|
||||
return dict;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1060,11 +988,12 @@ public class ZoneCombinerComp extends Composite implements
|
|||
&& message.getFileName().equalsIgnoreCase(currentComboFile)) {
|
||||
File file = new File(message.getFileName());
|
||||
String comboName = file.getName().replace(".py", "");
|
||||
if (file.getParent().endsWith("saved")) {
|
||||
comboName = FileUtil.join("saved", comboName);
|
||||
}
|
||||
statusHandler
|
||||
.info("Received FileUpdatedMessage for combinations file: "
|
||||
+ comboName);
|
||||
Map<String, Integer> comboDict = loadCombinationsFile(comboName);
|
||||
this.zoneSelector.updateCombos(comboDict);
|
||||
applyButtonState(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1085,4 +1014,20 @@ public class ZoneCombinerComp extends Composite implements
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
private boolean buttonState() {
|
||||
final boolean[] state = { false };
|
||||
if (this.applyZoneComboBtn != null
|
||||
&& !this.applyZoneComboBtn.isDisposed()) {
|
||||
VizApp.runSync(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
state[0] = ZoneCombinerComp.this.applyZoneComboBtn
|
||||
.isEnabled();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return state[0];
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,108 +0,0 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
|
||||
/**
|
||||
* Creating the combinations file for the TextFormatter
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
*6/12/2008 mnash Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mnash
|
||||
* @version 1
|
||||
*/
|
||||
package com.raytheon.viz.gfe.textformatter;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.gfe.request.SaveCombinationsFileRequest;
|
||||
import com.raytheon.uf.common.localization.IPathManager;
|
||||
import com.raytheon.uf.common.localization.LocalizationContext;
|
||||
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel;
|
||||
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationType;
|
||||
import com.raytheon.uf.common.localization.PathManagerFactory;
|
||||
import com.raytheon.uf.common.util.FileUtil;
|
||||
import com.raytheon.viz.gfe.core.DataManager;
|
||||
import com.raytheon.viz.gfe.core.internal.IFPClient;
|
||||
|
||||
public class CombinationsFileGenerator {
|
||||
|
||||
/**
|
||||
* Generates combinations files based on just running the formatter
|
||||
*
|
||||
* @param zoneGroupList
|
||||
* @param filename
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void generateAutoCombinationsFile(
|
||||
List<List<String>> zoneGroupList, String filename) throws Exception {
|
||||
generateCombinationsFile(zoneGroupList, filename, "");
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates combinations files based on user wanting to save
|
||||
*
|
||||
* @param zoneGroupList
|
||||
* @param filename
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void generateSavedCombinationsFile(
|
||||
List<List<String>> zoneGroupList, String filename) throws Exception {
|
||||
|
||||
if (filename.endsWith(".py")) {
|
||||
generateCombinationsFile(zoneGroupList, filename, "saved"
|
||||
+ File.separator);
|
||||
} else {
|
||||
generateCombinationsFile(zoneGroupList, filename + ".py", "saved"
|
||||
+ File.separator);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called by both auto and saved functions to actually write file
|
||||
*
|
||||
* @param zoneGroupList
|
||||
* @param filename
|
||||
* @param loc
|
||||
* @throws Exception
|
||||
*/
|
||||
public static void generateCombinationsFile(
|
||||
List<List<String>> zoneGroupList, String filename, String loc)
|
||||
throws Exception {
|
||||
IFPClient ifpc = DataManager.getCurrentInstance().getClient();
|
||||
SaveCombinationsFileRequest req = new SaveCombinationsFileRequest();
|
||||
req.setFileName(FileUtil.join(loc, filename));
|
||||
req.setCombos(zoneGroupList);
|
||||
ifpc.makeRequest(req);
|
||||
|
||||
IPathManager pm = PathManagerFactory.getPathManager();
|
||||
LocalizationContext ctx = pm.getContext(LocalizationType.CAVE_STATIC,
|
||||
LocalizationLevel.SITE);
|
||||
pm.getFile(ctx, FileUtil.join("gfe", "combinations", filename));
|
||||
}
|
||||
}
|
|
@ -20,6 +20,7 @@
|
|||
package com.raytheon.viz.gfe.textformatter;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
@ -33,7 +34,9 @@ import javax.xml.bind.annotation.XmlRootElement;
|
|||
|
||||
import jep.JepException;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.gfe.exception.GfeException;
|
||||
import com.raytheon.uf.common.dataplugin.gfe.python.GfePyIncludeUtil;
|
||||
import com.raytheon.uf.common.dataplugin.gfe.request.SaveCombinationsFileRequest;
|
||||
import com.raytheon.uf.common.localization.IPathManager;
|
||||
import com.raytheon.uf.common.localization.LocalizationContext;
|
||||
import com.raytheon.uf.common.localization.LocalizationContext.LocalizationLevel;
|
||||
|
@ -49,8 +52,9 @@ import com.raytheon.uf.common.serialization.SerializationException;
|
|||
import com.raytheon.uf.common.serialization.SerializationUtil;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.util.FileUtil;
|
||||
import com.raytheon.viz.gfe.core.DataManagerUIFactory;
|
||||
import com.raytheon.viz.gfe.core.internal.IFPClient;
|
||||
import com.raytheon.viz.gfe.textformatter.CombinationsFileUtil.ComboData.Entry;
|
||||
|
||||
/**
|
||||
|
@ -60,7 +64,10 @@ import com.raytheon.viz.gfe.textformatter.CombinationsFileUtil.ComboData.Entry;
|
|||
* SOFTWARE HISTORY
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 25, 2008 mnash Initial creation
|
||||
* Jul 25, 2008 mnash Initial creation
|
||||
* Sep 05, 2013 #2329 randerso Moved genereateAutoCombinationsFile here
|
||||
* Cleaned up error handling
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author mnash
|
||||
|
@ -200,7 +207,7 @@ public class CombinationsFileUtil {
|
|||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static List<List<String>> init(String comboName) {
|
||||
public static List<List<String>> init(String comboName) throws GfeException {
|
||||
|
||||
IPathManager pm = PathManagerFactory.getPathManager();
|
||||
|
||||
|
@ -211,7 +218,6 @@ public class CombinationsFileUtil {
|
|||
File comboFile = new File(comboName);
|
||||
comboName = comboFile.getName();
|
||||
|
||||
String comboPath = GfePyIncludeUtil.getCombinationsIncludePath();
|
||||
String scriptPath = FileUtil.join(
|
||||
GfePyIncludeUtil.getUtilitiesLF(baseContext).getFile()
|
||||
.getPath(), "CombinationsInterface.py");
|
||||
|
@ -221,13 +227,15 @@ public class CombinationsFileUtil {
|
|||
map.put("comboName", comboName);
|
||||
PythonScript python = null;
|
||||
try {
|
||||
python = new PythonScript(scriptPath,
|
||||
PyUtil.buildJepIncludePath(comboPath));
|
||||
python = new PythonScript(scriptPath, PyUtil.buildJepIncludePath(
|
||||
GfePyIncludeUtil.getCombinationsIncludePath(),
|
||||
GfePyIncludeUtil.getCommonPythonIncludePath()),
|
||||
CombinationsFileUtil.class.getClassLoader());
|
||||
Object com = python.execute("getCombinations", map);
|
||||
combos = (List<List<String>>) com;
|
||||
} catch (JepException e) {
|
||||
statusHandler.handle(Priority.CRITICAL,
|
||||
"Could not get combinations", e);
|
||||
throw new GfeException("Error loading combinations file: "
|
||||
+ comboName, e);
|
||||
} finally {
|
||||
if (python != null) {
|
||||
python.dispose();
|
||||
|
@ -235,4 +243,30 @@ public class CombinationsFileUtil {
|
|||
}
|
||||
return combos;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates combinations files based on just running the formatter
|
||||
*
|
||||
* @param zoneGroupList
|
||||
* @param filename
|
||||
* @throws Exception
|
||||
* @throws IOException
|
||||
*/
|
||||
public static void generateAutoCombinationsFile(
|
||||
List<List<String>> zoneGroupList, String filename) throws Exception {
|
||||
IFPClient ifpc = DataManagerUIFactory.getCurrentInstance().getClient();
|
||||
SaveCombinationsFileRequest req = new SaveCombinationsFileRequest();
|
||||
req.setFileName(filename);
|
||||
req.setCombos(zoneGroupList);
|
||||
try {
|
||||
statusHandler.info("Saving combinations file: " + filename);
|
||||
ifpc.makeRequest(req);
|
||||
statusHandler.info("Successfully saved combinations file: "
|
||||
+ filename);
|
||||
} catch (Exception e) {
|
||||
statusHandler.error("Error saving combinations file: " + filename,
|
||||
e);
|
||||
throw e;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
package com.raytheon.viz.gfe.textformatter;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
|
@ -40,8 +39,9 @@ import com.raytheon.viz.gfe.tasks.TaskManager;
|
|||
* SOFTWARE HISTORY
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Sep 8, 2008 njensen Initial creation
|
||||
* Jan 15, 2010 3395 ryu Fix "issued by" functionality
|
||||
* Sep 8, 2008 njensen Initial creation
|
||||
* Jan 15, 2010 3395 ryu Fix "issued by" functionality
|
||||
* Sep 05, 2013 2329 randerso Removed save of combinations file
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -63,21 +63,20 @@ public class FormatterUtil {
|
|||
* the formatter instance to use
|
||||
* @param productName
|
||||
* the name of the text product
|
||||
* @param zoneList
|
||||
* the list of zones to produce the product for
|
||||
* @param dbId
|
||||
* source database
|
||||
* @param vtecMode
|
||||
* VTEC mode
|
||||
* @param finish
|
||||
* listener to fire when formatter finishes generating product
|
||||
*/
|
||||
public static void runFormatterScript(TextProductManager productMgr,
|
||||
String productName, List<List<String>> zoneList, String dbId,
|
||||
String vtecMode, TextProductFinishListener finish) {
|
||||
String productName, String dbId, String vtecMode,
|
||||
TextProductFinishListener finish) {
|
||||
try {
|
||||
String filename = productMgr.getCombinationsFileName(productName);
|
||||
boolean mapRequired = productMgr.mapRequired(productName);
|
||||
if (filename != null && mapRequired) {
|
||||
String filenameExt = filename + ".py";
|
||||
CombinationsFileGenerator.generateAutoCombinationsFile(
|
||||
zoneList, filenameExt);
|
||||
productMgr.reloadModule(filename);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="FFG-TUA,FFG-ACR,FFG-STR,FFG-RSA,FFG-ORN,FFG-RHA,FFG-KRF,FFG-MSR,FFG-TAR,FFG-PTR,FFG-TIR-HiRes,FFG-ALR,FFG-FWR"
|
||||
<constraint constraintValue="FFG-TUA,FFG-ACR,FFG-STR,FFG-RSA,FFG-ORN,FFG-RHA,FFG-KRF,FFG-MSR,FFG-TAR,FFG-PTR,FFG-TIR,FFG-ALR,FFG-FWR"
|
||||
constraintType="IN" />
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
|
@ -321,7 +321,7 @@
|
|||
<constraint constraintValue="grid" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
<mapping key="info.datasetId">
|
||||
<constraint constraintValue="FFG-TIR-HiRes" constraintType="EQUALS"/>
|
||||
<constraint constraintValue="FFG-TIR" constraintType="EQUALS"/>
|
||||
</mapping>
|
||||
</metadataMap>
|
||||
</resourceData>
|
||||
|
|
|
@ -246,19 +246,19 @@
|
|||
menuText="1hr FFG" id="OH1hrFFG">
|
||||
<dataURI>/grib/%/FFG-TIR/FFG0124hr/%</dataURI>
|
||||
<substitute key="timespan" value="FFG0124hr"/>
|
||||
<substitute key="model" value="FFG-TIR-HiRes"/>
|
||||
<substitute key="model" value="FFG-TIR"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/hydro/FFGmosaic.xml"
|
||||
menuText="3hr FFG" id="OH3hrFFG">
|
||||
<dataURI>/grib/%/FFG-TIR-HiRes/FFG0324hr/%</dataURI>
|
||||
<dataURI>/grib/%/FFG-TIR/FFG0324hr/%</dataURI>
|
||||
<substitute key="timespan" value="FFG0324hr"/>
|
||||
<substitute key="model" value="FFG-TIR-HiRes"/>
|
||||
<substitute key="model" value="FFG-TIR"/>
|
||||
</contribute>
|
||||
<contribute xsi:type="bundleItem" file="bundles/hydro/FFGmosaic.xml"
|
||||
menuText="6hr FFG" id="OH6hrFFG">
|
||||
<dataURI>/grib/%/FFG-TIR-HiRes/FFG0624hr/%</dataURI>
|
||||
<dataURI>/grib/%/FFG-TIR/FFG0624hr/%</dataURI>
|
||||
<substitute key="timespan" value="FFG0624hr"/>
|
||||
<substitute key="model" value="FFG-TIR-HiRes"/>
|
||||
<substitute key="model" value="FFG-TIR"/>
|
||||
</contribute>
|
||||
</contribute>
|
||||
<contribute xsi:type="subMenu" menuText="SERFC" id="SERFCMenu">
|
||||
|
|
|
@ -76,7 +76,9 @@ import com.raytheon.viz.mpe.ui.rsc.MPEFieldResourceData.MPEFieldFrame;
|
|||
* Nov 29, 2012 mschenke Initial creation
|
||||
* May 28, 2013 15971 lbousaidi change the reading hour for SATPRE
|
||||
* since the start time in the file is one
|
||||
* hour less than the file time stamp.
|
||||
* hour less than the file time stamp.
|
||||
* Sep 17, 2013 16563 snaples Updated createFrameImage to handle trace precip
|
||||
* properly when mapping to screen.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -148,6 +150,7 @@ public class MPEFieldResource extends
|
|||
* @param frame
|
||||
* @return
|
||||
*/
|
||||
@SuppressWarnings("incomplete-switch")
|
||||
private short[] getEditedData(MPEFieldFrame frame) {
|
||||
short[] editedData = frame.getEditedData();
|
||||
if (editedData != null) {
|
||||
|
@ -413,16 +416,42 @@ public class MPEFieldResource extends
|
|||
.getColorMapParameters();
|
||||
UnitConverter dataToImage = params.getDataToImageConverter();
|
||||
short[] data = getEditedData(frame);
|
||||
DisplayFieldData cvuse = resourceData.getFieldData();
|
||||
int length = data.length;
|
||||
short[] imageData = new short[length];
|
||||
for (int i = 0; i < length; ++i) {
|
||||
short value = data[i];
|
||||
if (value == MISSING_VALUE) {
|
||||
imageData[i] = 0;
|
||||
} else {
|
||||
imageData[i] = (short) dataToImage.convert(value);
|
||||
switch (cvuse) {
|
||||
case Locbias:
|
||||
case Height:
|
||||
case Index:
|
||||
case Locspan:
|
||||
case mintempPrism:
|
||||
case maxtempPrism:
|
||||
for (int i = 0; i < length; ++i) {
|
||||
short value = data[i];
|
||||
if (value == MISSING_VALUE) {
|
||||
imageData[i] = 0;
|
||||
} else {
|
||||
imageData[i] = (short) dataToImage.convert(value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default :
|
||||
for (int i = 0; i < length; ++i) {
|
||||
short value = data[i];
|
||||
if (value == MISSING_VALUE) {
|
||||
imageData[i] = 0;
|
||||
} else if(value <= 0){
|
||||
imageData[i] = 1;
|
||||
} else if(value > 0 && value < 25){
|
||||
value = 10;
|
||||
imageData[i] = (short) dataToImage.convert(value);
|
||||
} else {
|
||||
imageData[i] = (short) dataToImage.convert(value);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
return new GriddedImageDisplay2(ShortBuffer.wrap(imageData),
|
||||
gridGeometry, this);
|
||||
}
|
||||
|
|
|
@ -275,8 +275,9 @@ public class MPEFieldResourceData extends AbstractMPEGriddedResourceData {
|
|||
case mintempPrism:
|
||||
case maxtempPrism:
|
||||
return NonSI.FAHRENHEIT;
|
||||
default:
|
||||
return NonSI.INCH;
|
||||
}
|
||||
return NonSI.INCH;
|
||||
}
|
||||
|
||||
public static Unit<?> getDataUnitsForField(DisplayFieldData fieldData) {
|
||||
|
@ -293,7 +294,9 @@ public class MPEFieldResourceData extends AbstractMPEGriddedResourceData {
|
|||
case mintempPrism:
|
||||
case maxtempPrism:
|
||||
return NonSI.FAHRENHEIT.divide(10);
|
||||
|
||||
default :
|
||||
return SI.MILLIMETER.divide(100);
|
||||
}
|
||||
return SI.MILLIMETER.divide(100);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ import com.raytheon.uf.common.activetable.ActiveTableMode;
|
|||
import com.raytheon.uf.common.activetable.ActiveTableRecord;
|
||||
import com.raytheon.uf.common.activetable.GetActiveTableRequest;
|
||||
import com.raytheon.uf.common.activetable.GetActiveTableResponse;
|
||||
import com.raytheon.uf.common.dataplugin.warning.EmergencyType;
|
||||
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
|
@ -48,6 +49,7 @@ import com.raytheon.viz.texteditor.util.VtecUtil;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jul 23, 2013 2176 jsanchez Initial creation
|
||||
* Sep 4, 2013 2176 jsanchez Moved EmergencyType to a public class.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -62,38 +64,6 @@ public class EmergencyConfirmationMsg implements IWarnGenConfirmationable {
|
|||
|
||||
private String productMessage;
|
||||
|
||||
private static class EmergencyType {
|
||||
|
||||
private static final EmergencyType TORNADO = new EmergencyType(
|
||||
"TORNADO EMERGENCY", "TO.W");
|
||||
|
||||
private static final EmergencyType FLASH_FLOOD = new EmergencyType(
|
||||
"FLASH FLOOD EMERGENCY", "FF.W");
|
||||
|
||||
private final String value;
|
||||
|
||||
private final String phensig;
|
||||
|
||||
private final static EmergencyType[] values = new EmergencyType[] {
|
||||
TORNADO, FLASH_FLOOD };
|
||||
|
||||
private EmergencyType(String type, String phensig) {
|
||||
this.value = type;
|
||||
this.phensig = phensig;
|
||||
}
|
||||
|
||||
public static EmergencyType valueOf(String phensig) {
|
||||
EmergencyType type = null;
|
||||
for (EmergencyType t : values) {
|
||||
if (t.phensig.equals(phensig)) {
|
||||
type = t;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return type;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Orders the ActiveTableRecord based on the issue time (ascending)
|
||||
*/
|
||||
|
@ -126,11 +96,11 @@ public class EmergencyConfirmationMsg implements IWarnGenConfirmationable {
|
|||
|
||||
// Check if the warning product is a valid EmergencyType.
|
||||
if (type != null) {
|
||||
boolean currentEmergency = body.contains("EMERGENCY");
|
||||
boolean currentEmergency = EmergencyType.isEmergency(body);
|
||||
if (action == WarningAction.NEW && currentEmergency) {
|
||||
// Only occurs when the warning is first issued and not any
|
||||
// other action
|
||||
productMessage = "This is a " + type.value;
|
||||
productMessage = "This is a " + type.getValue();
|
||||
} else if (action == WarningAction.CON
|
||||
|| action == WarningAction.EXT
|
||||
|| action == WarningAction.CANCON) {
|
||||
|
@ -159,14 +129,14 @@ public class EmergencyConfirmationMsg implements IWarnGenConfirmationable {
|
|||
new ActiveTableRecordComparator());
|
||||
ActiveTableRecord record = records
|
||||
.get(records.size() - 1);
|
||||
boolean wasEmergency = record.getRawmessage().contains(
|
||||
"EMERGENCY");
|
||||
boolean wasEmergency = EmergencyType.isEmergency(record
|
||||
.getRawmessage());
|
||||
if (!wasEmergency && currentEmergency) {
|
||||
productMessage = "This is an upgrade of a "
|
||||
+ type.value;
|
||||
+ type.getValue();
|
||||
} else if (wasEmergency && !currentEmergency) {
|
||||
productMessage = "This is a downgrade of a "
|
||||
+ type.value;
|
||||
+ type.getValue();
|
||||
}
|
||||
}
|
||||
} catch (VizException e) {
|
||||
|
|
|
@ -328,9 +328,9 @@ import com.raytheon.viz.ui.dialogs.SWTMessageBox;
|
|||
* 25July2013 15733 GHull Read font and color prefs from TextEditorCfg.
|
||||
* 23Aug2013 DR 16514 D. Friedman Fix handling of completed product requests. Do not change
|
||||
* command history or close browser window for "update obs".
|
||||
* 04Sep2013 2176 jsanchez Changed the order of the QC check dialogs.
|
||||
* 12Sep2013 DR 2249 rferrel Change Time stamp in file name created by warngen to use
|
||||
* simulated time.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author lvenable
|
||||
|
@ -4822,14 +4822,14 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
@Override
|
||||
public void dialogClosed(Object returnValue) {
|
||||
if (Boolean.TRUE.equals(returnValue)) {
|
||||
checkEmergencyProduct(resend);
|
||||
finishSendProduct(resend);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
wgcd.open();
|
||||
} else {
|
||||
checkEmergencyProduct(resend);
|
||||
finishSendProduct(resend);
|
||||
}
|
||||
} else {
|
||||
finishSendProduct(resend);
|
||||
|
@ -4879,7 +4879,7 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
@Override
|
||||
public void dialogClosed(Object returnValue) {
|
||||
if (Boolean.TRUE.equals(returnValue)) {
|
||||
warngenCloseCallback(resend);
|
||||
checkEmergencyProduct(resend);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -4907,14 +4907,14 @@ public class TextEditorDialog extends CaveSWTDialog implements VerifyListener,
|
|||
@Override
|
||||
public void dialogClosed(Object returnValue) {
|
||||
if (Boolean.TRUE.equals(returnValue)) {
|
||||
finishSendProduct(resend);
|
||||
warngenCloseCallback(resend);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
wgcd.open();
|
||||
} else {
|
||||
finishSendProduct(resend);
|
||||
warngenCloseCallback(resend);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
<extension
|
||||
point="org.eclipse.ui.menus">
|
||||
<menuContribution
|
||||
locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
|
||||
locationURI="toolbar:org.eclipse.ui.main.toolbar?after=d2d-3">
|
||||
<toolbar
|
||||
id="plugins">
|
||||
<command
|
||||
|
|
|
@ -28,6 +28,7 @@ import java.util.regex.Pattern;
|
|||
|
||||
import javax.jms.BytesMessage;
|
||||
import javax.jms.Connection;
|
||||
import javax.jms.DeliveryMode;
|
||||
import javax.jms.JMSException;
|
||||
import javax.jms.MessageProducer;
|
||||
import javax.jms.Session;
|
||||
|
@ -47,7 +48,7 @@ import com.raytheon.viz.texteditor.msgs.IWarngenObserver;
|
|||
import com.raytheon.viz.texteditor.util.SiteAbbreviationUtil;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* Sends warning products to text workstation and text database.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -58,6 +59,7 @@ import com.raytheon.viz.texteditor.util.SiteAbbreviationUtil;
|
|||
* 01Jun2010 2187 cjeanbap Added operational mode functionality
|
||||
* 02Aug2010 2187 cjeanbap Update variable/method signature to be consistent.
|
||||
* 04Oct2010 7193 cjeanbap Add time-to-live value to MessageProducer.
|
||||
* Sep 13, 2013 2368 rjpeter Set delivery mode to PERSISTENT.
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
|
@ -65,209 +67,208 @@ import com.raytheon.viz.texteditor.util.SiteAbbreviationUtil;
|
|||
*/
|
||||
|
||||
public class WarningSender implements IWarngenObserver {
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(WarningSender.class);
|
||||
private static final transient IUFStatusHandler statusHandler = UFStatus
|
||||
.getHandler(WarningSender.class);
|
||||
|
||||
private String hostName = null;
|
||||
private final String hostName = null;
|
||||
|
||||
private boolean notifyError;
|
||||
private boolean notifyError;
|
||||
|
||||
private static final long MILLISECONDS_PER_SECOND = 1000;
|
||||
private static final long MILLISECONDS_PER_SECOND = 1000;
|
||||
|
||||
private static final long SECONDS_PER_MINUTE = 60;
|
||||
private static final long SECONDS_PER_MINUTE = 60;
|
||||
|
||||
private static final long TTL_MINUTES = 5;
|
||||
private static final long TTL_MINUTES = 5;
|
||||
|
||||
private static Pattern PATTERN = Pattern.compile("(\\d{1,1})");
|
||||
private static Pattern PATTERN = Pattern.compile("(\\d{1,1})");
|
||||
|
||||
private static final SimpleDateFormat sdf;
|
||||
private static final SimpleDateFormat sdf;
|
||||
|
||||
static {
|
||||
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
}
|
||||
static {
|
||||
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
|
||||
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc) Incoming message was not a binary
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.viz.texteditor.msgs.IWarngenObserver#setTextWarngenDisplay
|
||||
* (java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void setTextWarngenDisplay(String warning, boolean ne) {
|
||||
this.notifyError = ne;
|
||||
/*
|
||||
* (non-Javadoc) Incoming message was not a binary
|
||||
*
|
||||
* @see
|
||||
* com.raytheon.viz.texteditor.msgs.IWarngenObserver#setTextWarngenDisplay
|
||||
* (java.lang.String)
|
||||
*/
|
||||
@Override
|
||||
public void setTextWarngenDisplay(String warning, boolean ne) {
|
||||
this.notifyError = ne;
|
||||
|
||||
String number = "0";
|
||||
String host = TextWorkstationConstants.getId();
|
||||
long t0 = System.currentTimeMillis();
|
||||
String siteNode = SiteAbbreviationUtil.getSiteNode(LocalizationManager
|
||||
.getInstance().getCurrentSite());
|
||||
System.out.println("Get site node time: "
|
||||
+ (System.currentTimeMillis() - t0));
|
||||
if (host == null) {
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Text Workstation host not set in preferences.");
|
||||
} else {
|
||||
Matcher m = PATTERN.matcher(host);
|
||||
if (m.find()) {
|
||||
number = m.group();
|
||||
}
|
||||
}
|
||||
String number = "0";
|
||||
String host = TextWorkstationConstants.getId();
|
||||
long t0 = System.currentTimeMillis();
|
||||
String siteNode = SiteAbbreviationUtil.getSiteNode(LocalizationManager
|
||||
.getInstance().getCurrentSite());
|
||||
statusHandler.debug("Get site node time: "
|
||||
+ (System.currentTimeMillis() - t0));
|
||||
if (host == null) {
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Text Workstation host not set in preferences.");
|
||||
} else {
|
||||
Matcher m = PATTERN.matcher(host);
|
||||
if (m.find()) {
|
||||
number = m.group();
|
||||
}
|
||||
}
|
||||
|
||||
String id = siteNode + "WRKWG" + number;
|
||||
boolean sentToTextDatabase = false;
|
||||
String id = siteNode + "WRKWG" + number;
|
||||
boolean sentToTextDatabase = false;
|
||||
|
||||
try {
|
||||
boolean messageNotSent = true;
|
||||
int connectCount = 0;
|
||||
t0 = System.currentTimeMillis();
|
||||
byte[] data = SerializationUtil.transformToThrift(id + ":"
|
||||
+ warning);
|
||||
while (messageNotSent && connectCount < 4) {
|
||||
Session s = null;
|
||||
MessageProducer mp = null;
|
||||
Connection conn = null;
|
||||
try {
|
||||
conn = JMSConnection.getInstance().getFactory()
|
||||
.createConnection();
|
||||
s = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
|
||||
mp = s.createProducer(s
|
||||
.createQueue(TextWorkstationConstants
|
||||
.getDestinationTextWorkstationQueueName()));
|
||||
mp.setTimeToLive(TTL_MINUTES * SECONDS_PER_MINUTE
|
||||
* MILLISECONDS_PER_SECOND);
|
||||
BytesMessage m = s.createBytesMessage();
|
||||
m.writeBytes(data);
|
||||
mp.send(m);
|
||||
long t1 = System.currentTimeMillis();
|
||||
System.out.println(WarningSender.getCurTimeString() + ": "
|
||||
+ id + " sent to text workstation in " + (t1 - t0)
|
||||
+ "ms in " + (connectCount + 1)
|
||||
+ (connectCount > 0 ? " tries" : " try"));
|
||||
messageNotSent = false;
|
||||
} catch (JMSException e) {
|
||||
if (notifyError) {
|
||||
statusHandler
|
||||
.handle(Priority.PROBLEM,
|
||||
"Error trying to send product ["
|
||||
+ id
|
||||
+ "] to Text Workstation. Attempting to reconnect. ",
|
||||
e);
|
||||
notifyError = false;
|
||||
}
|
||||
} finally {
|
||||
if (mp != null) {
|
||||
try {
|
||||
mp.close();
|
||||
mp = null;
|
||||
} catch (Exception e) {
|
||||
mp = null;
|
||||
}
|
||||
}
|
||||
if (s != null) {
|
||||
try {
|
||||
s.close();
|
||||
s = null;
|
||||
} catch (Exception e) {
|
||||
s = null;
|
||||
}
|
||||
}
|
||||
if (conn != null) {
|
||||
try {
|
||||
conn.close();
|
||||
conn = null;
|
||||
} catch (Exception e) {
|
||||
conn = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (messageNotSent) {
|
||||
if (!sentToTextDatabase) {
|
||||
try {
|
||||
sendToTextDatabase(id, warning);
|
||||
sentToTextDatabase = true;
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error trying to save product [" + id
|
||||
+ "] to Text Database: ", e);
|
||||
}
|
||||
}
|
||||
try {
|
||||
boolean messageNotSent = true;
|
||||
int connectCount = 0;
|
||||
t0 = System.currentTimeMillis();
|
||||
byte[] data = SerializationUtil.transformToThrift(id + ":"
|
||||
+ warning);
|
||||
while (messageNotSent && (connectCount < 4)) {
|
||||
Session s = null;
|
||||
MessageProducer mp = null;
|
||||
Connection conn = null;
|
||||
try {
|
||||
conn = JMSConnection.getInstance().getFactory()
|
||||
.createConnection();
|
||||
s = conn.createSession(false, Session.CLIENT_ACKNOWLEDGE);
|
||||
mp = s.createProducer(s
|
||||
.createQueue(TextWorkstationConstants
|
||||
.getDestinationTextWorkstationQueueName()));
|
||||
mp.setTimeToLive(TTL_MINUTES * SECONDS_PER_MINUTE
|
||||
* MILLISECONDS_PER_SECOND);
|
||||
BytesMessage m = s.createBytesMessage();
|
||||
m.writeBytes(data);
|
||||
m.setJMSDeliveryMode(DeliveryMode.PERSISTENT);
|
||||
mp.send(m);
|
||||
long t1 = System.currentTimeMillis();
|
||||
statusHandler.debug(id + " sent to text workstation in "
|
||||
+ (t1 - t0) + "ms in " + (connectCount + 1)
|
||||
+ (connectCount > 0 ? " tries" : " try"));
|
||||
messageNotSent = false;
|
||||
} catch (JMSException e) {
|
||||
if (notifyError) {
|
||||
statusHandler
|
||||
.handle(Priority.PROBLEM,
|
||||
"Error trying to send product ["
|
||||
+ id
|
||||
+ "] to Text Workstation. Attempting to reconnect. ",
|
||||
e);
|
||||
notifyError = false;
|
||||
}
|
||||
} finally {
|
||||
if (mp != null) {
|
||||
try {
|
||||
mp.close();
|
||||
mp = null;
|
||||
} catch (Exception e) {
|
||||
mp = null;
|
||||
}
|
||||
}
|
||||
if (s != null) {
|
||||
try {
|
||||
s.close();
|
||||
s = null;
|
||||
} catch (Exception e) {
|
||||
s = null;
|
||||
}
|
||||
}
|
||||
if (conn != null) {
|
||||
try {
|
||||
conn.close();
|
||||
conn = null;
|
||||
} catch (Exception e) {
|
||||
conn = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (messageNotSent) {
|
||||
if (!sentToTextDatabase) {
|
||||
try {
|
||||
sendToTextDatabase(id, warning);
|
||||
sentToTextDatabase = true;
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error trying to save product [" + id
|
||||
+ "] to Text Database: ", e);
|
||||
}
|
||||
}
|
||||
|
||||
connectCount++;
|
||||
switch (connectCount) {
|
||||
case 1:
|
||||
Thread.sleep(1000);
|
||||
break;
|
||||
case 2:
|
||||
Thread.sleep(5 * 1000);
|
||||
break;
|
||||
case 3:
|
||||
Thread.sleep(30 * 1000);
|
||||
break;
|
||||
case 4:
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Could not reconnect (" + id
|
||||
+ ") after 3 tries: ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
connectCount++;
|
||||
switch (connectCount) {
|
||||
case 1:
|
||||
Thread.sleep(1000);
|
||||
break;
|
||||
case 2:
|
||||
Thread.sleep(5 * 1000);
|
||||
break;
|
||||
case 3:
|
||||
Thread.sleep(30 * 1000);
|
||||
break;
|
||||
case 4:
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Could not reconnect (" + id
|
||||
+ ") after 3 tries: ");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!sentToTextDatabase) {
|
||||
try {
|
||||
sendToTextDatabase(id, warning);
|
||||
sentToTextDatabase = true;
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error trying to save product [" + id
|
||||
+ "] to Text Database: ", e);
|
||||
}
|
||||
}
|
||||
} catch (UnknownHostException uhe) {
|
||||
if (notifyError) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"unable to map hostname, " + hostName
|
||||
+ ", to an ip address", uhe);
|
||||
notifyError = false;
|
||||
}
|
||||
if (!sentToTextDatabase) {
|
||||
try {
|
||||
sendToTextDatabase(id, warning);
|
||||
sentToTextDatabase = true;
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error trying to save product [" + id
|
||||
+ "] to Text Database: ", e);
|
||||
}
|
||||
}
|
||||
} catch (UnknownHostException uhe) {
|
||||
if (notifyError) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"unable to map hostname, " + hostName
|
||||
+ ", to an ip address", uhe);
|
||||
notifyError = false;
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error trying to send product [" + id
|
||||
+ "] to Text Workstation: ", e);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error trying to send product [" + id
|
||||
+ "] to Text Workstation: ", e);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves a product to the text database.
|
||||
*
|
||||
* @param id
|
||||
* @param warning
|
||||
* @throws VizException
|
||||
*/
|
||||
public static void sendToTextDatabase(String id, String warning)
|
||||
throws VizException {
|
||||
CAVEMode mode = CAVEMode.getMode();
|
||||
boolean operationalMode = (CAVEMode.OPERATIONAL.equals(mode)
|
||||
|| CAVEMode.TEST.equals(mode) ? true : false);
|
||||
/**
|
||||
* Saves a product to the text database.
|
||||
*
|
||||
* @param id
|
||||
* @param warning
|
||||
* @throws VizException
|
||||
*/
|
||||
public static void sendToTextDatabase(String id, String warning)
|
||||
throws VizException {
|
||||
CAVEMode mode = CAVEMode.getMode();
|
||||
boolean operationalMode = (CAVEMode.OPERATIONAL.equals(mode)
|
||||
|| CAVEMode.TEST.equals(mode) ? true : false);
|
||||
|
||||
// Generate StdTextProduct and insert into db
|
||||
long t0 = System.currentTimeMillis();
|
||||
ThriftClient.sendRequest(new InsertStdTextProductRequest(id, warning,
|
||||
operationalMode));
|
||||
// Generate StdTextProduct and insert into db
|
||||
long t0 = System.currentTimeMillis();
|
||||
ThriftClient.sendRequest(new InsertStdTextProductRequest(id, warning,
|
||||
operationalMode));
|
||||
|
||||
System.out.println(WarningSender.getCurTimeString() + ": " + id
|
||||
+ " saved to textdb in " + (System.currentTimeMillis() - t0)
|
||||
+ "ms");
|
||||
}
|
||||
statusHandler.debug(id + " saved to textdb in "
|
||||
+ (System.currentTimeMillis() - t0) + "ms");
|
||||
}
|
||||
|
||||
public static String getCurTimeString() {
|
||||
String rval = null;
|
||||
synchronized (sdf) {
|
||||
rval = sdf.format(new Date());
|
||||
}
|
||||
return rval;
|
||||
}
|
||||
public static String getCurTimeString() {
|
||||
String rval = null;
|
||||
synchronized (sdf) {
|
||||
rval = sdf.format(new Date());
|
||||
}
|
||||
return rval;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory;
|
|||
* Mar 25, 2013 1605 jsanchez Set ClosestPoint's prepGeom.
|
||||
* Apr 24, 2013 1944 jsanchez Updated calculateLocationPortion visibility to public.
|
||||
* May 2, 2013 1963 jsanchez Referenced calculatePortion from GisUtil if intersection less than DEFAULT_PORTION_TOLERANCE.
|
||||
* Sep 13, 2013 DR 16601 D. Friedman Fix from jsanchez: Allow cities outside the CWA.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -156,8 +157,6 @@ public class DbAreaSourceDataAdaptor extends AbstractDbSourceDataAdaptor {
|
|||
filter = new HashMap<String, RequestConstraint>();
|
||||
}
|
||||
|
||||
filter.put(cwaField, new RequestConstraint(localizedSite));
|
||||
|
||||
return filter;
|
||||
}
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ package com.raytheon.viz.warngen.gis;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Aug 5, 2013 2177 jsanchez Initial creation
|
||||
* Sep 22, 2013 2177 jsanchez Updated EW_MASK.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -156,7 +157,7 @@ public class CoverageConstants {
|
|||
EW_MASK[i] = XEAST | EAST;
|
||||
} else if (i < 106) {
|
||||
EW_MASK[i] = WEST;
|
||||
} else if (i > 145) {
|
||||
} else if (i > 148) {
|
||||
EW_MASK[i] = EAST;
|
||||
} else if (i < 118) {
|
||||
EW_MASK[i] = CENTRAL_EW | WEST;
|
||||
|
|
|
@ -38,6 +38,7 @@ import com.vividsolutions.jts.geom.Geometry;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Aug 5, 2013 2177 jsanchez Initial creation
|
||||
* Sep 22, 2013 2177 jsanchez Updated logic.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -71,9 +72,16 @@ public class PortionsUtil {
|
|||
countyOrZone.getUserData();
|
||||
EntityData entityData = gridUtil.calculateGrids(countyOrZone,
|
||||
warnedArea);
|
||||
EnumSet<Direction> portions = getAreaDesc(entityData.getMeanMask(),
|
||||
entityData.getCoverageMask(), entityData.getOctants(),
|
||||
useExtreme);
|
||||
EnumSet<Direction> portions = null;
|
||||
if (warnedArea.getArea() < countyOrZone.getArea() * .01) {
|
||||
// this is for the case when only a "sliver" of the county or zone
|
||||
// is warned
|
||||
portions = getPointDesc(entityData.getMeanMask(), true);
|
||||
} else {
|
||||
portions = getAreaDesc(entityData.getMeanMask(),
|
||||
entityData.getCoverageMask(), entityData.getOctants(),
|
||||
useExtreme);
|
||||
}
|
||||
return suppressPortions(entityID, portions);
|
||||
}
|
||||
|
||||
|
@ -127,6 +135,7 @@ public class PortionsUtil {
|
|||
// }
|
||||
|
||||
// Test for central by not being near adjacent borders.
|
||||
// Another possible case of a stripe across the middle.
|
||||
if (octants == 0
|
||||
|| ((octants & CoverageConstants.EXTREME_YES) == 0)
|
||||
&& (meanMask & CoverageConstants.CENTER) == CoverageConstants.CENTER) {
|
||||
|
@ -144,28 +153,28 @@ public class PortionsUtil {
|
|||
int nn, ss, ee, ww, ne, nw, se, sw;
|
||||
nn = ss = ee = ww = ne = nw = se = sw = 0;
|
||||
int omerge = xxoctant | xoctant | octants;
|
||||
if ((omerge & (CoverageConstants.NNE | CoverageConstants.ENE)) > 0) {
|
||||
if ((omerge & (CoverageConstants.NNE | CoverageConstants.ENE)) != 0) {
|
||||
ne = 1;
|
||||
}
|
||||
if ((omerge & (CoverageConstants.SSE | CoverageConstants.ESE)) > 0) {
|
||||
if ((omerge & (CoverageConstants.SSE | CoverageConstants.ESE)) != 0) {
|
||||
se = 1;
|
||||
}
|
||||
if ((omerge & (CoverageConstants.NNW | CoverageConstants.WNW)) > 0) {
|
||||
if ((omerge & (CoverageConstants.NNW | CoverageConstants.WNW)) != 0) {
|
||||
nw = 1;
|
||||
}
|
||||
if ((omerge & (CoverageConstants.SSW | CoverageConstants.WSW)) > 0) {
|
||||
if ((omerge & (CoverageConstants.SSW | CoverageConstants.WSW)) != 0) {
|
||||
sw = 1;
|
||||
}
|
||||
if ((omerge & (CoverageConstants.NNE | CoverageConstants.NNW)) > 0) {
|
||||
if ((omerge & (CoverageConstants.NNE | CoverageConstants.NNW)) != 0) {
|
||||
nn = 1;
|
||||
}
|
||||
if ((omerge & (CoverageConstants.SSE | CoverageConstants.SSW)) > 0) {
|
||||
if ((omerge & (CoverageConstants.SSE | CoverageConstants.SSW)) != 0) {
|
||||
ss = 1;
|
||||
}
|
||||
if ((omerge & (CoverageConstants.WNW | CoverageConstants.WSW)) > 0) {
|
||||
if ((omerge & (CoverageConstants.WNW | CoverageConstants.WSW)) != 0) {
|
||||
ww = 1;
|
||||
}
|
||||
if ((omerge & (CoverageConstants.ENE | CoverageConstants.ESE)) > 0) {
|
||||
if ((omerge & (CoverageConstants.ENE | CoverageConstants.ESE)) != 0) {
|
||||
ee = 1;
|
||||
}
|
||||
if ((areaMask & CoverageConstants.NORTH_SOUTH) == 0) {
|
||||
|
@ -180,23 +189,23 @@ public class PortionsUtil {
|
|||
// Identify extremes in use.
|
||||
int nnx, ssx, eex, wwx;
|
||||
nnx = ssx = eex = wwx = 0;
|
||||
if ((areaMask & CoverageConstants.XNORTH) > 0) {
|
||||
if ((areaMask & CoverageConstants.XNORTH) != 0) {
|
||||
nnx = 1;
|
||||
}
|
||||
if ((areaMask & CoverageConstants.XSOUTH) > 0) {
|
||||
if ((areaMask & CoverageConstants.XSOUTH) != 0) {
|
||||
ssx = 1;
|
||||
}
|
||||
if ((areaMask & CoverageConstants.XWEST) > 0) {
|
||||
if ((areaMask & CoverageConstants.XWEST) != 0) {
|
||||
wwx = 1;
|
||||
}
|
||||
if ((areaMask & CoverageConstants.XEAST) > 0) {
|
||||
if ((areaMask & CoverageConstants.XEAST) != 0) {
|
||||
eex = 1;
|
||||
}
|
||||
int xxx = nnx + ssx + eex + wwx;
|
||||
|
||||
// Modify masks based on whether we can use extreme.
|
||||
if ((octants & CoverageConstants.EXTREME_NO) > 0
|
||||
&& (areaMask & CoverageConstants.EXTREME) > 0) {
|
||||
if ((octants & CoverageConstants.EXTREME_NO) != 0
|
||||
&& (areaMask & CoverageConstants.EXTREME) != 0) {
|
||||
areaMask &= CoverageConstants.NOT_EXTREME;
|
||||
meanMask &= CoverageConstants.NOT_EXTREME;
|
||||
}
|
||||
|
@ -220,12 +229,6 @@ public class PortionsUtil {
|
|||
meanMask &= CoverageConstants.NOT_CENTRAL;
|
||||
}
|
||||
|
||||
// Another possible case of a stripe across the middle.
|
||||
if (q == 4 && (meanMask & CoverageConstants.CENTER) > 0) {
|
||||
portions.add(Direction.CENTRAL);
|
||||
return portions;
|
||||
}
|
||||
|
||||
// All quadrants in use.
|
||||
if (q == 4 && qq == 4) {
|
||||
return EnumSet.noneOf(Direction.class);
|
||||
|
@ -233,20 +236,6 @@ public class PortionsUtil {
|
|||
|
||||
// Only one typical quadrant in use.
|
||||
if (q == 1) {
|
||||
// if (ne == 1) {
|
||||
// portions.add(Direction.NORTH);
|
||||
// portions.add(Direction.EAST);
|
||||
// } else if (nw == 1) {
|
||||
// portions.add(Direction.NORTH);
|
||||
// portions.add(Direction.WEST);
|
||||
// } else if (se == 1) {
|
||||
// portions.add(Direction.SOUTH);
|
||||
// portions.add(Direction.EAST);
|
||||
// } else if (sw == 1) {
|
||||
// portions.add(Direction.SOUTH);
|
||||
// portions.add(Direction.WEST);
|
||||
// }
|
||||
// return portions;
|
||||
return getPointDesc2(meanMask, exYes, nn, ss, ee, ww);
|
||||
}
|
||||
|
||||
|
@ -259,7 +248,7 @@ public class PortionsUtil {
|
|||
// No more than two quadrants of any kind in use, or all quadrants.
|
||||
if (q < 3 && qq < 3) {
|
||||
if (nnx != ssx && wwx != eex
|
||||
|| (meanMask & CoverageConstants.CENTRAL) > 0) {
|
||||
|| (meanMask & CoverageConstants.CENTRAL) != 0) {
|
||||
return getPointDesc2(meanMask, exYes, nn, ss, ee, ww);
|
||||
|
||||
} else {
|
||||
|
@ -273,28 +262,28 @@ public class PortionsUtil {
|
|||
if (ne == 0) {
|
||||
// The next line is the original port of A1 code but prevented
|
||||
// producing the correct result:
|
||||
// if (ne == 0 && (xxoctant & (SSW | WSW)) > 0) {
|
||||
// if (ne == 0 && (xxoctant & (SSW | WSW)) != 0) {
|
||||
portions.add(Direction.SOUTH);
|
||||
portions.add(Direction.WEST);
|
||||
|
||||
} else if (se == 0) {
|
||||
// The next line is the original port of A1 code but prevented
|
||||
// producing the correct result:
|
||||
// } else if (se == 0 && (xxoctant & (NNW | WNW)) > 0) {
|
||||
// } else if (se == 0 && (xxoctant & (NNW | WNW)) != 0) {
|
||||
portions.add(Direction.NORTH);
|
||||
portions.add(Direction.WEST);
|
||||
|
||||
} else if (nw == 0) {
|
||||
// The next line is the original port of A1 code but prevented
|
||||
// producing the correct result:
|
||||
// } else if (nw == 0 && (xxoctant & (SSE | ESE)) > 0) {
|
||||
// } else if (nw == 0 && (xxoctant & (SSE | ESE)) != 0) {
|
||||
portions.add(Direction.SOUTH);
|
||||
portions.add(Direction.EAST);
|
||||
|
||||
} else if (sw == 0) {
|
||||
// The next line is the original port of A1 code but prevented
|
||||
// producing the correct result:
|
||||
// } else if (sw == 0 && (xxoctant & (NNE | ENE)) > 0) {
|
||||
// } else if (sw == 0 && (xxoctant & (NNE | ENE)) != 0) {
|
||||
portions.add(Direction.NORTH);
|
||||
portions.add(Direction.EAST);
|
||||
}
|
||||
|
@ -318,7 +307,7 @@ public class PortionsUtil {
|
|||
|
||||
// add extreme for three quadrant case.
|
||||
if (!portions.isEmpty()) {
|
||||
if (exYes && ((areaMask & CoverageConstants.EXTREME)) > 0) {
|
||||
if (exYes && ((areaMask & CoverageConstants.EXTREME)) != 0) {
|
||||
portions.add(Direction.EXTREME);
|
||||
}
|
||||
return portions;
|
||||
|
@ -334,25 +323,25 @@ public class PortionsUtil {
|
|||
ss = areaMask & CoverageConstants.SOUTHERN;
|
||||
ee = areaMask & CoverageConstants.EASTERN;
|
||||
ww = areaMask & CoverageConstants.WESTERN;
|
||||
if (ss > 0 && nn > 0 || q == 0) {
|
||||
if (ee == 0 && ww > 0) {
|
||||
if (ss != 0 && nn != 0 || q == 0) {
|
||||
if (ee == 0 && ww != 0) {
|
||||
portions.add(Direction.WEST);
|
||||
}
|
||||
if (ww == 0 && ee > 0) {
|
||||
if (ww == 0 && ee != 0) {
|
||||
portions.add(Direction.EAST);
|
||||
}
|
||||
} else if (ee > 0 && ww > 0 || q == 0) {
|
||||
if (nn == 0 && ss > 0) {
|
||||
} else if (ee != 0 && ww != 0 || q == 0) {
|
||||
if (nn == 0 && ss != 0) {
|
||||
portions.add(Direction.SOUTH);
|
||||
}
|
||||
if (ss == 0 && nn > 0) {
|
||||
if (ss == 0 && nn != 0) {
|
||||
portions.add(Direction.NORTH);
|
||||
}
|
||||
}
|
||||
|
||||
// add extreme for simple direction case.
|
||||
if (!portions.isEmpty()) {
|
||||
if (exYes && ((areaMask & CoverageConstants.EXTREME)) > 0) {
|
||||
if (exYes && ((areaMask & CoverageConstants.EXTREME)) != 0) {
|
||||
portions.add(Direction.EXTREME);
|
||||
}
|
||||
return portions;
|
||||
|
@ -372,9 +361,6 @@ public class PortionsUtil {
|
|||
private static EnumSet<Direction> getPointDesc(int mask, boolean exYes) {
|
||||
EnumSet<Direction> portions = EnumSet.noneOf(Direction.class);
|
||||
|
||||
if (mask == 0) {
|
||||
return portions;
|
||||
}
|
||||
|
||||
int cc = mask & CoverageConstants.CENTRAL;
|
||||
if (cc == CoverageConstants.CENTRAL) {
|
||||
|
@ -406,7 +392,7 @@ public class PortionsUtil {
|
|||
portions.add(Direction.CENTRAL);
|
||||
}
|
||||
|
||||
if (exYes && ((int) (mask & CoverageConstants.EXTREME) > 0)) {
|
||||
if (exYes && ((int) (mask & CoverageConstants.EXTREME) != 0)) {
|
||||
portions.add(Direction.EXTREME);
|
||||
}
|
||||
|
||||
|
@ -432,22 +418,22 @@ public class PortionsUtil {
|
|||
}
|
||||
|
||||
int counter = 0;
|
||||
if (nn > 0 && ss > 0) {
|
||||
if (nn != 0 && ss != 0) {
|
||||
;
|
||||
} else if (ss > 0) {
|
||||
} else if (ss != 0) {
|
||||
portions.add(Direction.SOUTH);
|
||||
counter++;
|
||||
} else if (nn > 0) {
|
||||
} else if (nn != 0) {
|
||||
portions.add(Direction.NORTH);
|
||||
counter++;
|
||||
}
|
||||
|
||||
if (ee > 0 && ww > 0) {
|
||||
if (ee != 0 && ww != 0) {
|
||||
;
|
||||
} else if (ww > 0) {
|
||||
} else if (ww != 0) {
|
||||
portions.add(Direction.WEST);
|
||||
counter++;
|
||||
} else if (ee > 0) {
|
||||
} else if (ee != 0) {
|
||||
portions.add(Direction.EAST);
|
||||
counter++;
|
||||
}
|
||||
|
@ -462,7 +448,7 @@ public class PortionsUtil {
|
|||
portions.add(Direction.CENTRAL);
|
||||
}
|
||||
|
||||
if (exYes && ((int) (mask & CoverageConstants.EXTREME) > 0)) {
|
||||
if (exYes && ((int) (mask & CoverageConstants.EXTREME) != 0)) {
|
||||
portions.add(Direction.EXTREME);
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
package com.raytheon.viz.warngen.gui;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.warning.AbstractWarningRecord;
|
||||
import com.raytheon.uf.common.dataplugin.warning.EmergencyType;
|
||||
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.common.time.util.TimeUtil;
|
||||
|
@ -39,6 +40,7 @@ import com.raytheon.uf.common.time.util.TimeUtil;
|
|||
* Aug 7, 2013 2243 jsanchez Set all the attributes of an AbstractWarningRecord and added an expiration string. Removed calendar object.
|
||||
* Aug 15,2013 2243 jsanchez Improved the expiration string off by one minute. Fixed for practice mode.
|
||||
* Aug 15,2013 2243 jsanchez Improved the expiration string off by one minute.
|
||||
* Sep 4,2013 2176 jsanchez Used EmergencyType class to identify emergency products.
|
||||
* </pre>
|
||||
*
|
||||
* @author rferrel
|
||||
|
@ -96,8 +98,8 @@ public class FollowupData extends AbstractWarningRecord {
|
|||
rval.append(buildExpStr(status, record));
|
||||
}
|
||||
|
||||
if (record.getRawmessage().contains("EMERGENCY")) {
|
||||
rval.append(" EMER");
|
||||
if (EmergencyType.isEmergency(record.getRawmessage())) {
|
||||
rval.append(" " + EmergencyType.EMER);
|
||||
}
|
||||
equvialentString = rval.substring(0,
|
||||
record.getProductClass().equals("T") ? 20 : 18);
|
||||
|
|
|
@ -148,6 +148,7 @@ import com.vividsolutions.jts.geom.Polygon;
|
|||
* Jul 29, 2013 DR 16352 D. Friedman Move 'result' to okPressed().
|
||||
* Aug 6, 2013 2243 jsanchez Refreshed the follow up list every minute.
|
||||
* Aug 15, 2013 DR 16418 D. Friedman Make dialog visibility match editable state.
|
||||
* Sep 17, 2013 DR 16496 D. Friedman Make editable state more consistent.
|
||||
* </pre>
|
||||
*
|
||||
* @author chammack
|
||||
|
@ -1334,11 +1335,9 @@ public class WarngenDialog extends CaveSWTDialog implements
|
|||
* Box was selected, allow editing of box only
|
||||
*/
|
||||
private void boxSelected() {
|
||||
boxEditable = !polygonLocked;
|
||||
trackEditable = true;
|
||||
warngenLayer.getStormTrackState().editable = trackEditable;
|
||||
warngenLayer.setBoxEditable(boxEditable);
|
||||
warngenLayer.issueRefresh();
|
||||
boxEditable = true;
|
||||
trackEditable = false;
|
||||
realizeEditableState();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1347,20 +1346,16 @@ public class WarngenDialog extends CaveSWTDialog implements
|
|||
private void trackSelected() {
|
||||
boxEditable = false;
|
||||
trackEditable = true;
|
||||
warngenLayer.getStormTrackState().editable = trackEditable;
|
||||
warngenLayer.setBoxEditable(boxEditable);
|
||||
warngenLayer.issueRefresh();
|
||||
realizeEditableState();
|
||||
}
|
||||
|
||||
/**
|
||||
* Box and track was selected, allow editing of both
|
||||
*/
|
||||
private void boxAndTrackSelected() {
|
||||
boxEditable = !polygonLocked;
|
||||
boxEditable = true;
|
||||
trackEditable = true;
|
||||
warngenLayer.getStormTrackState().editable = trackEditable;
|
||||
warngenLayer.setBoxEditable(boxEditable);
|
||||
warngenLayer.issueRefresh();
|
||||
realizeEditableState();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1615,7 +1610,6 @@ public class WarngenDialog extends CaveSWTDialog implements
|
|||
* item from update list selected
|
||||
*/
|
||||
public void updateListSelected() {
|
||||
warngenLayer.setOldWarningPolygon(null);
|
||||
if (updateListCbo.getSelectionIndex() >= 0) {
|
||||
AbstractWarningRecord oldWarning = null;
|
||||
FollowupData data = (FollowupData) updateListCbo
|
||||
|
@ -1666,6 +1660,7 @@ public class WarngenDialog extends CaveSWTDialog implements
|
|||
return;
|
||||
}
|
||||
|
||||
warngenLayer.setOldWarningPolygon(null);
|
||||
bulletList.setEnabled(true);
|
||||
durationList.setEnabled(true);
|
||||
totalSegments = 0;
|
||||
|
@ -2461,4 +2456,12 @@ public class WarngenDialog extends CaveSWTDialog implements
|
|||
}
|
||||
}
|
||||
|
||||
public void realizeEditableState() {
|
||||
boolean layerEditable = warngenLayer.isEditable();
|
||||
// TODO: Note there is no 'is track editing allowed' state yet.
|
||||
warngenLayer.getStormTrackState().editable = layerEditable && trackEditable;
|
||||
warngenLayer.setBoxEditable(layerEditable && boxEditable && !polygonLocked);
|
||||
warngenLayer.issueRefresh();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -188,6 +188,7 @@ import com.vividsolutions.jts.io.WKTReader;
|
|||
* updated AreaHatcher's run().
|
||||
* 07/26/2013 DR 16450 D. Friedman Fix logic errors when frame count is one.
|
||||
* 08/19/2013 2177 jsanchez Set a GeneralGridGeometry object in the GeospatialDataList.
|
||||
* 09/17/2013 DR 16496 D. Friedman Make editable state more consistent.
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
|
@ -3010,10 +3011,7 @@ public class WarngenLayer extends AbstractStormTrackResource {
|
|||
final boolean editable = isEditable();
|
||||
boxEditable = editable;
|
||||
displayState.editable = editable;
|
||||
if (editable) {
|
||||
boxEditable = dialog.boxEditable();
|
||||
displayState.editable = dialog.trackEditable();
|
||||
}
|
||||
dialog.realizeEditableState();
|
||||
final WarngenDialog dlg = dialog;
|
||||
dialog.getDisplay().asyncExec(new Runnable() {
|
||||
@Override
|
||||
|
|
|
@ -15,6 +15,7 @@ import org.opengis.referencing.crs.CoordinateReferenceSystem;
|
|||
|
||||
import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
||||
import com.raytheon.uf.common.dataplugin.warning.AbstractWarningRecord;
|
||||
import com.raytheon.uf.common.dataplugin.warning.EmergencyType;
|
||||
import com.raytheon.uf.common.dataplugin.warning.PracticeWarningRecord;
|
||||
import com.raytheon.uf.common.dataplugin.warning.WarningRecord.WarningAction;
|
||||
import com.raytheon.uf.common.dataquery.requests.RequestConstraint;
|
||||
|
@ -80,6 +81,7 @@ import com.vividsolutions.jts.geom.prep.PreparedGeometryFactory;
|
|||
* Remove frameAltered condition in matchesFrame. It prevented entries from being displayed.
|
||||
* Check if geometry is null when inspecting.
|
||||
* Jul 22, 2013 2176 jsanchez Updated the wire frame and text for EMERGENCY warnings.
|
||||
* Sep 4, 2013 2176 jsanchez Made the polygon line width thicker and made regular text not bold.
|
||||
* </pre>
|
||||
*
|
||||
* @author jsanchez
|
||||
|
@ -133,7 +135,9 @@ public abstract class AbstractWWAResource extends
|
|||
/** map of dataURI to a warning entry **/
|
||||
protected Map<String, WarningEntry> entryMap;
|
||||
|
||||
protected IFont warningsFont;
|
||||
protected IFont warningsFont = null;
|
||||
|
||||
protected IFont emergencyFont = null;
|
||||
|
||||
protected RGB color;
|
||||
|
||||
|
@ -368,8 +372,8 @@ public abstract class AbstractWWAResource extends
|
|||
int outlineWidth = getCapability(OutlineCapability.class)
|
||||
.getOutlineWidth();
|
||||
// Make wire frame outline thicker for EMERGENCY warnings
|
||||
if (record.getRawmessage().contains("EMERGENCY")) {
|
||||
outlineWidth *= 2;
|
||||
if (EmergencyType.isEmergency(record.getRawmessage())) {
|
||||
outlineWidth *= 3;
|
||||
}
|
||||
|
||||
target.drawWireframeShape(
|
||||
|
@ -398,7 +402,10 @@ public abstract class AbstractWWAResource extends
|
|||
* paintProps.getZoomLevel() / 1000;
|
||||
String[] textToPrint = getText(record, mapWidth);
|
||||
if (warningsFont == null) {
|
||||
warningsFont = target.getDefaultFont().deriveWithSize(
|
||||
warningsFont = target.initializeFont(target
|
||||
.getDefaultFont().getFontName(), 11,
|
||||
new IFont.Style[0]);
|
||||
emergencyFont = target.getDefaultFont().deriveWithSize(
|
||||
11);
|
||||
}
|
||||
// DR14992: reverse the textToPrint array to plot the
|
||||
|
@ -418,15 +425,24 @@ public abstract class AbstractWWAResource extends
|
|||
params.verticallAlignment = VerticalAlignment.BOTTOM;
|
||||
params.magnification = getCapability(
|
||||
MagnificationCapability.class).getMagnification();
|
||||
target.drawStrings(params);
|
||||
|
||||
// Draws the string again to have it appear bolder
|
||||
if (textToPrintReversed[2].endsWith("EMER")) {
|
||||
params.setText(new String[] { "", "", "EMER", "" },
|
||||
color);
|
||||
target.drawStrings(params);
|
||||
if (EmergencyType.isEmergency(record.getRawmessage())) {
|
||||
// moves over text to add EMER in a different font
|
||||
textToPrintReversed[2] = String.format("%1$-21" + "s",
|
||||
textToPrintReversed[2]);
|
||||
params.setText(textToPrintReversed, color);
|
||||
|
||||
DrawableString emergencyString = new DrawableString(
|
||||
params);
|
||||
emergencyString.font = emergencyFont;
|
||||
emergencyString.setText(new String[] { "", "",
|
||||
" " + EmergencyType.EMER, "" }, color);
|
||||
target.drawStrings(emergencyString);
|
||||
}
|
||||
|
||||
target.drawStrings(params);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -598,12 +614,7 @@ public abstract class AbstractWWAResource extends
|
|||
textToPrint[0] += "." + vid;
|
||||
}
|
||||
textToPrint[0] += "." + record.getEtn();
|
||||
|
||||
if (record.getRawmessage().contains("EMERGENCY")) {
|
||||
textToPrint[1] = record.getPil() + " EMER";
|
||||
} else {
|
||||
textToPrint[1] = record.getPil();
|
||||
}
|
||||
textToPrint[1] = record.getPil();
|
||||
|
||||
SimpleDateFormat startFormat = DEFAULT_FORMAT;
|
||||
SimpleDateFormat endFormat = DEFAULT_FORMAT;
|
||||
|
|
|
@ -60,7 +60,8 @@ import com.vividsolutions.jts.geom.Geometry;
|
|||
* Sep 27, 2012 1149 jsanchez Refactored methods from AbstractWarningsResource into this class.
|
||||
* Apr 18, 2013 1877 jsanchez Ordered the records the same for update and initial load.
|
||||
* Removed no longer needed frameAltered. Do not set wire frame for a CAN.
|
||||
* Jul 24, 2013 DR16350 mgamazaychikov Fix the problem with plotting EXP warning
|
||||
* Jul 24, 2013 DR16350 mgamazaychikov Fix the problem with plotting EXP warning
|
||||
* Sep 5, 2013 2176 jsanchez Disposed the emergency font.
|
||||
* </pre>
|
||||
*
|
||||
* @author jsanchez
|
||||
|
@ -143,6 +144,10 @@ public class WarningsResource extends AbstractWWAResource {
|
|||
if (warningsFont != null) {
|
||||
warningsFont.dispose();
|
||||
}
|
||||
|
||||
if (emergencyFont != null) {
|
||||
emergencyFont.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -234,7 +239,7 @@ public class WarningsResource extends AbstractWWAResource {
|
|||
for (AbstractWarningRecord warnrec : recordsToLoad) {
|
||||
WarningAction act = WarningAction.valueOf(warnrec.getAct());
|
||||
if (act == WarningAction.CON || act == WarningAction.CAN
|
||||
|| act == WarningAction.EXT) {
|
||||
|| act == WarningAction.EXT) {
|
||||
AbstractWarningRecord createShape = null;
|
||||
for (String key : entryMap.keySet()) {
|
||||
WarningEntry entry = entryMap.get(key);
|
||||
|
|
|
@ -49,6 +49,7 @@ import com.vividsolutions.jts.geom.GeometryFactory;
|
|||
* Sep 27, 2012 1149 jsanchez Refactored methods from AbstractWarningsResource into this class.
|
||||
* May 06, 2013 1930 bsteffen Check for null in WatchesResource.
|
||||
* May 10, 2013 1951 rjpeter Updated ugcZones references
|
||||
* Sep 5, 2013 2176 jsanchez Disposed the emergency font.
|
||||
* </pre>
|
||||
*
|
||||
* @author jsanchez
|
||||
|
@ -140,6 +141,10 @@ public class WatchesResource extends AbstractWWAResource {
|
|||
if (warningsFont != null) {
|
||||
warningsFont.dispose();
|
||||
}
|
||||
|
||||
if (emergencyFont != null) {
|
||||
emergencyFont.dispose();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -12,8 +12,8 @@ export IH_DB_NAME=hd_ob92oax
|
|||
### flag to control grib deprecation ###
|
||||
if [ -z "$gribMode" ]; then
|
||||
# uncomment only one of the following two lines
|
||||
export gribMode=deprecated
|
||||
#export gribMode=future
|
||||
#export gribMode=deprecated
|
||||
export gribMode=future
|
||||
fi
|
||||
|
||||
## end of grib deprecation flag ###
|
||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -40,8 +40,19 @@
|
|||
<property name="taskExecutor" ref="genericThreadPool" />
|
||||
</bean>
|
||||
|
||||
<bean id="jms-durable" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsDurableConfig" />
|
||||
<property name="taskExecutor" ref="genericThreadPool" />
|
||||
</bean>
|
||||
|
||||
<bean id="jmsGenericConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy" />
|
||||
factory-bean="jmsConfig" factory-method="copy"/>
|
||||
|
||||
<bean id="jmsDurableConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
<property name="destinationResolver" ref="qpidDurableResolver" />
|
||||
<property name="deliveryPersistent" value="true"/>
|
||||
</bean>
|
||||
|
||||
<bean id="qpidNoDurableResolver" class="com.raytheon.uf.edex.esb.camel.spring.QpidDestinationNameResolver">
|
||||
<property name="queueNamePrefix" value="direct://amq.direct/"/>
|
||||
|
@ -71,6 +82,7 @@
|
|||
<property name="templateConnectionFactory" ref="jmsPooledConnectionFactory" />
|
||||
<property name="destinationResolver" ref="qpidNoDurableResolver" />
|
||||
<property name="disableReplyTo" value="true" />
|
||||
<property name="deliveryPersistent" value="false"/>
|
||||
<!--
|
||||
<property name="transacted" value="true" />
|
||||
<property name="acknowledgementModeName" value="TRANSACTED"/>
|
||||
|
@ -253,14 +265,14 @@
|
|||
<route id="alertVizNotify">
|
||||
<from uri="vm:edex.alertVizNotification" />
|
||||
<bean ref="serializationUtil" method="transformToThrift" />
|
||||
<to uri="jms-generic:topic:edex.alerts.msg?deliveryPersistent=false" />
|
||||
<to uri="jms-generic:topic:edex.alerts.msg" />
|
||||
</route>
|
||||
|
||||
<!-- Route to send text products to alarm/alert -->
|
||||
<route id="alarmAlertNotify">
|
||||
<from uri="vm:edex.alarmAlertNotification" />
|
||||
<bean ref="serializationUtil" method="transformToThrift" />
|
||||
<to uri="jms-generic:topic:edex.alarms.msg?deliveryPersistent=false" />
|
||||
<to uri="jms-generic:topic:edex.alarms.msg" />
|
||||
</route>
|
||||
|
||||
<!-- Route to periodically close any unused jms resources that have been pooled -->
|
||||
|
|
|
@ -140,10 +140,14 @@ class MasterInterface(object):
|
|||
|
||||
def reloadModule(self, moduleName):
|
||||
if sys.modules.has_key(moduleName):
|
||||
# because the user might have added or removed items
|
||||
# from the module's dictionary, we cannot trust reload() here.
|
||||
sys.modules.__delitem__(moduleName)
|
||||
__import__(moduleName)
|
||||
|
||||
|
||||
|
||||
# Because the user might have removed items
|
||||
# from the module's dictionary, we cannot trust reload() to
|
||||
# remove old items. We will manually remove everything
|
||||
# but built-ins to ensure everything gets re-initialized when
|
||||
# reload() is called.
|
||||
mod = sys.modules[moduleName]
|
||||
modGlobalsToRemove = [k for k in mod.__dict__ if not k.startswith('_')]
|
||||
for k in modGlobalsToRemove:
|
||||
mod.__dict__.pop(k)
|
||||
reload(mod)
|
||||
|
||||
|
|
|
@ -1,75 +1,73 @@
|
|||
#*
|
||||
CREATED 1-25-2012 BY MIKE DANGELO AND EVAN BOOKBINDER
|
||||
UPDATED 9-16-2013 BY MIKE DANGELO AND EVAN BOOKBINDER
|
||||
|
||||
Here are some examples of very simple INTERSTATE output
|
||||
(one line/sentence per interstate):
|
||||
### THIS PLUG-IN VM FILE ALLOWS YOU TO CONSOLIDATE ALL YOUR MILEMARKER/EXIT/ROUTE
|
||||
### OUTPUT INTO A SINGLE FUNCTION CALL
|
||||
|
||||
#mmarkers(${i70momm},${i70mommid},"INTERSTATE 70 IN MISSOURI","MILE MARKER",false)
|
||||
#mmarkers(${i70momm},${i70mommid},"INTERSTATE 70 IN MISSOURI","MILE MARKER",true)
|
||||
#mmarkers(${i70momm},${i70mommid},"INTERSTATE 70 IN MISSOURI","",false)
|
||||
#mmarkers(${i70momm},${i70mommid},"INTERSTATE 70 IN MISSOURI","",true)
|
||||
#mmarkers(${i435mm},${i435mmid},"INTERSTATE 435 IN MISSOURI","",false)
|
||||
#mmarkers(${i435mm},${i435mmid},"INTERSTATE 435 IN MISSOURI","",true)
|
||||
#mmarkers(${i435mm},${i435mmid},"INTERSTATE 435 IN MISSOURI","MILE MARKER",false)
|
||||
#mmarkers(${i435mm},${i435mmid},"INTERSTATE 435 IN MISSOURI","MILE MARKER",true)
|
||||
|
||||
Mile Marker Test Code
|
||||
Mile Marker Macro
|
||||
macro "mmarkers" use (called out of VM_global_library.vm):
|
||||
#mmarkers($name, $id, $type, $markers, $simplify)
|
||||
#macro(mmarkers $markers $id $name $type $simplify)
|
||||
where the argument:
|
||||
$markers is a string, and is the exact "variable" set in the XML "pointSource" tag for this road
|
||||
- <pointSource variable="i70momm">
|
||||
$id is the sequential ID database field to determine logical breaks in the mile markers
|
||||
set in the XML "pointSource" tag for this road
|
||||
- <pointSource variable="i70mommid">
|
||||
$name is a string "OUTPUT TEXT" of the road name
|
||||
$id is the sequential ID database field to determine logical breaks in the mile markers
|
||||
$type is a string which describes the type of "marker"
|
||||
- may be "MILE MARKER" or something similar, or blank ""
|
||||
- "" is for use when town names (CHARLESTON) or exit names (THE SUNSET EXIT)
|
||||
$markers is a string, and is the exact "variable" set in the XML "pointSource" tag for this road
|
||||
- <pointSource variable="i70momm">
|
||||
$simplify is a boolean value (true or false)
|
||||
- true concatenates (FROM MM 2 to 4),
|
||||
- false is a big list (MM 2...3...AND 4)
|
||||
|
||||
From mileMarkers.xml
|
||||
$databaseName is an array of pointSource objects containing the milemarker names
|
||||
$databaseId is an array of pointSource objects containing the milemarker IDs
|
||||
$specificName is an array of plain English names for the Interstates, Routes, etc..
|
||||
e.g.
|
||||
#set ($databaseName = [${i435mm},${i70momm},${i35momm}])
|
||||
#set ($databaseId = [${i435mmid},${i70mommid},${i35mommid}])
|
||||
#set ($specificName = ['INTERSTATE 435','INTERSTATE 70','INTERSTATE 35'])
|
||||
CONFIGURATION:
|
||||
#COMMENT OUT LINES 59-62 BELOW AS NEEDED, REPLACING THE EXAMPLE WITH YOUR MILE MARKER/ROUTE ENTRIES
|
||||
#EACH LINE CONTAINS A VARIABLE MM1,MM2,MM3,etc... REFERENCING AN ARRAY (LIST) OF DATA THAT
|
||||
#WILL BE PASSED TO THE MMARKERS ROUTINE.
|
||||
|
||||
The following code makes upkeep of the mile marker files easier, and is
|
||||
reccomended for use.
|
||||
Substitute all your "INTERSTATE NAME(s)" into the array: $specificName
|
||||
Likewise,
|
||||
Substitute all your corresponding database table names (${tablename}) for those
|
||||
interstates into the array: $databaseName
|
||||
You may also use town names or exit names
|
||||
in the "name" field of your database tables.
|
||||
The items in the array are as follows:
|
||||
1.) java Object - A pointSource object from mileMarkers.xml containing the milemarker names
|
||||
2.) java Object - A pointSource object from mileMarkers.xml containing the milemarker IDs or index
|
||||
3.) String - A plain English name for the Interstates, Routes, etc..
|
||||
4.) String - A plain English name describing the output (mile marker, exit, etc...)
|
||||
Can be blank ''. Make sure the singular phrase is used (an "S" will be auto-applied for
|
||||
plural values. e.g. MILE MARKERS 3 AND 10
|
||||
5.) Boolean - A true/false value telling the function whether to group the milemarkers where
|
||||
possible, or list them individually. For mile markers that are text (such as exits or
|
||||
intersections, false might be a better option)
|
||||
|
||||
NOTE: PLEASE ENSURE PROPER SYNTAX. Java Objects are ${variable}, Text Strings are 'TEXT', and
|
||||
Booleans are true/false (no quote)
|
||||
ALSO ENSURE THAT EACH LINE CONTAINS A UNIQUE VARIABLE NAME: MM1, MM2, MM3, etc..
|
||||
|
||||
|
||||
HERE IS AN EXAMPLE:
|
||||
e.g.
|
||||
#set ($mm1 = [${i435mm},${i435mmid},'INTERSTATE 435','MILE MARKER',true])
|
||||
#set ($mm2 = [${i70momm},${i70mommid},'INTERSTATE 70 IN MISSOURI','MILE MARKER',true])
|
||||
#set ($mm3 = [${i35momm},${i35mommid},'INTERSTATE 70 IN KANSAS','MILE MARKER',true])
|
||||
|
||||
After creating these, we must create a list containing all of our variable names
|
||||
e.g.
|
||||
#set ($varList = [$mm1,$mm2,$mm3])
|
||||
*#
|
||||
|
||||
#set($hits = 0)
|
||||
#set($bigList = '')
|
||||
##set ($databaseName = [${i435mm},${i70momm},${i35momm}])
|
||||
##set ($databaseId = [${i435mmid},${i70mommid},${i35mommid}])
|
||||
##set ($specificName = ['INTERSTATE 435','INTERSTATE 70','INTERSTATE 35'])
|
||||
#set ($itemCount = 0)
|
||||
#foreach($specName in $specificName)
|
||||
#set ($itemCount = $itemCount + 1)
|
||||
#set ($itemCount2 = 0)
|
||||
#foreach($dbName in $databaseName)
|
||||
#set ($itemCount2 = $itemCount2 + 1)
|
||||
#set ($itemCount3 = 0)
|
||||
#foreach($dbId in $databaseId)
|
||||
#set ($itemCount3 = $itemCount3 + 1)
|
||||
#if ($itemCount3 == $itemCount2 && $itemCount2 == $itemCount)
|
||||
#set ($checker = "#mmarkers(${dbName},${dbId},${specName},'MILE MARKER',true)")
|
||||
|
||||
##set ($mm1 = [${i435mm},${i435mmid},'INTERSTATE 435','MILE MARKER',true])
|
||||
##set ($mm2 = [${i70momm},${i70mommid},'INTERSTATE 70 IN MISSOURI','MILE MARKER',true])
|
||||
##set ($mm3 = [${i35momm},${i35mommid},'INTERSTATE 70 IN KANSAS','MILE MARKER',true])
|
||||
##set ($varList = [$mm1,$mm2,$mm3])
|
||||
|
||||
#foreach ($var in $varList)
|
||||
#set ($checker = "#mmarkers(${list.get(${var},0)},${list.get(${var},1)},${list.get(${var},2)},${list.get(${var},3)},${list.get(${var},4)})")
|
||||
#if ($checker.length() > 0)
|
||||
#set ($hits = $hits + 1)
|
||||
#set ($bigList = "$bigList $checker")
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#if ($hits == 1)
|
||||
THIS INCLUDES$bigList
|
||||
#end
|
||||
|
|
|
@ -8,22 +8,52 @@
|
|||
SHOULD BE MODIFIED.
|
||||
|
||||
EXAMPLE FOR INTERSTATE 435 in the Kansas City Metro follows:
|
||||
|
||||
|
||||
|
||||
<pointSource variable="i435mm">
|
||||
<pointSource>i435mm</pointSource>
|
||||
<pointSource>i435</pointSource>
|
||||
<pointField>NAME</pointField>
|
||||
<searchMethod>POINTS</searchMethod>
|
||||
<withinPolygon>true</withinPolygon>
|
||||
<maxResults>1000</maxResults>
|
||||
<distanceThreshold>100</distanceThreshold>
|
||||
<sortBy>
|
||||
<sort>gid</sort>
|
||||
</sortBy>
|
||||
</pointSource>
|
||||
<pointSource variable="i435mmid">
|
||||
<pointSource>i435mm</pointSource>
|
||||
<pointSource>i435</pointSource>
|
||||
<pointField>GID</pointField>
|
||||
<searchMethod>POINTS</searchMethod>
|
||||
<withinPolygon>true</withinPolygon>
|
||||
<maxResults>1000</maxResults>
|
||||
<distanceThreshold>100</distanceThreshold>
|
||||
<sortBy>
|
||||
<sort>gid</sort>
|
||||
</sortBy>
|
||||
</pointSource>
|
||||
|
||||
-->
|
||||
<pointSource variable="i35momm">
|
||||
<pointSource>i35mo</pointSource>
|
||||
<pointField>NAME</pointField>
|
||||
<searchMethod>POINTS</searchMethod>
|
||||
<withinPolygon>true</withinPolygon>
|
||||
<maxResults>1000</maxResults>
|
||||
<distanceThreshold>100</distanceThreshold>
|
||||
<sortBy>
|
||||
<sort>gid</sort>
|
||||
</sortBy>
|
||||
</pointSource>
|
||||
<pointSource variable="i35mommid">
|
||||
<pointSource>i35mo</pointSource>
|
||||
<pointField>GID</pointField>
|
||||
<searchMethod>POINTS</searchMethod>
|
||||
<withinPolygon>true</withinPolygon>
|
||||
<maxResults>1000</maxResults>
|
||||
<distanceThreshold>100</distanceThreshold>
|
||||
<sortBy>
|
||||
<sort>gid</sort>
|
||||
</sortBy>
|
||||
</pointSource>
|
||||
-->
|
||||
|
|
@ -50,7 +50,7 @@
|
|||
|
||||
<!-- LDAD (watch/warn) triggered script runner -->
|
||||
<route id="ldadWatchWarn">
|
||||
<from uri="jms-generic:queue:watchwarn?destinationResolver=#qpidDurableResolver"/>
|
||||
<from uri="jms-durable:queue:watchwarn"/>
|
||||
<doTry>
|
||||
<bean ref="ldadScriptRunner" method="runScripts" />
|
||||
<doCatch>
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
<method bean="uriAggregator" method="hasUris" />
|
||||
<bean ref="uriAggregator" method="sendQueuedUris" />
|
||||
<bean ref="serializationUtil" method="transformToThrift" />
|
||||
<to uri="jms-generic:topic:edex.alerts?timeToLive=60000&deliveryPersistent=false"/>
|
||||
<to uri="jms-generic:topic:edex.alerts?timeToLive=60000"/>
|
||||
</filter>
|
||||
</route>
|
||||
</camelContext>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<bean id="airepDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="airep" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.airep" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.airep"/>
|
||||
</bean>
|
||||
|
||||
<bean id="airepCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -33,13 +33,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>airep</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.airep" />
|
||||
<to uri="jms-durable:queue:Ingest.airep" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin airep routes -->
|
||||
<route id="airepIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.airep?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.airep"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>airep</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<bean id="binlightningDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="binlightning" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.binlightning?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.binlightning" />
|
||||
</bean>
|
||||
|
||||
<bean id="binlightningCamelRegistered" factory-bean="clusteredCamelContextMgr"
|
||||
|
@ -31,13 +31,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>binlightning</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.binlightning" />
|
||||
<to uri="jms-durable:queue:Ingest.binlightning" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin binlightning routes -->
|
||||
<route id="binlightningIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.binlightning?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.binlightning"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>binlightning</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<bean id="bufrmosDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="bufrmos" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrmos?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrmos" />
|
||||
</bean>
|
||||
|
||||
<bean id="bufrmosCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -30,13 +30,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrmos</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrmos" />
|
||||
<to uri="jms-durable:queue:Ingest.bufrmos" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin bufrmos routes -->
|
||||
<route id="bufrmosIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrmos?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.bufrmos" />
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrmos</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -32,13 +32,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrua</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrua"/>
|
||||
<to uri="jms-durable:queue:Ingest.bufrua"/>
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin BUFRUA routes -->
|
||||
<route id="bufruaIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrua?destinationResolver=#qpidDurableResolver"/>
|
||||
<from uri="jms-durable:queue:Ingest.bufrua"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrua</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -29,13 +29,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>ccfp</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.ccfp" />
|
||||
<to uri="jms-durable:queue:Ingest.ccfp" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin ccfp routes -->
|
||||
<route id="ccfpIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.ccfp?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.ccfp"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>ccfp</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
errorHandlerRef="errorHandler">
|
||||
|
||||
<route id="gfeParmIdCacheListenerEndpoint">
|
||||
<from uri="jms-generic:topic:gfeGribNotification?concurrentConsumers=1" />
|
||||
<from uri="jms-generic:topic:gfeGribNotification"/>
|
||||
<doTry>
|
||||
<bean ref="serializationUtil" method="transformFromThrift" />
|
||||
<bean ref="parmIdFilter" method="updateParmIdCache" />
|
||||
|
@ -87,7 +87,7 @@
|
|||
</route>
|
||||
|
||||
<route id="rebuildD2DCacheAfterPurge">
|
||||
<from uri="jms-generic:topic:pluginPurged" />
|
||||
<from uri="jms-durable:topic:pluginPurged" />
|
||||
<doTry>
|
||||
<bean ref="d2dParmIdCache" method="pluginPurged" />
|
||||
<doCatch>
|
||||
|
|
|
@ -464,9 +464,9 @@
|
|||
<constructor-arg ref="jmsIscSendConfig" />
|
||||
<property name="taskExecutor" ref="iscSendThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsIscSendConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy" />
|
||||
<bean id="iscSendThreadPool"
|
||||
<bean id="jmsIscSendConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="iscSendThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="2" />
|
||||
<property name="maxPoolSize" value="2" />
|
||||
|
@ -487,11 +487,11 @@
|
|||
<!-- ISC Receive Beans -->
|
||||
|
||||
<bean id="jms-iscrec" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIscReceiveConfig" />
|
||||
<constructor-arg ref="jmsIscRecConfig" />
|
||||
<property name="taskExecutor" ref="iscReceiveThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsIscReceiveConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy" />
|
||||
<bean id="jmsIscRecConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="iscReceiveThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="2" />
|
||||
|
@ -623,7 +623,7 @@
|
|||
|
||||
<!-- ISC Data Receive route -->
|
||||
<route id="iscReceiveRoute">
|
||||
<from uri="jms-iscrec:queue:gfeIscDataReceive?concurrentConsumers=2&destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-iscrec:queue:gfeIscDataReceive?concurrentConsumers=2"/>
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="serializationUtil" method="transformFromThrift" />
|
||||
|
@ -643,7 +643,7 @@
|
|||
errorHandlerRef="errorHandler" autoStartup="false">
|
||||
|
||||
<route id="iscSendJobQueueAggr">
|
||||
<from uri="jms-iscsend:queue:iscSendNotification?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-iscsend:queue:iscSendNotification" />
|
||||
<doTry>
|
||||
<bean ref="serializationUtil" method="transformFromThrift" />
|
||||
<bean ref="iscSendQueue" method="addSendJobs" />
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
<constructor-arg ref="jmsSmartInitConfig" />
|
||||
<property name="taskExecutor" ref="smartInitThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsSmartInitConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy" />
|
||||
<bean id="jmsSmartInitConfig" class="org.apache.camel.component.jms.JmsConfiguration" factory-bean="jmsDurableConfig"
|
||||
factory-method="copy"/>
|
||||
<bean id="smartInitThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="${smartinit.threadpoolsize}" />
|
||||
|
@ -40,7 +40,7 @@
|
|||
xmlns="http://camel.apache.org/schema/spring"
|
||||
errorHandlerRef="errorHandler">
|
||||
<route id="SPCWatch">
|
||||
<from uri="jms-generic:queue:edex.spcWatch?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:edex.spcWatch"/>
|
||||
<doTry>
|
||||
<bean ref="spcWatch" method="handleSpcWatch" />
|
||||
<doCatch>
|
||||
|
@ -51,7 +51,7 @@
|
|||
</route>
|
||||
|
||||
<route id="TPCWatch">
|
||||
<from uri="jms-generic:queue:edex.tpcWatch?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:edex.tpcWatch"/>
|
||||
<doTry>
|
||||
<bean ref="tpcWatch" method="handleTpcWatch" />
|
||||
<doCatch>
|
||||
|
@ -78,7 +78,7 @@
|
|||
|
||||
<!-- gfeIngestNotification must be a singleton and has 4 threads to read due to throughput of messages during model run times -->
|
||||
<route id="gfeIngestNotification">
|
||||
<from uri="jms-generic:queue:gfeDataURINotification?destinationResolver=#qpidDurableResolver&concurrentConsumers=4" />
|
||||
<from uri="jms-durable:queue:gfeDataURINotification?concurrentConsumers=4" />
|
||||
<doTry>
|
||||
<bean ref="serializationUtil" method="transformFromThrift" />
|
||||
<bean ref="gfeIngestFilter" method="filterDataURINotifications" />
|
||||
|
@ -117,9 +117,9 @@
|
|||
|
||||
<!-- Convert the topic into a queue so only one consumer gets each message and we still have competing consumers. -->
|
||||
<route id="gfeDataURINotificationQueueRoute">
|
||||
<from uri="jms-gfe-notify:topic:edex.alerts" />
|
||||
<from uri="jms-generic:topic:edex.alerts" />
|
||||
<doTry>
|
||||
<to uri="jms-generic:queue:gfeDataURINotification"/>
|
||||
<to uri="jms-durable:queue:gfeDataURINotification"/>
|
||||
<doCatch>
|
||||
<exception>java.lang.Throwable</exception>
|
||||
<to
|
||||
|
@ -128,40 +128,6 @@
|
|||
</doTry>
|
||||
</route>
|
||||
</camelContext>
|
||||
|
||||
<!-- Beans to define a custom jms connection which will allow a durable subscription -->
|
||||
<bean id="gfeNotifyConnectionFactory" class="org.apache.qpid.client.AMQConnectionFactory">
|
||||
<constructor-arg type="java.lang.String" value="amqp://guest:guest@gfeNotify/edex?brokerlist='tcp://${BROKER_ADDR}?retries='9999'&connecttimeout='5000'&connectdelay='5000''&maxprefetch='0'&sync_publish='all'&sync_ack='true'"/>
|
||||
</bean>
|
||||
|
||||
<bean id="gfeNotifyPooledConnectionFactory" class="com.raytheon.uf.common.jms.JmsPooledConnectionFactory">
|
||||
<constructor-arg ref="gfeNotifyConnectionFactory"/>
|
||||
<property name="provider" value="QPID"/>
|
||||
<property name="reconnectInterval" value="5000"/>
|
||||
<!-- After connection has been closed by thread keep it allocated for another 90 seconds in case thread needs it again -->
|
||||
<property name="connectionHoldTime" value="90000"/>
|
||||
<!-- Any resource that has been available in the pool for more than 1 minute will be closed -->
|
||||
<property name="resourceRetention" value="60000"/>
|
||||
<property name="maxSpareConnections" value="1"/>
|
||||
</bean>
|
||||
|
||||
<bean id="gfeNotifyJmsConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
<property name="listenerConnectionFactory" ref="gfeNotifyPooledConnectionFactory" />
|
||||
<property name="templateConnectionFactory" ref="gfeNotifyPooledConnectionFactory" />
|
||||
</bean>
|
||||
|
||||
<bean id="gfeNotifyThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="1" />
|
||||
<property name="maxPoolSize" value="1" />
|
||||
</bean>
|
||||
|
||||
<bean id="jms-gfe-notify" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="gfeNotifyJmsConfig" />
|
||||
<property name="taskExecutor" ref="gfeNotifyThreadPool" />
|
||||
</bean>
|
||||
<!-- end of custom JMS beans -->
|
||||
|
||||
<bean factory-bean="clusteredCamelContextMgr"
|
||||
factory-method="register">
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
package com.raytheon.edex.plugin.gfe.cache.d2dparms;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
|
@ -72,6 +71,8 @@ import com.raytheon.uf.edex.site.SiteAwareRegistry;
|
|||
* Mar 20, 2013 #1774 randerso Changed to use GFDD2DDao
|
||||
* Apr 01, 2013 #1774 randerso Moved wind component checking to GfeIngestNotificaionFilter
|
||||
* May 14, 2013 #2004 randerso Added DBInvChangeNotifications when D2D data is purged
|
||||
* Sep 12, 2013 #2348 randerso Changed to send DBInvChangeNotifications in a batch instead
|
||||
* of one at a time.
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -346,13 +347,8 @@ public class D2DParmIdCache {
|
|||
putParmIDList(parmIds);
|
||||
List<DatabaseID> currentDbInventory = this.getDatabaseIDs();
|
||||
dbsToRemove.removeAll(currentDbInventory);
|
||||
List<DBInvChangeNotification> invChgList = new ArrayList<DBInvChangeNotification>(
|
||||
dbsToRemove.size());
|
||||
for (DatabaseID dbId : dbsToRemove) {
|
||||
invChgList.add(new DBInvChangeNotification(null, Arrays
|
||||
.asList(dbId), siteID));
|
||||
}
|
||||
SendNotifications.send(invChgList);
|
||||
SendNotifications.send(new DBInvChangeNotification(null,
|
||||
dbsToRemove, siteID));
|
||||
|
||||
// inform GfeIngestNotificationFilter of removed dbs
|
||||
GfeIngestNotificationFilter.purgeDbs(dbsToRemove);
|
||||
|
|
|
@ -88,7 +88,7 @@ import com.raytheon.uf.edex.site.notify.SendSiteActivationNotifications;
|
|||
* activation.
|
||||
* Mar 20, 2013 #1774 randerso Changed to use GFED2DDao
|
||||
* May 02, 2013 #1969 randerso Moved updateDbs method into IFPGridDatabase
|
||||
*
|
||||
* Sep 13, 2013 2368 rjpeter Used durable jms settings.
|
||||
* </pre>
|
||||
*
|
||||
* @author njensen
|
||||
|
@ -115,7 +115,7 @@ public class GFESiteActivation implements ISiteActivationListener {
|
|||
|
||||
private boolean intialized = false;
|
||||
|
||||
private ExecutorService postActivationTaskExecutor = MoreExecutors
|
||||
private final ExecutorService postActivationTaskExecutor = MoreExecutors
|
||||
.getExitingExecutorService((ThreadPoolExecutor) Executors
|
||||
.newCachedThreadPool());
|
||||
|
||||
|
@ -356,7 +356,7 @@ public class GFESiteActivation implements ISiteActivationListener {
|
|||
GridDatabase db = GridParmManager.getDb(dbid);
|
||||
// cluster locked since IFPGridDatabase can modify the grids
|
||||
// based on changes to grid size, etc
|
||||
if (db instanceof IFPGridDatabase && db.databaseIsValid()) {
|
||||
if ((db instanceof IFPGridDatabase) && db.databaseIsValid()) {
|
||||
((IFPGridDatabase) db).updateDbs();
|
||||
}
|
||||
}
|
||||
|
@ -410,7 +410,7 @@ public class GFESiteActivation implements ISiteActivationListener {
|
|||
long startTime = System.currentTimeMillis();
|
||||
// wait for system startup or at least 3 minutes
|
||||
while (!EDEXUtil.isRunning()
|
||||
|| System.currentTimeMillis() > startTime + 180000) {
|
||||
|| (System.currentTimeMillis() > (startTime + 180000))) {
|
||||
try {
|
||||
Thread.sleep(15000);
|
||||
} catch (InterruptedException e) {
|
||||
|
@ -420,7 +420,7 @@ public class GFESiteActivation implements ISiteActivationListener {
|
|||
|
||||
ClusterTask ct = ClusterLockUtils.lookupLock(TASK_NAME,
|
||||
SMART_INIT_TASK_DETAILS + siteID);
|
||||
if (ct.getLastExecution() + SMART_INIT_TIMEOUT < System
|
||||
if ((ct.getLastExecution() + SMART_INIT_TIMEOUT) < System
|
||||
.currentTimeMillis()) {
|
||||
ct = ClusterLockUtils.lock(TASK_NAME,
|
||||
SMART_INIT_TASK_DETAILS + siteID,
|
||||
|
@ -467,7 +467,7 @@ public class GFESiteActivation implements ISiteActivationListener {
|
|||
"Firing smartinit for " + id);
|
||||
try {
|
||||
producer.sendAsyncUri(
|
||||
"jms-generic:queue:manualSmartInit",
|
||||
"jms-durable:queue:manualSmartInit",
|
||||
id
|
||||
+ ":0::"
|
||||
+ SmartInitRecord.SITE_ACTIVATION_INIT_PRIORITY);
|
||||
|
@ -499,7 +499,7 @@ public class GFESiteActivation implements ISiteActivationListener {
|
|||
long startTime = System.currentTimeMillis();
|
||||
// wait for system startup or at least 3 minutes
|
||||
while (!EDEXUtil.isRunning()
|
||||
|| System.currentTimeMillis() > startTime + 180000) {
|
||||
|| (System.currentTimeMillis() > (startTime + 180000))) {
|
||||
try {
|
||||
Thread.sleep(15000);
|
||||
} catch (InterruptedException e) {
|
||||
|
|
|
@ -100,6 +100,12 @@ import com.raytheon.uf.edex.database.purge.PurgeLogger;
|
|||
* Removed inventory from DBInvChangedNotification
|
||||
* 05/03/13 #1974 randerso Fixed error logging to include stack trace
|
||||
* 05/14/13 #2004 randerso Added methods to synch GridParmManager across JVMs
|
||||
* 09/12/13 #2348 randerso Added logging when database are added/removed from dbMap
|
||||
* Fixed the synchronization of dbMap with the database inventory
|
||||
* Changed to call D2DGridDatabase.getDatabase instead of calling
|
||||
* the constructor directly to ensure the data exists before creating
|
||||
* the D2DGridDatabase object
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author bphillip
|
||||
|
@ -1016,10 +1022,10 @@ public class GridParmManager {
|
|||
sr.addMessage("VersionPurge failed - couldn't get inventory");
|
||||
return sr;
|
||||
}
|
||||
List<DatabaseID> databases = sr.getPayload();
|
||||
List<DatabaseID> currentInv = sr.getPayload();
|
||||
|
||||
// sort the inventory by site, type, model, time (most recent first)
|
||||
Collections.sort(databases);
|
||||
Collections.sort(currentInv);
|
||||
|
||||
// process the inventory looking for "old" unwanted databases
|
||||
String model = null;
|
||||
|
@ -1027,7 +1033,7 @@ public class GridParmManager {
|
|||
String type = null;
|
||||
int count = 0;
|
||||
int desiredVersions = 0;
|
||||
for (DatabaseID dbId : databases) {
|
||||
for (DatabaseID dbId : currentInv) {
|
||||
// new series?
|
||||
if (!dbId.getSiteId().equals(site)
|
||||
|| !dbId.getDbType().equals(type)
|
||||
|
@ -1055,11 +1061,31 @@ public class GridParmManager {
|
|||
}
|
||||
}
|
||||
|
||||
List<DatabaseID> newInv = getDbInventory(siteID).getPayload();
|
||||
List<DatabaseID> additions = new ArrayList<DatabaseID>(newInv);
|
||||
additions.removeAll(currentInv);
|
||||
|
||||
List<DatabaseID> deletions = new ArrayList<DatabaseID>(currentInv);
|
||||
deletions.removeAll(newInv);
|
||||
|
||||
// kludge to keep dbMap in synch until GridParmManager/D2DParmICache
|
||||
// merge/refactor
|
||||
dbMap.keySet().retainAll(databases);
|
||||
List<DatabaseID> toRemove = new ArrayList<DatabaseID>(dbMap.keySet());
|
||||
toRemove.removeAll(newInv);
|
||||
for (DatabaseID dbId : toRemove) {
|
||||
statusHandler
|
||||
.info("Synching GridParmManager with database inventory, removing "
|
||||
+ dbId);
|
||||
dbMap.remove(dbId);
|
||||
|
||||
createDbNotification(siteID, databases);
|
||||
// add any removals to the deletions list
|
||||
// so notifications go to the other JVMs
|
||||
if (!deletions.contains(dbId)) {
|
||||
deletions.add(dbId);
|
||||
}
|
||||
}
|
||||
|
||||
createDbNotification(siteID, additions, deletions);
|
||||
|
||||
return sr;
|
||||
}
|
||||
|
@ -1220,8 +1246,8 @@ public class GridParmManager {
|
|||
// ingested
|
||||
String d2dModelName = serverConfig
|
||||
.d2dModelNameMapping(modelName);
|
||||
db = new D2DGridDatabase(serverConfig, d2dModelName,
|
||||
dbId.getModelTimeAsDate());
|
||||
db = D2DGridDatabase.getDatabase(serverConfig,
|
||||
d2dModelName, dbId.getModelTimeAsDate());
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
|
@ -1244,6 +1270,7 @@ public class GridParmManager {
|
|||
}
|
||||
|
||||
if ((db != null) && db.databaseIsValid()) {
|
||||
statusHandler.info("getDb called, adding " + dbId);
|
||||
dbMap.put(dbId, db);
|
||||
}
|
||||
}
|
||||
|
@ -1255,6 +1282,8 @@ public class GridParmManager {
|
|||
while (iter.hasNext()) {
|
||||
DatabaseID dbId = iter.next();
|
||||
if (dbId.getSiteId().equals(siteID)) {
|
||||
statusHandler.info("purgeDbCache(" + siteID + "), removing "
|
||||
+ dbId);
|
||||
iter.remove();
|
||||
}
|
||||
}
|
||||
|
@ -1370,18 +1399,6 @@ public class GridParmManager {
|
|||
return sr;
|
||||
}
|
||||
|
||||
private static void createDbNotification(String siteID,
|
||||
List<DatabaseID> prevInventory) {
|
||||
List<DatabaseID> newInventory = getDbInventory(siteID).getPayload();
|
||||
List<DatabaseID> additions = new ArrayList<DatabaseID>(newInventory);
|
||||
additions.removeAll(prevInventory);
|
||||
|
||||
List<DatabaseID> deletions = new ArrayList<DatabaseID>(prevInventory);
|
||||
deletions.removeAll(newInventory);
|
||||
|
||||
createDbNotification(siteID, additions, deletions);
|
||||
}
|
||||
|
||||
private static void createDbNotification(String siteID,
|
||||
List<DatabaseID> additions, List<DatabaseID> deletions) {
|
||||
if (!additions.isEmpty() || !deletions.isEmpty()) {
|
||||
|
@ -1400,6 +1417,7 @@ public class GridParmManager {
|
|||
"Unable to purge model database: " + id, e);
|
||||
}
|
||||
}
|
||||
statusHandler.info("deallocateDb called, removing " + id);
|
||||
dbMap.remove(id);
|
||||
}
|
||||
|
||||
|
@ -1429,6 +1447,9 @@ public class GridParmManager {
|
|||
}
|
||||
|
||||
for (DatabaseID dbId : invChanged.getDeletions()) {
|
||||
statusHandler
|
||||
.info("DBInvChangeNotification deletion received, removing "
|
||||
+ dbId);
|
||||
dbMap.remove(dbId);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,7 +43,6 @@ import com.raytheon.edex.plugin.gfe.db.dao.GFED2DDao;
|
|||
import com.raytheon.edex.plugin.gfe.paraminfo.GridParamInfo;
|
||||
import com.raytheon.edex.plugin.gfe.paraminfo.GridParamInfoLookup;
|
||||
import com.raytheon.edex.plugin.gfe.paraminfo.ParameterInfo;
|
||||
import com.raytheon.edex.plugin.gfe.server.GridParmManager;
|
||||
import com.raytheon.uf.common.comm.CommunicationException;
|
||||
import com.raytheon.uf.common.dataplugin.PluginException;
|
||||
import com.raytheon.uf.common.dataplugin.gfe.GridDataHistory;
|
||||
|
@ -107,6 +106,9 @@ import com.raytheon.uf.edex.database.DataAccessLayerException;
|
|||
* 04/17/2013 #1913 randerso Added GFE level mapping to replace GridTranslator
|
||||
* 05/02/2013 #1969 randerso Removed unnecessary updateDbs method
|
||||
* 05/03/2013 #1974 randerso Fixed error handling when no D2D level mapping found
|
||||
* 09/12/2013 #2348 randerso Removed code that called getDb from getD2DDatabaseIdsFromDb
|
||||
* Added function to create a D2DGridDatabase object only if there is
|
||||
* data in postgres for the desired model/reftime
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -135,6 +137,33 @@ public class D2DGridDatabase extends VGridDatabase {
|
|||
gfeModelName, modelTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a D2DGridDatabase if it is available
|
||||
*
|
||||
* @param config
|
||||
* configuration for site
|
||||
* @param dbId
|
||||
* DatabaseID of desired database
|
||||
* @return D2DGridDatabase or null if not available
|
||||
*/
|
||||
public static D2DGridDatabase getDatabase(IFPServerConfig config,
|
||||
String d2dModelName, Date refTime) {
|
||||
try {
|
||||
GFED2DDao dao = new GFED2DDao();
|
||||
List<Date> result = dao.getModelRunTimes(d2dModelName, -1);
|
||||
|
||||
if (result.contains(refTime)) {
|
||||
D2DGridDatabase db = new D2DGridDatabase(config, d2dModelName,
|
||||
refTime);
|
||||
return db;
|
||||
}
|
||||
return null;
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves DatabaseIDs for all model runs of a given d2dModelName
|
||||
*
|
||||
|
@ -178,15 +207,7 @@ public class D2DGridDatabase extends VGridDatabase {
|
|||
for (Date date : result) {
|
||||
DatabaseID dbId = null;
|
||||
dbId = getDbId(d2dModelName, date, config);
|
||||
try {
|
||||
GridDatabase db = GridParmManager.getDb(dbId);
|
||||
if ((db != null) && !dbInventory.contains(dbId)) {
|
||||
dbInventory.add(dbId);
|
||||
}
|
||||
} catch (GfeException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
}
|
||||
dbInventory.add(dbId);
|
||||
}
|
||||
return dbInventory;
|
||||
} catch (PluginException e) {
|
||||
|
@ -285,10 +306,14 @@ public class D2DGridDatabase extends VGridDatabase {
|
|||
/**
|
||||
* Constructs a new D2DGridDatabase
|
||||
*
|
||||
* For internal use only. External code should call
|
||||
* D2DGridDatabase.getDatabase(IFPServerConfig, String, Date) to ensure
|
||||
* objects are only created if data is present
|
||||
*
|
||||
* @param dbId
|
||||
* The database ID of this database
|
||||
*/
|
||||
public D2DGridDatabase(IFPServerConfig config, String d2dModelName,
|
||||
private D2DGridDatabase(IFPServerConfig config, String d2dModelName,
|
||||
Date refTime) throws GfeException {
|
||||
super(config);
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ import com.raytheon.uf.common.serialization.comm.IRequestHandler;
|
|||
import com.raytheon.uf.edex.core.EDEXUtil;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* Handler for SmartInitRequest.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
|
@ -43,7 +43,7 @@ import com.raytheon.uf.edex.core.EDEXUtil;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Oct 12, 2010 dgilling Initial creation
|
||||
*
|
||||
* Sep 13, 2013 2368 rjpeter Used durable jms settings.
|
||||
* </pre>
|
||||
*
|
||||
* @author dgilling
|
||||
|
@ -93,7 +93,7 @@ public class SmartInitRequestHandler implements
|
|||
.append(SmartInitRecord.MANUAL_SMART_INIT_PRIORITY);
|
||||
|
||||
EDEXUtil.getMessageProducer().sendAsyncUri(
|
||||
"jms-generic:queue:manualSmartInit",
|
||||
"jms-durable:queue:manualSmartInit",
|
||||
manualInitString.toString());
|
||||
} else {
|
||||
sr.addMessage("No valid model data could be retrieved for model "
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<bean id="goessoundingDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="goessoundingPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.goessounding?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.goessounding"/>
|
||||
</bean>
|
||||
|
||||
<bean id="goessoundingCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -35,13 +35,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>goessounding</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.goessounding" />
|
||||
<to uri="jms-durable:queue:Ingest.goessounding" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin GOES Sounding routes -->
|
||||
<route id="goessndgIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.goessounding?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.goessounding"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>goessounding</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -6,14 +6,11 @@
|
|||
<bean id="gribDecoder" class="com.raytheon.edex.plugin.grib.GribDecoder" />
|
||||
|
||||
<bean id="ingest-grib" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestGribConfig" />
|
||||
<constructor-arg ref="jmsGribConfig" />
|
||||
<property name="taskExecutor" ref="gribThreadPool" />
|
||||
</bean>
|
||||
|
||||
<bean id="jmsIngestGribConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
</bean>
|
||||
|
||||
<bean id="jmsGribConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="gribThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="${grib-decode.count.threads}" />
|
||||
|
@ -61,7 +58,7 @@
|
|||
autoStartup="false">
|
||||
|
||||
<endpoint id="gribFileEndpoint" uri="file:${edex.home}/data/sbn/grib?noop=true&idempotent=false" />
|
||||
<endpoint id="gribJmsEndpoint" uri="ingest-grib:queue:Ingest.Grib?concurrentConsumers=${grib-decode.count.threads}&destinationResolver=#qpidDurableResolver" />
|
||||
<endpoint id="gribJmsEndpoint" uri="ingest-grib:queue:Ingest.Grib?concurrentConsumers=${grib-decode.count.threads}"/>
|
||||
|
||||
<route id="gribFileConsumerRoute">
|
||||
<from ref="gribFileEndpoint" />
|
||||
|
|
|
@ -6,14 +6,11 @@
|
|||
<bean id="gribDecoder" class="com.raytheon.edex.plugin.grib.GribDecoder" />
|
||||
|
||||
<bean id="ingest-grib" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestGribConfig" />
|
||||
<constructor-arg ref="jmsGribConfig" />
|
||||
<property name="taskExecutor" ref="gribThreadPool" />
|
||||
</bean>
|
||||
|
||||
<bean id="jmsIngestGribConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
</bean>
|
||||
|
||||
<bean id="jmsGribConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="gribThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="${grib-decode.count.threads}" />
|
||||
|
@ -57,7 +54,7 @@
|
|||
autoStartup="false">
|
||||
|
||||
<endpoint id="gribFileEndpoint" uri="file:${edex.home}/data/sbn/grib?noop=true&idempotent=false" />
|
||||
<endpoint id="gribJmsEndpoint" uri="ingest-grib:queue:Ingest.Grib?concurrentConsumers=${grib-decode.count.threads}&destinationResolver=#qpidDurableResolver" />
|
||||
<endpoint id="gribJmsEndpoint" uri="ingest-grib:queue:Ingest.Grib?concurrentConsumers=${grib-decode.count.threads}"/>
|
||||
|
||||
<route id="gribFileConsumerRoute">
|
||||
<from ref="gribFileEndpoint" />
|
||||
|
|
|
@ -515,11 +515,6 @@
|
|||
<datasetId>FFG-TIR</datasetId>
|
||||
<dt>1</dt>
|
||||
</info>
|
||||
<info>
|
||||
<title>FFG-TIR-HiRes</title>
|
||||
<datasetId>FFG-TIR-HiRes</datasetId>
|
||||
<dt>1</dt>
|
||||
</info>
|
||||
<info>
|
||||
<title>QPE-TIR</title>
|
||||
<datasetId>QPE-TIR</datasetId>
|
||||
|
|
|
@ -1079,19 +1079,9 @@
|
|||
<id>180</id>
|
||||
</process>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>FFG-TIR</name>
|
||||
<center>9</center>
|
||||
<subcenter>160</subcenter>
|
||||
<grid>240160</grid>
|
||||
<process>
|
||||
<id>151</id>
|
||||
</process>
|
||||
</model>
|
||||
|
||||
<model>
|
||||
<name>FFG-TIR-HiRes</name>
|
||||
<name>FFG-TIR</name>
|
||||
<center>9</center>
|
||||
<subcenter>160</subcenter>
|
||||
<grid>250160</grid>
|
||||
|
|
|
@ -21,11 +21,11 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>ldad</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.ldad" />
|
||||
<to uri="jms-durable:queue:Ingest.ldad" />
|
||||
</route>
|
||||
|
||||
<route id="ldadIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.ldad" />
|
||||
<from uri="jms-durable:queue:Ingest.ldad" />
|
||||
<multicast>
|
||||
<try>
|
||||
<to uri="direct-vm:ldadmesonetIngest" />
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<bean id="ldadhydroDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="ldadhydro" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.ldadhydro?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.ldadhydro" />
|
||||
</bean>
|
||||
|
||||
<bean id="ldadhydroPointData" class="com.raytheon.edex.plugin.ldadhydro.dao.LdadhydroPointDataTransform"/>
|
||||
|
@ -28,7 +28,7 @@
|
|||
errorHandlerRef="errorHandler"
|
||||
autoStartup="false">
|
||||
<route id="ldadhydroIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.ldadhydro?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.ldadhydro"/>
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="stringToFile" />
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<bean id="ldadmanualDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="ldadmanual" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.ldadmanual?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.ldadmanual"/>
|
||||
</bean>
|
||||
|
||||
<bean id="ldadmanualCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -26,7 +26,7 @@
|
|||
autoStartup="false">
|
||||
|
||||
<route id="ldadmanualIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.ldadmanual?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.ldadmanual"/>
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="stringToFile" />
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<bean id="ldadprofilerDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="ldadprofiler" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.ldadprofiler?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.ldadprofiler"/>
|
||||
</bean>
|
||||
|
||||
<bean id="ldadprofilerCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -37,13 +37,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>ldadprofiler</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.ldadprofiler" />
|
||||
<to uri="jms-durable:queue:Ingest.ldadprofiler" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin ldadprofiler routes -->
|
||||
<route id="ldadprofilerIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.ldadprofiler?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.ldadprofiler"/>
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="stringToFile" />
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
<bean id="mdlsndgDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="modelsoundingPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.modelsounding?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.modelsounding"/>
|
||||
</bean>
|
||||
|
||||
<bean id="modelsoundingCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -45,13 +45,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>modelsounding</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.modelsounding" />
|
||||
<to uri="jms-durable:queue:Ingest.modelsounding" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin Model Sounding routes -->
|
||||
<route id="modelsndgIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.modelsounding?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.modelsounding"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>modelsounding</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<bean id="obsDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="obs" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.obs?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.obs"/>
|
||||
</bean>
|
||||
|
||||
<bean id="obsCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -36,13 +36,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>obs</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.obs" />
|
||||
<to uri="jms-durable:queue:Ingest.obs" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin METAR routes -->
|
||||
<route id="metarIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.obs?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.obs"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>obs</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -34,12 +34,12 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>pirep</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.pirep"/>
|
||||
<to uri="jms-durable:queue:Ingest.pirep"/>
|
||||
</route>
|
||||
-->
|
||||
<!-- Begin Pirep routes -->
|
||||
<route id="pirepIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.pirep?destinationResolver=#qpidDurableResolver"/>
|
||||
<from uri="jms-durable:queue:Ingest.pirep"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>pirep</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<bean id="poessoundingDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="poessoundingPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.poessounding?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.poessounding"/>
|
||||
</bean>
|
||||
|
||||
<bean id="poessoundingCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -30,13 +30,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>poessounding</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.poessounding"/>
|
||||
<to uri="jms-durable:queue:Ingest.poessounding"/>
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin poes Sounding routes -->
|
||||
<route id="poessndgIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.poessounding?destinationResolver=#qpidDurableResolver"/>
|
||||
<from uri="jms-durable:queue:Ingest.poessounding"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>poessounding</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<bean id="profilerDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="profilerPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.profiler?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.profiler"/>
|
||||
</bean>
|
||||
|
||||
<bean id="profilerCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -30,13 +30,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>profiler</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.profiler"/>
|
||||
<to uri="jms-durable:queue:Ingest.profiler"/>
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin Profiler routes -->
|
||||
<route id="profilerIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.profiler?destinationResolver=#qpidDurableResolver"/>
|
||||
<from uri="jms-durable:queue:Ingest.profiler"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>profiler</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -6,12 +6,11 @@
|
|||
<bean id="radarDecompressor" class="com.raytheon.edex.plugin.radar.RadarDecompressor"/>
|
||||
<bean id="radarDecoder" class="com.raytheon.edex.plugin.radar.RadarDecoder"/>
|
||||
<bean id="jms-radar" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestRadarConfig" />
|
||||
<constructor-arg ref="jmsRadarConfig" />
|
||||
<property name="taskExecutor" ref="radarThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsIngestRadarConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
</bean>
|
||||
<bean id="jmsRadarConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="radarThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="2" />
|
||||
|
@ -54,7 +53,7 @@
|
|||
|
||||
<!-- Begin Radar routes -->
|
||||
<route id="radarIngestRoute">
|
||||
<from uri="jms-radar:queue:Ingest.Radar?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-radar:queue:Ingest.Radar"/>
|
||||
<setHeader headerName="dataType">
|
||||
<constant>radar-sbn</constant>
|
||||
</setHeader>
|
||||
|
@ -62,7 +61,7 @@
|
|||
</route>
|
||||
|
||||
<route id="radarRadarServerIngestRoute">
|
||||
<from uri="jms-radar:queue:Ingest.RadarRadarServer?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-radar:queue:Ingest.RadarRadarServer"/>
|
||||
<setHeader headerName="dataType">
|
||||
<constant>radar-local</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -33,13 +33,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>recco</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.recco" />
|
||||
<to uri="jms-durable:queue:Ingest.recco" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin RECCO routes -->
|
||||
<route id="reccoIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.recco?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.recco"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>recco</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<bean id="redbookDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="redbook" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.redbook?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.redbook"/>
|
||||
</bean>
|
||||
|
||||
<!--
|
||||
|
@ -38,13 +38,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>redbook</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.redbook" />
|
||||
<to uri="jms-durable:queue:Ingest.redbook" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin Redbook routes -->
|
||||
<route id="redbookIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.redbook?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.redbook"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>redbook</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
||||
|
||||
<bean id="jms-satellite" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestSatelliteConfig" />
|
||||
<constructor-arg ref="jmsSatelliteConfig" />
|
||||
<property name="taskExecutor" ref="satelliteThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsIngestSatelliteConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy" />
|
||||
<bean id="jmsSatelliteConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="satelliteThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="1" />
|
||||
|
@ -47,13 +47,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>satellite</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.Satellite" />
|
||||
<to uri="jms-durable:queue:Ingest.Satellite" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin Sat routes -->
|
||||
<route id="satIngestRoute">
|
||||
<from uri="jms-satellite:queue:Ingest.Satellite?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-satellite:queue:Ingest.Satellite"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>satellite</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<bean id="sfcobsDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="sfcobs" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.sfcobs?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.sfcobs"/>
|
||||
</bean>
|
||||
|
||||
<bean id="sfcobsCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -37,13 +37,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>sfcobs</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.sfcobs" />
|
||||
<to uri="jms-durable:queue:Ingest.sfcobs" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin sfcobs routes -->
|
||||
<route id="sfcobsIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.sfcobs?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.sfcobs"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>sfcobs</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
||||
|
||||
<bean id="jms-shef" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestShefConfig" />
|
||||
<constructor-arg ref="jmsShefConfig" />
|
||||
<property name="taskExecutor" ref="shefThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsIngestShefConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy" />
|
||||
<bean id="jmsShefConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="shefThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="3" />
|
||||
|
@ -47,13 +47,13 @@
|
|||
factory-method="register">
|
||||
<constructor-arg value="shef" />
|
||||
<constructor-arg
|
||||
value="jms-dist:queue:Ingest.Shef?destinationResolver=#qpidDurableResolver" />
|
||||
value="jms-dist:queue:Ingest.Shef"/>
|
||||
</bean>
|
||||
|
||||
<bean id="shefHandleoupDistRegistry" factory-bean="handleoupDistributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="shef" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Shef?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Shef"/>
|
||||
</bean>
|
||||
|
||||
<bean id="shefCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -80,7 +80,7 @@
|
|||
<bean ref="manualProc" method="copyFileToArchive" />
|
||||
<bean ref="manualProc" />
|
||||
<to
|
||||
uri="jms-generic:queue:Ingest.ShefManual?destinationResolver=#qpidDurableResolver" />
|
||||
uri="jms-durable:queue:Ingest.ShefManual"/>
|
||||
</route>
|
||||
</camelContext>
|
||||
|
||||
|
@ -92,7 +92,7 @@
|
|||
<!-- Begin shef routes -->
|
||||
<route id="shefIngestRoute">
|
||||
<from
|
||||
uri="jms-shef:queue:Ingest.Shef?destinationResolver=#qpidDurableResolver" />
|
||||
uri="jms-shef:queue:Ingest.Shef"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>shef</constant>
|
||||
</setHeader>
|
||||
|
@ -103,7 +103,7 @@
|
|||
</route>
|
||||
<route id="shefStagedRoute">
|
||||
<from
|
||||
uri="jms-shef:queue:Ingest.ShefStaged?destinationResolver=#qpidDurableResolver" />
|
||||
uri="jms-shef:queue:Ingest.ShefStaged"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>shef</constant>
|
||||
</setHeader>
|
||||
|
@ -119,7 +119,7 @@
|
|||
<split streaming="true">
|
||||
<method bean="synopticToShef" method="iterate" />
|
||||
<bean ref="synopticToShef" method="transform" />
|
||||
<to uri="jms-generic:queue:Ingest.ShefStaged" />
|
||||
<to uri="jms-durable:queue:Ingest.ShefStaged" />
|
||||
</split>
|
||||
</pipeline>
|
||||
</route>
|
||||
|
@ -134,7 +134,7 @@
|
|||
<method bean="metarToShef" method="iterate" />
|
||||
<bean ref="metarToShef" method="transformMetar" />
|
||||
<to
|
||||
uri="jms-generic:queue:Ingest.ShefStaged?destinationResolver=#qpidDurableResolver" />
|
||||
uri="jms-durable:queue:Ingest.ShefStaged"/>
|
||||
</split>
|
||||
</pipeline>
|
||||
</route>
|
||||
|
@ -155,7 +155,7 @@
|
|||
|
||||
<route id="shefManualIngestRoute">
|
||||
<from
|
||||
uri="jms-shef:queue:Ingest.ShefManual?destinationResolver=#qpidDurableResolver" />
|
||||
uri="jms-shef:queue:Ingest.ShefManual"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>shef</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -80,6 +80,7 @@ import com.raytheon.uf.edex.database.dao.DaoConfig;
|
|||
* 02/24/2012 14535 W. Kwock Correct the duration value.
|
||||
* 11/29/2012 15530 lbousaidi corrected posting and production time for
|
||||
* latestobsvalue table.
|
||||
* 09/19/2013 16515 w. Kwock Fix the excessive digits in rawpp,lake,height...tables
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -1065,7 +1066,7 @@ public class PostTables {
|
|||
cs.setString(5, shefData.getExtremum().getCode());
|
||||
cs.setTimestamp(6, new Timestamp(shefData.getObservationTimeObj()
|
||||
.getTime()));
|
||||
cs.setFloat(7, Float.parseFloat(dataValue));
|
||||
cs.setDouble(7, Double.parseDouble(dataValue));
|
||||
cs.setString(8, qualifier);
|
||||
cs.setInt(9, (int) qualityCode);
|
||||
|
||||
|
@ -1184,7 +1185,7 @@ public class PostTables {
|
|||
cs.setString(5, shefData.getExtremum().getCode());
|
||||
cs.setTimestamp(6, new java.sql.Timestamp(shefData
|
||||
.getObservationTimeObj().getTime()));
|
||||
cs.setFloat(7, Float.parseFloat(dataValue));
|
||||
cs.setDouble(7, Double.parseDouble(dataValue));
|
||||
cs.setString(8, qualifier);
|
||||
cs.setInt(9, (int) qualityCode);
|
||||
|
||||
|
@ -1316,7 +1317,7 @@ public class PostTables {
|
|||
timeStamp = new java.sql.Timestamp(basisDate.getTime());
|
||||
cs.setTimestamp(8, timeStamp);
|
||||
|
||||
cs.setFloat(9, Float.parseFloat(dataValue));
|
||||
cs.setDouble(9, Double.parseDouble(dataValue));
|
||||
|
||||
cs.setString(10, qualifier);
|
||||
|
||||
|
@ -1534,7 +1535,7 @@ public class PostTables {
|
|||
ps.setTimestamp(8, timeStamp2);
|
||||
|
||||
// ps.setFloat(9, Float.parseFloat(shefDataValue.getStringValue()));
|
||||
ps.setFloat(9, shefDataValue.getValue().floatValue());
|
||||
ps.setDouble(9, shefDataValue.getValue().floatValue());
|
||||
|
||||
if (updateFlag) {
|
||||
ps.setString(10, lid);
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
<bean id="tafDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="taf" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.taf?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.taf"/>
|
||||
</bean>
|
||||
|
||||
<bean id="tafHandleoupDistRegistry" factory-bean="handleoupDistributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="taf" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.taf?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.taf"/>
|
||||
</bean>
|
||||
|
||||
<bean id="tafCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -36,13 +36,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>taf</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.taf" />
|
||||
<to uri="jms-durable:queue:Ingest.taf" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin TAF routes -->
|
||||
<route id="tafIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.taf?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.taf"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>taf</constant>
|
||||
</setHeader>
|
||||
|
@ -69,7 +69,5 @@
|
|||
</doCatch>
|
||||
</doTry>
|
||||
</route>
|
||||
|
||||
</camelContext>
|
||||
|
||||
</beans>
|
|
@ -11,7 +11,7 @@
|
|||
<bean id="textDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="text" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Text?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Text"/>
|
||||
</bean>
|
||||
|
||||
<bean factory-bean="manualProc"
|
||||
|
@ -22,7 +22,7 @@
|
|||
<bean id="textHandleoupDistRegistry" factory-bean="handleoupDistributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="text" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Text?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Text"/>
|
||||
</bean>
|
||||
|
||||
<!-- define the bean that handles automatic faxing of products. -->
|
||||
|
@ -33,12 +33,11 @@
|
|||
<bean id="textVersionPurge" class="com.raytheon.edex.plugin.text.TextVersionPurge" depends-on="textRegistered"/>
|
||||
|
||||
<bean id="jms-text" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestTextConfig" />
|
||||
<constructor-arg ref="jmsTextConfig" />
|
||||
<property name="taskExecutor" ref="textThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsIngestTextConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
</bean>
|
||||
<bean id="jmsTextConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="textThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="2" />
|
||||
|
@ -66,7 +65,7 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>text</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.Text" />
|
||||
<to uri="jms-durable:queue:Ingest.Text" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
|
@ -120,7 +119,7 @@
|
|||
</route>
|
||||
|
||||
<route id="textUndecodedIngestRoute">
|
||||
<from uri="jms-text:queue:Ingest.Text?destinationResolver=#qpidDurableResolver&concurrentConsumers=2" />
|
||||
<from uri="jms-text:queue:Ingest.Text?concurrentConsumers=2" />
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>text</constant>
|
||||
</setHeader>
|
||||
|
@ -147,7 +146,7 @@
|
|||
<route id="textToWatchWarnRoute">
|
||||
<from uri="direct:textToWatchWarn" />
|
||||
<bean ref="textDecoder" method="transformToProductIds" />
|
||||
<to uri="jms-text:queue:watchwarn?destinationResolver=#qpidDurableResolver" />
|
||||
<to uri="jms-text:queue:watchwarn" />
|
||||
</route>
|
||||
|
||||
<route id="textSerializationRoute">
|
||||
|
@ -156,7 +155,7 @@
|
|||
<method bean="textDecoder" method="separator" />
|
||||
<bean ref="textDecoder" method="transformToSimpleString" />
|
||||
<bean ref="serializationUtil" method="transformToThrift"/>
|
||||
<to uri="jms-text:topic:edex.alarms.msg?timeToLive=60000" />
|
||||
<to uri="jms-generic:topic:edex.alarms.msg?timeToLive=60000" />
|
||||
</split>
|
||||
</route>
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<bean id="textlightningDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="textlightning" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.textlightning?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.textlightning"/>
|
||||
</bean>
|
||||
|
||||
<bean id="textlightningCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -31,13 +31,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>textlightning</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.textlightning" />
|
||||
<to uri="jms-durable:queue:Ingest.textlightning" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin textlightning routes -->
|
||||
<route id="textlightningIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.textlightning?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.textlightning"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>textlightning</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
<bean id="warningDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="warning" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Warning?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Warning"/>
|
||||
</bean>
|
||||
|
||||
<bean id="warningHandleoupDistRegistry" factory-bean="handleoupDistributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="warning" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Warning?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.Warning"/>
|
||||
</bean>
|
||||
|
||||
<bean id="warningCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -23,12 +23,11 @@
|
|||
</bean>
|
||||
|
||||
<bean id="jms-warning" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestWarningConfig" />
|
||||
<constructor-arg ref="jmsWarningConfig" />
|
||||
<property name="taskExecutor" ref="warningThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsIngestWarningConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
</bean>
|
||||
<bean id="jmsWarningConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="warningThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="1" />
|
||||
|
@ -49,7 +48,7 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>warning</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.Warning" />
|
||||
<to uri="jms-durable:queue:Ingest.Warning" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
|
@ -57,7 +56,7 @@
|
|||
Warning routes
|
||||
-->
|
||||
<route id="warningIngestRoute">
|
||||
<from uri="jms-warning:queue:Ingest.Warning?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-warning:queue:Ingest.Warning"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>warning</constant>
|
||||
</setHeader>
|
||||
|
@ -72,7 +71,7 @@
|
|||
<to uri="jms-warning:queue:edex.tpcWatch" />
|
||||
<filter>
|
||||
<method bean="vtecFilter" method="hasVTEC" />
|
||||
<to uri="jms-warning:queue:activeTablePending?destinationResolver=#qpidDurableResolver" />
|
||||
<to uri="jms-warning:queue:activeTablePending"/>
|
||||
</filter>
|
||||
</multicast>
|
||||
</pipeline>
|
||||
|
@ -89,6 +88,5 @@
|
|||
<bean ref="processUtil" method="log" />
|
||||
<to uri="vm:stageNotification" />
|
||||
</route>
|
||||
|
||||
</camelContext>
|
||||
</beans>
|
|
@ -0,0 +1,91 @@
|
|||
/**
|
||||
* This software was developed and / or modified by Raytheon Company,
|
||||
* pursuant to Contract DG133W-05-CQ-1067 with the US Government.
|
||||
*
|
||||
* U.S. EXPORT CONTROLLED TECHNICAL DATA
|
||||
* This software product contains export-restricted data whose
|
||||
* export/transfer/disclosure is restricted by U.S. law. Dissemination
|
||||
* to non-U.S. persons whether in the United States or abroad requires
|
||||
* an export license or other authorization.
|
||||
*
|
||||
* Contractor Name: Raytheon Company
|
||||
* Contractor Address: 6825 Pine Street, Suite 340
|
||||
* Mail Stop B8
|
||||
* Omaha, NE 68106
|
||||
* 402.291.0100
|
||||
*
|
||||
* See the AWIPS II Master Rights File ("Master Rights File.pdf") for
|
||||
* further licensing information.
|
||||
**/
|
||||
package com.raytheon.uf.common.dataplugin.warning;
|
||||
|
||||
/**
|
||||
* Helps manage and identify emergency products.
|
||||
*
|
||||
* <pre>
|
||||
*
|
||||
* SOFTWARE HISTORY
|
||||
*
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Sep 4, 2013 2176 jsanchez Initial creation
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
* @author jsanchez
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class EmergencyType {
|
||||
|
||||
public static final String EMER = "EMER";
|
||||
|
||||
private static final EmergencyType TORNADO = new EmergencyType(
|
||||
"TORNADO EMERGENCY", "TO.W");
|
||||
|
||||
private static final EmergencyType FLASH_FLOOD = new EmergencyType(
|
||||
"FLASH FLOOD EMERGENCY", "FF.W");
|
||||
|
||||
private final String value;
|
||||
|
||||
private final String phensig;
|
||||
|
||||
private final static EmergencyType[] values = new EmergencyType[] {
|
||||
TORNADO, FLASH_FLOOD };
|
||||
|
||||
private EmergencyType(String type, String phensig) {
|
||||
this.value = type;
|
||||
this.phensig = phensig;
|
||||
}
|
||||
|
||||
public static EmergencyType valueOf(String phensig) {
|
||||
EmergencyType type = null;
|
||||
for (EmergencyType t : values) {
|
||||
if (t.phensig.equals(phensig)) {
|
||||
type = t;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if the text product is an emergency product.
|
||||
*
|
||||
* @param rawmessage
|
||||
* @return
|
||||
*/
|
||||
public static boolean isEmergency(String rawmessage) {
|
||||
for (EmergencyType type : values) {
|
||||
if (rawmessage != null && rawmessage.contains(type.getValue())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public String getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
|
@ -11,7 +11,7 @@
|
|||
autoStartup="false">
|
||||
|
||||
<route id="activeTablePendingRoute">
|
||||
<from uri="jms-generic:queue:activeTablePending?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:activeTablePending"/>
|
||||
<doTry>
|
||||
<bean ref="activeTableSrv" method="vtecArrived" />
|
||||
<doCatch>
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
**/
|
||||
package com.raytheon.uf.edex.auth;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
import com.raytheon.uf.common.auth.AuthException;
|
||||
import com.raytheon.uf.common.auth.resp.AuthServerErrorResponse;
|
||||
import com.raytheon.uf.common.serialization.ExceptionWrapper;
|
||||
|
@ -41,13 +43,15 @@ import com.raytheon.uf.common.util.SizeUtil;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Aug 10, 2009 mschenke Initial creation
|
||||
* Jul 24, 2012 njensen Enhanced logging
|
||||
*
|
||||
* Jul 24, 2012 njensen Enhanced logging
|
||||
* Jun 24, 2013 2136 rjpeter Switched to accepting InputStream to reduce garbage
|
||||
* objected generated by camel doing the auto conversion.
|
||||
* </pre>
|
||||
*
|
||||
* @author mschenke
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class RemoteRequestRouteWrapper {
|
||||
|
||||
private static final IUFStatusHandler thriftSrvLogger = UFStatus
|
||||
|
@ -55,10 +59,11 @@ public class RemoteRequestRouteWrapper {
|
|||
|
||||
private RemoteRequestServer server;
|
||||
|
||||
public byte[] executeThrift(byte[] data) {
|
||||
public byte[] executeThrift(InputStream data) {
|
||||
try {
|
||||
long startTime = System.currentTimeMillis();
|
||||
Object obj = SerializationUtil.transformFromThrift(data);
|
||||
Object obj = SerializationUtil.transformFromThrift(Object.class,
|
||||
data);
|
||||
IServerRequest request = null;
|
||||
if (obj instanceof RequestWrapper) {
|
||||
request = ((RequestWrapper) obj).getRequest();
|
||||
|
@ -70,9 +75,7 @@ public class RemoteRequestRouteWrapper {
|
|||
long endTime = System.currentTimeMillis();
|
||||
StringBuilder sb = new StringBuilder(300);
|
||||
sb.append("Handled ").append(obj.toString()).append(" in ")
|
||||
.append((endTime - startTime)).append("ms, ");
|
||||
sb.append("request was size ").append(
|
||||
SizeUtil.prettyByteSize(data.length));
|
||||
.append((endTime - startTime)).append("ms");
|
||||
sb.append(", response was size ").append(
|
||||
SizeUtil.prettyByteSize(rval.length));
|
||||
thriftSrvLogger.info(sb.toString());
|
||||
|
@ -84,7 +87,8 @@ public class RemoteRequestRouteWrapper {
|
|||
try {
|
||||
return SerializationUtil.transformToThrift(resp);
|
||||
} catch (SerializationException e1) {
|
||||
e1.printStackTrace();
|
||||
thriftSrvLogger.error(
|
||||
"Failed to serialize AuthException to client", e1);
|
||||
return new byte[] {};
|
||||
}
|
||||
} catch (Throwable t) {
|
||||
|
@ -93,7 +97,8 @@ public class RemoteRequestRouteWrapper {
|
|||
resp.setException(ExceptionWrapper.wrapThrowable(t));
|
||||
return SerializationUtil.transformToThrift(resp);
|
||||
} catch (SerializationException e) {
|
||||
e.printStackTrace();
|
||||
thriftSrvLogger.error(
|
||||
"Failed to serialize throwable to client", e);
|
||||
return new byte[] {};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,9 +30,9 @@
|
|||
<!-- technically with qpid should be able to make this a durable subscription and not need to forward to another queue -->
|
||||
<doTry>
|
||||
<multicast>
|
||||
<to uri="jms-generic:queue:cpgsrvFiltering"/>
|
||||
<to uri="jms-generic:queue:scanCpgsrvFiltering"/>
|
||||
<to uri="jms-generic:queue:ffmpCpgsrvFiltering"/>
|
||||
<to uri="jms-durable:queue:cpgsrvFiltering"/>
|
||||
<to uri="jms-durable:queue:scanCpgsrvFiltering"/>
|
||||
<to uri="jms-durable:queue:ffmpCpgsrvFiltering"/>
|
||||
</multicast>
|
||||
<doCatch>
|
||||
<exception>java.lang.Throwable</exception>
|
||||
|
@ -42,7 +42,7 @@
|
|||
</route>
|
||||
<route id="cpgsrvListenerRoute">
|
||||
<!-- technically with qpid should be able to make this a durable subscription and not need to forward to another queue -->
|
||||
<from uri="jms-generic:queue:cpgsrvFiltering?concurrentConsumers=5&destinationResolver=#qpidDurableResolver"/>
|
||||
<from uri="jms-durable:queue:cpgsrvFiltering?concurrentConsumers=5"/>
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="serializationUtil" method="transformFromThrift" />
|
||||
|
|
|
@ -54,7 +54,7 @@
|
|||
|
||||
<route id="bandwidthManagerProcessWork">
|
||||
<from
|
||||
uri="jms-generic:queue:matureSubscriptions?destinationResolver=#qpidDurableResolver" />
|
||||
uri="jms-durable:queue:matureSubscriptions"/>
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="serializationUtil" method="transformFromThrift" />
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<bean id="notificationHandler"
|
||||
class="com.raytheon.uf.edex.datadelivery.event.handler.NotificationHandler">
|
||||
<constructor-arg type="java.lang.String"
|
||||
value="jms-generic:topic:notify.msg?destinationResolver=#qpidDurableResolver" />
|
||||
value="jms-generic:topic:notify.msg"/>
|
||||
<property name="notificationDao" ref="notificationDao" />
|
||||
</bean>
|
||||
|
||||
|
|
|
@ -2,13 +2,8 @@
|
|||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
|
||||
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">
|
||||
|
||||
<bean id="jmsIngestHarvesterConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
</bean>
|
||||
|
||||
<bean id="jms-harvester" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestHarvesterConfig" />
|
||||
<constructor-arg ref="jmsGenericConfig" />
|
||||
<property name="taskExecutor" ref="harvesterThreadPool" />
|
||||
</bean>
|
||||
|
||||
|
@ -29,11 +24,11 @@
|
|||
errorHandlerRef="errorHandler">
|
||||
|
||||
<endpoint id="metaDataCron" uri="quartz://datadelivery/harvester/?cron=${metadata-process.cron}"/>
|
||||
<endpoint id="harvesterProcessWorkEndpoint" uri="jms-harvester:queue:metaDataProcessWork?concurrentConsumers=${metadata-process.threads}&destinationResolver=#qpidDurableResolver" />
|
||||
<endpoint id="harvesterProcessWorkEndpoint" uri="jms-harvester:queue:metaDataProcessWork?concurrentConsumers=${metadata-process.threads}"/>
|
||||
|
||||
<route id="metaDataProcess">
|
||||
<from uri="metaDataCron" />
|
||||
<to uri="jms-harvester:queue:metaDataProcessWork?destinationResolver=#qpidDurableResolver" />
|
||||
<to uri="jms-harvester:queue:metaDataProcessWork" />
|
||||
</route>
|
||||
|
||||
<route id="metaDataProcessWork">
|
||||
|
|
|
@ -34,12 +34,12 @@
|
|||
a new route and use moveFileToArchive -->
|
||||
<route id="handleoupFilePush">
|
||||
<from
|
||||
uri="jms-generic:queue:Ingest.handleoup?destinationResolver=#qpidDurableResolver" />
|
||||
uri="jms-durable:queue:Ingest.handleoup"/>
|
||||
<doTry>
|
||||
<bean ref="stringToFile" />
|
||||
<bean ref="manualProc" />
|
||||
<to
|
||||
uri="jms-generic:queue:handleoup.dropbox?destinationResolver=#qpidDurableResolver" />
|
||||
uri="jms-durable:queue:handleoup.dropbox"/>
|
||||
<doCatch>
|
||||
<exception>java.lang.Throwable</exception>
|
||||
<to
|
||||
|
|
|
@ -9,13 +9,12 @@
|
|||
<bean id="radarserverDistributionSrv" class="com.raytheon.uf.edex.distribution.DistributionSrv" />
|
||||
|
||||
<bean id="jms-dist" class="org.apache.camel.component.jms.JmsComponent">
|
||||
<constructor-arg ref="jmsIngestDistConfig" />
|
||||
<!-- All initial distribution queues are durable -->
|
||||
<constructor-arg ref="jmsDistConfig" />
|
||||
<property name="taskExecutor" ref="distributionThreadPool" />
|
||||
</bean>
|
||||
<bean id="jmsIngestDistConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsConfig" factory-method="copy">
|
||||
</bean>
|
||||
|
||||
<bean id="jmsDistConfig" class="org.apache.camel.component.jms.JmsConfiguration"
|
||||
factory-bean="jmsDurableConfig" factory-method="copy"/>
|
||||
<bean id="distributionThreadPool"
|
||||
class="com.raytheon.uf.edex.esb.camel.spring.JmsThreadPoolTaskExecutor">
|
||||
<property name="corePoolSize" value="7" />
|
||||
|
@ -30,7 +29,7 @@
|
|||
<endpoint id="refreshDistributionCron" uri="quartz://refreshDist/refreshDistRoute/?cron=${distribution.cron}"/>
|
||||
|
||||
<route id="distribution">
|
||||
<from uri="jms-dist:queue:external.dropbox?concurrentConsumers=5&maxConcurrentConsumers=5&destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-dist:queue:external.dropbox?concurrentConsumers=5&maxConcurrentConsumers=5"/>
|
||||
<doTry>
|
||||
<bean ref="distributionSrv" method="route" />
|
||||
<doCatch>
|
||||
|
@ -41,7 +40,7 @@
|
|||
</route>
|
||||
|
||||
<route id="handleoupDistribution">
|
||||
<from uri="jms-dist:queue:handleoup.dropbox?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-dist:queue:handleoup.dropbox"/>
|
||||
<doTry>
|
||||
<bean ref="handleoupDistributionSrv" method="route" />
|
||||
<doCatch>
|
||||
|
@ -52,7 +51,7 @@
|
|||
</route>
|
||||
|
||||
<route id="radarserverDistribution">
|
||||
<from uri="jms-dist:queue:radarserver.dropbox?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-dist:queue:radarserver.dropbox" />
|
||||
<doTry>
|
||||
<bean ref="radarserverDistributionSrv" method="route" />
|
||||
<doCatch>
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
<bean id="dpaDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="dpa" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.dpa?destinationResolver=#qpidDurableResolver"/>
|
||||
<constructor-arg value="jms-dist:queue:Ingest.dpa"/>
|
||||
</bean>
|
||||
|
||||
<bean id="dpaRadarServerDistRegistry" factory-bean="radarserverDistributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="dpa" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.dpa?destinationResolver=#qpidDurableResolver"/>
|
||||
<constructor-arg value="jms-dist:queue:Ingest.dpa"/>
|
||||
</bean>
|
||||
|
||||
<bean factory-bean="manualProc"
|
||||
|
@ -35,13 +35,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>dpa</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.dpa"/>
|
||||
<to uri="jms-durable:queue:Ingest.dpa"/>
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin dpa Routes -->
|
||||
<route id="dpaIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.dpa?destinationResolver=#qpidDurableResolver"/>
|
||||
<from uri="jms-durable:queue:Ingest.dpa"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>dpa</constant>
|
||||
</setHeader>
|
||||
|
@ -60,6 +60,5 @@
|
|||
</doCatch>
|
||||
</doTry>
|
||||
</route>
|
||||
|
||||
</camelContext>
|
||||
</beans>
|
|
@ -31,14 +31,14 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>arealffg</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.arealffg" />
|
||||
<to uri="jms-durable:queue:Ingest.arealffg" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin arealffg Routes -->
|
||||
<!--
|
||||
<route id="arealffgIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.arealffg" />
|
||||
<from uri="jms-durable:queue:Ingest.arealffg" />
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="stringToFile" />
|
||||
|
|
|
@ -9,13 +9,13 @@
|
|||
<bean id="dhrDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="dhr" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.dhr?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.dhr"/>
|
||||
</bean>
|
||||
|
||||
<bean id="dhrRadarServerDistRegistry" factory-bean="radarserverDistributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="dhr" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.dhr?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.dhr"/>
|
||||
</bean>
|
||||
|
||||
<bean factory-bean="manualProc"
|
||||
|
@ -27,7 +27,7 @@
|
|||
errorHandlerRef="errorHandler">
|
||||
<!-- Begin non-clustered dhr Routes -->
|
||||
<route id="dhrIngestFilter">
|
||||
<from uri="jms-generic:queue:Ingest.dhr?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.dhr"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>dhr</constant>
|
||||
</setHeader>
|
||||
|
@ -52,7 +52,7 @@
|
|||
errorHandlerRef="errorHandler">
|
||||
<!-- Begin dhr Routes -->
|
||||
<route id="dhrIngestRoute">
|
||||
<from uri="jms-generic:queue:dhrProcess?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:dhrProcess" />
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="serializationUtil" method="transformFromThrift" />
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<bean id="q2DistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg value="q2" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.q2?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.q2"/>
|
||||
</bean>
|
||||
|
||||
<camelContext id="q2Proc-context"
|
||||
|
@ -17,7 +17,7 @@
|
|||
|
||||
<!-- Run the Q2 File Processor on new files -->
|
||||
<route id="q2File">
|
||||
<from uri="jms-generic:queue:Ingest.q2?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.q2"/>
|
||||
<doTry>
|
||||
<pipeline>
|
||||
<bean ref="q2Proc" method="unzip" />
|
||||
|
|
|
@ -49,12 +49,12 @@ import com.raytheon.uf.edex.ohd.MainMethod;
|
|||
* SOFTWARE HISTORY
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Jan 20, 2010 4200 snaples Initial creation
|
||||
* Mar 09, 2012 417 dgilling Refactor to use two-stage queue
|
||||
* Jan 20, 2010 4200 snaples Initial creation
|
||||
* Mar 09, 2012 417 dgilling Refactor to use two-stage queue
|
||||
* process.
|
||||
* Mar 20, 2013 1804 bsteffen Switch all radar decompressing to be in
|
||||
* memory.
|
||||
*
|
||||
* Sep 13, 2013 2368 rjpeter Updated to use durable jms settings.
|
||||
* </pre>
|
||||
*
|
||||
* @author snaples
|
||||
|
@ -92,9 +92,9 @@ public class HPEDhrSrv {
|
|||
|
||||
private static final int DT_IDX = 2;
|
||||
|
||||
private static final String JMS_QUEUE_URI = "jms-generic:queue:dhrProcess";
|
||||
private static final String JMS_QUEUE_URI = "jms-durable:queue:dhrProcess";
|
||||
|
||||
private AppsDefaults appsDefaults = AppsDefaults.getInstance();
|
||||
private final AppsDefaults appsDefaults = AppsDefaults.getInstance();
|
||||
|
||||
/**
|
||||
* Route endpoint for "dhrIngestRoute". Takes a message, writes the file to
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<bean id="acarsDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="acarsPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.acars?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.acars"/>
|
||||
</bean>
|
||||
|
||||
<bean id="acarsCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -33,13 +33,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>acars</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.acars" />
|
||||
<to uri="jms-durable:queue:Ingest.acars" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin ACARS routes -->
|
||||
<route id="acarsIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.acars?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.acars"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>acars</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -37,13 +37,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrascat</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrascat" />
|
||||
<to uri="jms-durable:queue:Ingest.bufrascat" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin bufrascat routes -->
|
||||
<route id="bufrascatIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrascat?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.bufrascat"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrascat</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<bean id="bufrhdwDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="bufrhdwPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrhdw?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrhdw"/>
|
||||
</bean>
|
||||
|
||||
<bean id="bufrhdwCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -31,13 +31,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrhdw</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrhdw" />
|
||||
<to uri="jms-durable:queue:Ingest.bufrhdw" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin bufrhdw routes -->
|
||||
<route id="bufrhdwIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrhdw?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.bufrhdw"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrhdw</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<bean id="bufrmthdwDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="bufrmthdwPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrmthdw?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrmthdw"/>
|
||||
</bean>
|
||||
|
||||
<bean id="bufrmthdwCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -31,13 +31,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrmthdw</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrmthdw" />
|
||||
<to uri="jms-durable:queue:Ingest.bufrmthdw" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin bufrmthdw routes -->
|
||||
<route id="bufrhdwIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrmthdw?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.bufrmthdw"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrmthdw</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<bean id="bufrncwfDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="bufrncwfPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrncwf?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrncwf"/>
|
||||
</bean>
|
||||
|
||||
<bean id="bufrncwfCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -30,13 +30,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrncwf</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrncwf" />
|
||||
<to uri="jms-durable:queue:Ingest.bufrncwf" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin bufrncwf routes -->
|
||||
<route id="bufrncwfIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrncwf?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.bufrncwf"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrncwf</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<bean id="bufrquikscatDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="bufrquikscatPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrquikscat?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrquikscat"/>
|
||||
</bean>
|
||||
|
||||
<bean id="bufrquikscatCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -37,13 +37,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrquikscat</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrquikscat" />
|
||||
<to uri="jms-durable:queue:Ingest.bufrquikscat" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin bufrquikscat routes -->
|
||||
<route id="bufrquikscatIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrquikscat?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.bufrquikscat"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrquikscat</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -32,13 +32,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrsigwx</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrsigwx" />
|
||||
<to uri="jms-durable:queue:Ingest.bufrsigwx" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin bufrsigwx routes -->
|
||||
<route id="bufrsigwxIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrsigwx?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.bufrsigwx"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrsigwx</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
<bean id="bufrssmiDistRegistry" factory-bean="distributionSrv"
|
||||
factory-method="register">
|
||||
<constructor-arg ref="bufrssmiPluginName" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrssmi?destinationResolver=#qpidDurableResolver" />
|
||||
<constructor-arg value="jms-dist:queue:Ingest.bufrssmi"/>
|
||||
</bean>
|
||||
|
||||
<bean id="bufrssmiCamelRegistered" factory-bean="contextManager"
|
||||
|
@ -37,13 +37,13 @@
|
|||
<setHeader headerName="pluginName">
|
||||
<constant>bufrssmi</constant>
|
||||
</setHeader>
|
||||
<to uri="jms-generic:queue:Ingest.bufrssmi" />
|
||||
<to uri="jms-durable:queue:Ingest.bufrssmi" />
|
||||
</route>
|
||||
-->
|
||||
|
||||
<!-- Begin bufrssmi routes -->
|
||||
<route id="bufrssmiIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.bufrssmi?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.bufrssmi" />
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>bufrssmi</constant>
|
||||
</setHeader>
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
autoStartup="false">
|
||||
|
||||
<route id="cwaIngestRoute">
|
||||
<from uri="jms-generic:queue:Ingest.cwa?destinationResolver=#qpidDurableResolver" />
|
||||
<from uri="jms-durable:queue:Ingest.cwa"/>
|
||||
<setHeader headerName="pluginName">
|
||||
<constant>cwa</constant>
|
||||
</setHeader>
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue