Issue #882 improved use of SimulatedTime
Change-Id: I624427fe42f0d74bc62900216596e724857830fc Former-commit-id:baff86f951
[formerly6f90bfa61c
] [formerlya65e9608fd
] [formerlybaff86f951
[formerly6f90bfa61c
] [formerlya65e9608fd
] [formerly4a2841b287
[formerlya65e9608fd
[formerly 0deb4ff6eb3dc1aa794916b84a6530b5d77a8b25]]]] Former-commit-id:4a2841b287
Former-commit-id:6d8ac0455e
[formerly7d478ac74c
] [formerly 3ab4b622030a864dcf04c61605009347c3550e9a [formerly8fa0eb70db
]] Former-commit-id: bc2d3c00a3e2d4d029b3e992acb5ae8618d96464 [formerly04a7e5a8c0
] Former-commit-id:e1321b8bc9
This commit is contained in:
parent
178c38c07f
commit
06b3b8368d
14 changed files with 296 additions and 384 deletions
|
@ -24,8 +24,6 @@ import java.util.Collection;
|
|||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.VizApp;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.uf.viz.core.catalog.DirectDbQuery;
|
||||
|
@ -69,18 +67,14 @@ public abstract class Monitor implements IMonitor, IMonitorThresholdListener,
|
|||
private ArrayList<IMonitorListener> monitorListeners = new ArrayList<IMonitorListener>();
|
||||
|
||||
@Override
|
||||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
// knock down messages we don't want
|
||||
for (AlertMessage msg : alertMessages) {
|
||||
DataTime dataTime = (DataTime) msg.decodedAlert.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
if (filterProductMessage(msg)) {
|
||||
processProductMessage(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
// knock down messages we don't want
|
||||
for (AlertMessage msg : alertMessages) {
|
||||
if (filterProductMessage(msg)) {
|
||||
processProductMessage(msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void notificationArrived(NotificationMessage[] notifyMessages) {
|
||||
|
|
|
@ -33,8 +33,6 @@ import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.IDisplayPane;
|
||||
import com.raytheon.uf.viz.core.IDisplayPaneContainer;
|
||||
import com.raytheon.uf.viz.core.RecordFactory;
|
||||
|
@ -115,70 +113,63 @@ public class AutoUpdater implements IAlertObserver {
|
|||
|
||||
for (AlertMessage message : alertMessages) {
|
||||
Map<String, Object> attribs = message.decodedAlert;
|
||||
DataTime dataTime = (DataTime) attribs.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
try {
|
||||
// System.out.println("extract took: " + (tZ1 - tZ0));
|
||||
java.util.List<AbstractVizResource<?, ?>> rscList = DataUpdateTree
|
||||
.getInstance().searchTree(attribs);
|
||||
// System.out.println("AutoUpdater found: " + rscList);
|
||||
try {
|
||||
// System.out.println("extract took: " + (tZ1 - tZ0));
|
||||
java.util.List<AbstractVizResource<?, ?>> rscList = DataUpdateTree
|
||||
.getInstance().searchTree(attribs);
|
||||
// System.out.println("AutoUpdater found: " + rscList);
|
||||
|
||||
if (rscList != null && rscList.size() > 0) {
|
||||
if (rscList != null && rscList.size() > 0) {
|
||||
|
||||
for (AbstractVizResource<?, ?> r1 : rscList) {
|
||||
IDescriptor md = r1.getDescriptor();
|
||||
AbstractResourceData resourceData = r1
|
||||
.getResourceData();
|
||||
if (!(resourceData instanceof AbstractRequestableResourceData)
|
||||
|| resourceData.isFrozen())
|
||||
continue;
|
||||
for (AbstractVizResource<?, ?> r1 : rscList) {
|
||||
IDescriptor md = r1.getDescriptor();
|
||||
AbstractResourceData resourceData = r1
|
||||
.getResourceData();
|
||||
if (!(resourceData instanceof AbstractRequestableResourceData)
|
||||
|| resourceData.isFrozen())
|
||||
continue;
|
||||
|
||||
AbstractRequestableResourceData reqResourceData = (AbstractRequestableResourceData) resourceData;
|
||||
AbstractAlertMessageParser parserToUse = null;
|
||||
if ((parserToUse = reqResourceData.getAlertParser()) == null) {
|
||||
parserToUse = defaultParser;
|
||||
AbstractRequestableResourceData reqResourceData = (AbstractRequestableResourceData) resourceData;
|
||||
AbstractAlertMessageParser parserToUse = null;
|
||||
if ((parserToUse = reqResourceData.getAlertParser()) == null) {
|
||||
parserToUse = defaultParser;
|
||||
}
|
||||
Object objectToSend = parserToUse.parseAlertMessage(
|
||||
message, reqResourceData);
|
||||
|
||||
if (objectToSend != null) {
|
||||
if (md.getTimeMatcher() != null) {
|
||||
md.getTimeMatcher().redoTimeMatching(r1);
|
||||
}
|
||||
Object objectToSend = parserToUse
|
||||
.parseAlertMessage(message, reqResourceData);
|
||||
displayList.add(md);
|
||||
|
||||
if (objectToSend != null) {
|
||||
if (md.getTimeMatcher() != null) {
|
||||
md.getTimeMatcher().redoTimeMatching(r1);
|
||||
}
|
||||
displayList.add(md);
|
||||
|
||||
List<Object> list = pdoSendMap
|
||||
.get(reqResourceData);
|
||||
if (list == null) {
|
||||
list = new ArrayList<Object>();
|
||||
pdoSendMap.put(reqResourceData, list);
|
||||
}
|
||||
list.add(objectToSend);
|
||||
|
||||
if (list.size() > 100) {
|
||||
// update with objects
|
||||
Class<?> componentType = list.get(0)
|
||||
.getClass();
|
||||
reqResourceData.update(list
|
||||
.toArray((Object[]) Array
|
||||
.newInstance(componentType,
|
||||
list.size())));
|
||||
list.clear();
|
||||
}
|
||||
List<Object> list = pdoSendMap.get(reqResourceData);
|
||||
if (list == null) {
|
||||
list = new ArrayList<Object>();
|
||||
pdoSendMap.put(reqResourceData, list);
|
||||
}
|
||||
list.add(objectToSend);
|
||||
|
||||
if (list.size() > 100) {
|
||||
// update with objects
|
||||
Class<?> componentType = list.get(0).getClass();
|
||||
reqResourceData.update(list
|
||||
.toArray((Object[]) Array.newInstance(
|
||||
componentType, list.size())));
|
||||
list.clear();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} catch (final Throwable e) {
|
||||
if (errors < MAX_ERRORS) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error performing autoupdate", e);
|
||||
}
|
||||
errors++;
|
||||
}
|
||||
|
||||
} catch (final Throwable e) {
|
||||
if (errors < MAX_ERRORS) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error performing autoupdate", e);
|
||||
}
|
||||
errors++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -26,7 +26,6 @@ import java.util.Map;
|
|||
|
||||
import com.raytheon.edex.util.Util;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.uf.viz.core.rsc.URICatalog;
|
||||
import com.raytheon.uf.viz.core.rsc.URICatalog.IURIRefreshCallback;
|
||||
|
@ -66,29 +65,25 @@ public class MenuUpdater implements IAlertObserver {
|
|||
Map<String, Object> attribs = new HashMap<String, Object>(
|
||||
message.decodedAlert);
|
||||
DataTime dataTimeStr = (DataTime) attribs.get("dataTime");
|
||||
|
||||
if (dataTimeStr.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
|
||||
if (dataTimeStr != null) {
|
||||
// Update the date catalog
|
||||
List<List<IURIRefreshCallback>> dataTimeList = URICatalog
|
||||
.getInstance().searchTree(attribs);
|
||||
if (dataTimeStr != null) {
|
||||
// Update the date catalog
|
||||
List<List<IURIRefreshCallback>> dataTimeList = URICatalog
|
||||
.getInstance().searchTree(attribs);
|
||||
|
||||
// If we found listeners, update them
|
||||
if (dataTimeList != null) {
|
||||
DataTime dataTime = dataTimeStr.clone();
|
||||
// If we found listeners, update them
|
||||
if (dataTimeList != null) {
|
||||
DataTime dataTime = dataTimeStr.clone();
|
||||
|
||||
for (List<IURIRefreshCallback> refreshList : dataTimeList) {
|
||||
for (IURIRefreshCallback callback : refreshList) {
|
||||
if (callback != null) {
|
||||
callback.updateTime(dataTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (List<IURIRefreshCallback> refreshList : dataTimeList) {
|
||||
for (IURIRefreshCallback callback : refreshList) {
|
||||
if (callback != null) {
|
||||
callback.updateTime(dataTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,8 +22,6 @@ package com.raytheon.viz.aviation.monitor;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.viz.alerts.IAlertObserver;
|
||||
import com.raytheon.viz.aviation.guidance.EtaViewer;
|
||||
|
@ -66,23 +64,18 @@ public class EtaBufMonitorObserver extends MonitorObserver implements
|
|||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
ArrayList<String> siteIDs = new ArrayList<String>();
|
||||
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
DataTime dataTime = (DataTime) alert.decodedAlert.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
|
||||
String siteID = (String) alert.decodedAlert
|
||||
.get("location.stationId");
|
||||
if (!siteIDs.contains(siteID)) {
|
||||
for (TafSiteComp tsc : dialog.getTafSiteComps()) {
|
||||
if (tsc.getStationName().equals(siteID)) {
|
||||
siteIDs.add(siteID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
String siteID = (String) alert.decodedAlert
|
||||
.get("location.stationId");
|
||||
if (!siteIDs.contains(siteID)) {
|
||||
for (TafSiteComp tsc : dialog.getTafSiteComps()) {
|
||||
if (tsc.getStationName().equals(siteID)) {
|
||||
siteIDs.add(siteID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (siteIDs.size() > 0) {
|
||||
for (ViewerTab tab : dialog.getViewerTabList()) {
|
||||
|
|
|
@ -22,8 +22,6 @@ package com.raytheon.viz.aviation.monitor;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.viz.alerts.IAlertObserver;
|
||||
import com.raytheon.viz.aviation.guidance.MosViewer;
|
||||
|
@ -66,22 +64,18 @@ public class EtaMonitorObserver extends MonitorObserver implements
|
|||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
ArrayList<String> siteIDs = new ArrayList<String>();
|
||||
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
DataTime dataTime = (DataTime) alert.decodedAlert.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
String siteID = (String) alert.decodedAlert
|
||||
.get("location.stationId");
|
||||
if (!siteIDs.contains(siteID)) {
|
||||
for (TafSiteComp tsc : dialog.getTafSiteComps()) {
|
||||
if (tsc.getStationName().equals(siteID)) {
|
||||
siteIDs.add(siteID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
String siteID = (String) alert.decodedAlert
|
||||
.get("location.stationId");
|
||||
if (!siteIDs.contains(siteID)) {
|
||||
for (TafSiteComp tsc : dialog.getTafSiteComps()) {
|
||||
if (tsc.getStationName().equals(siteID)) {
|
||||
siteIDs.add(siteID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (siteIDs.size() > 0) {
|
||||
for (ViewerTab tab : dialog.getViewerTabList()) {
|
||||
|
|
|
@ -22,8 +22,6 @@ package com.raytheon.viz.aviation.monitor;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.viz.alerts.IAlertObserver;
|
||||
import com.raytheon.viz.aviation.guidance.MosViewer;
|
||||
|
@ -67,22 +65,18 @@ public class GfsLampMonitorObserver extends MonitorObserver implements
|
|||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
ArrayList<String> siteIDs = new ArrayList<String>();
|
||||
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
DataTime dataTime = (DataTime) alert.decodedAlert.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
String siteID = (String) alert.decodedAlert
|
||||
.get("location.stationId");
|
||||
if (!siteIDs.contains(siteID)) {
|
||||
for (TafSiteComp tsc : dialog.getTafSiteComps()) {
|
||||
if (tsc.getStationName().equals(siteID)) {
|
||||
siteIDs.add(siteID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
String siteID = (String) alert.decodedAlert
|
||||
.get("location.stationId");
|
||||
if (!siteIDs.contains(siteID)) {
|
||||
for (TafSiteComp tsc : dialog.getTafSiteComps()) {
|
||||
if (tsc.getStationName().equals(siteID)) {
|
||||
siteIDs.add(siteID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (siteIDs.size() > 0) {
|
||||
for (ViewerTab tab : dialog.getViewerTabList()) {
|
||||
|
|
|
@ -22,8 +22,6 @@ package com.raytheon.viz.aviation.monitor;
|
|||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.viz.alerts.IAlertObserver;
|
||||
import com.raytheon.viz.aviation.guidance.MosViewer;
|
||||
|
@ -66,22 +64,18 @@ public class GfsMonitorObserver extends MonitorObserver implements
|
|||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
ArrayList<String> siteIDs = new ArrayList<String>();
|
||||
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
DataTime dataTime = (DataTime) alert.decodedAlert.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
String siteID = (String) alert.decodedAlert
|
||||
.get("location.stationId");
|
||||
if (!siteIDs.contains(siteID)) {
|
||||
for (TafSiteComp tsc : dialog.getTafSiteComps()) {
|
||||
if (tsc.getStationName().equals(siteID)) {
|
||||
siteIDs.add(siteID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
String siteID = (String) alert.decodedAlert
|
||||
.get("location.stationId");
|
||||
if (!siteIDs.contains(siteID)) {
|
||||
for (TafSiteComp tsc : dialog.getTafSiteComps()) {
|
||||
if (tsc.getStationName().equals(siteID)) {
|
||||
siteIDs.add(siteID);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (siteIDs.size() > 0) {
|
||||
for (ViewerTab tab : dialog.getViewerTabList()) {
|
||||
|
|
|
@ -24,8 +24,6 @@ import java.util.Map;
|
|||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import com.raytheon.uf.common.dataplugin.grib.GribRecord;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.viz.alerts.IAlertObserver;
|
||||
import com.raytheon.viz.alerts.observers.ProductAlertObserver;
|
||||
|
@ -87,11 +85,7 @@ public class GribRequestableDataFactory implements IAlertObserver {
|
|||
@Override
|
||||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
for (AlertMessage mess : alertMessages) {
|
||||
DataTime dataTime = (DataTime) mess.decodedAlert.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
requestableDataMap.remove(mess.dataURI);
|
||||
}
|
||||
}
|
||||
}
|
||||
requestableDataMap.remove(mess.dataURI);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -39,7 +39,6 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
|
|||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.derivparam.library.DerivParamMethod;
|
||||
|
@ -207,107 +206,99 @@ public class GridUpdater implements IAlertObserver {
|
|||
* .core.alerts.AlertMessage[])
|
||||
*/
|
||||
@Override
|
||||
public synchronized void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
Set<String> datauris = new HashSet<String>();
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
DataTime dataTime = (DataTime) alert.decodedAlert.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
public synchronized void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
Set<String> datauris = new HashSet<String>();
|
||||
for (AlertMessage alert : alertMessages) {
|
||||
if (myUpdates.remove(alert.dataURI)) {
|
||||
// This updater triggered this alert, if it processes it now
|
||||
// we
|
||||
// could do this forever
|
||||
continue;
|
||||
}
|
||||
GribMapKey updateKey = new GribMapKey(alert.decodedAlert);
|
||||
GribTimeCache.getInstance().clearTimes(updateKey);
|
||||
LevelNode lNode = null;
|
||||
try {
|
||||
Level level = LevelFactory.getInstance().getLevel(
|
||||
updateKey.masterLevel, updateKey.levelone,
|
||||
updateKey.leveltwo);
|
||||
lNode = inventory.getNode(updateKey.modelName,
|
||||
updateKey.parameter, level);
|
||||
} catch (CommunicationException e) {
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(),
|
||||
e);
|
||||
}
|
||||
|
||||
if (myUpdates.remove(alert.dataURI)) {
|
||||
// This updater triggered this alert, if it processes it now
|
||||
// we
|
||||
// could do this forever
|
||||
continue;
|
||||
}
|
||||
GribMapKey updateKey = new GribMapKey(alert.decodedAlert);
|
||||
GribTimeCache.getInstance().clearTimes(updateKey);
|
||||
LevelNode lNode = null;
|
||||
try {
|
||||
Level level = LevelFactory.getInstance().getLevel(
|
||||
updateKey.masterLevel, updateKey.levelone,
|
||||
updateKey.leveltwo);
|
||||
lNode = inventory.getNode(updateKey.modelName,
|
||||
updateKey.parameter, level);
|
||||
} catch (CommunicationException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
}
|
||||
|
||||
if (lNode == null) {
|
||||
inventory.reinitTree();
|
||||
// System.out.println(alert.dataURI);
|
||||
// System.out.println("LevelId=" + level.getId());
|
||||
} else if (!(lNode instanceof GribRequestableLevelNode)) {
|
||||
if (lNode instanceof OrLevelNode) {
|
||||
DerivParamMethod method = ((OrLevelNode) lNode)
|
||||
.getMethod();
|
||||
// Null means it is an alias model and supplement means
|
||||
// there exists a true GribNode buried under the or
|
||||
// node
|
||||
if (method == null
|
||||
|| !method.getName().equals("Supplement")) {
|
||||
inventory.reinitTree();
|
||||
// System.out.println(((AbstractDerivedLevelNode)
|
||||
// lNode)
|
||||
// .getModelName());
|
||||
}
|
||||
} else {
|
||||
inventory.reinitTree();
|
||||
// System.out.println(alert.dataURI);
|
||||
// System.out.println(lNode.getClass());
|
||||
}
|
||||
}
|
||||
Set<UpdateValue> set = updateMap.get(updateKey);
|
||||
if (set == null) {
|
||||
continue;
|
||||
}
|
||||
for (UpdateValue value : set) {
|
||||
GribRecord fakeRec = new GribRecord();
|
||||
fakeRec.setPluginName("grib");
|
||||
Object obj = alert.decodedAlert.get("dataTime");
|
||||
if (!(obj instanceof DataTime)) {
|
||||
throw new IllegalArgumentException(
|
||||
"Error processing Alerts: "
|
||||
+ obj.toString()
|
||||
+ " cannot be cast to a DataTime because it is a "
|
||||
+ obj.getClass().getSimpleName());
|
||||
}
|
||||
DataTime time = (DataTime) obj;
|
||||
fakeRec.setDataTime(new DataTime(time.getRefTime(), time
|
||||
.getFcstTime() - value.timeOffset));
|
||||
GribModel modelInfo = new GribModel();
|
||||
modelInfo.setModelName(value.node.getModelName());
|
||||
modelInfo.setParameterAbbreviation(value.node.getDesc()
|
||||
.getAbbreviation());
|
||||
modelInfo.setLevel(value.node.getLevel());
|
||||
if (value.node instanceof GatherLevelNode) {
|
||||
modelInfo.setPerturbationNumber(null);
|
||||
} else {
|
||||
modelInfo
|
||||
.setPerturbationNumber((Integer) alert.decodedAlert
|
||||
.get(GridInventory.PERT_QUERY));
|
||||
}
|
||||
// do I need to set this?
|
||||
modelInfo.setTypeEnsemble(null);
|
||||
fakeRec.setModelInfo(modelInfo);
|
||||
try {
|
||||
fakeRec.constructDataURI();
|
||||
datauris.add(fakeRec.getDataURI());
|
||||
} catch (PluginException e) {
|
||||
statusHandler
|
||||
.handle(Priority.PROBLEM,
|
||||
"Unable to generate updates for derived product",
|
||||
e);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
System.out.println("Grid after SIMULATED TIME: "+dataTime);
|
||||
}
|
||||
}
|
||||
myUpdates.addAll(datauris);
|
||||
ProductAlertObserver.processDerivedAlerts(datauris);
|
||||
}
|
||||
if (lNode == null) {
|
||||
inventory.reinitTree();
|
||||
// System.out.println(alert.dataURI);
|
||||
// System.out.println("LevelId=" + level.getId());
|
||||
} else if (!(lNode instanceof GribRequestableLevelNode)) {
|
||||
if (lNode instanceof OrLevelNode) {
|
||||
DerivParamMethod method = ((OrLevelNode) lNode).getMethod();
|
||||
// Null means it is an alias model and supplement means
|
||||
// there exists a true GribNode buried under the or
|
||||
// node
|
||||
if (method == null
|
||||
|| !method.getName().equals("Supplement")) {
|
||||
inventory.reinitTree();
|
||||
// System.out.println(((AbstractDerivedLevelNode)
|
||||
// lNode)
|
||||
// .getModelName());
|
||||
}
|
||||
} else {
|
||||
inventory.reinitTree();
|
||||
// System.out.println(alert.dataURI);
|
||||
// System.out.println(lNode.getClass());
|
||||
}
|
||||
}
|
||||
Set<UpdateValue> set = updateMap.get(updateKey);
|
||||
if (set == null) {
|
||||
continue;
|
||||
}
|
||||
for (UpdateValue value : set) {
|
||||
GribRecord fakeRec = new GribRecord();
|
||||
fakeRec.setPluginName("grib");
|
||||
Object obj = alert.decodedAlert.get("dataTime");
|
||||
if (!(obj instanceof DataTime)) {
|
||||
throw new IllegalArgumentException(
|
||||
"Error processing Alerts: "
|
||||
+ obj.toString()
|
||||
+ " cannot be cast to a DataTime because it is a "
|
||||
+ obj.getClass().getSimpleName());
|
||||
}
|
||||
DataTime time = (DataTime) obj;
|
||||
fakeRec.setDataTime(new DataTime(time.getRefTime(), time
|
||||
.getFcstTime() - value.timeOffset));
|
||||
GribModel modelInfo = new GribModel();
|
||||
modelInfo.setModelName(value.node.getModelName());
|
||||
modelInfo.setParameterAbbreviation(value.node.getDesc()
|
||||
.getAbbreviation());
|
||||
modelInfo.setLevel(value.node.getLevel());
|
||||
if (value.node instanceof GatherLevelNode) {
|
||||
modelInfo.setPerturbationNumber(null);
|
||||
} else {
|
||||
modelInfo
|
||||
.setPerturbationNumber((Integer) alert.decodedAlert
|
||||
.get(GridInventory.PERT_QUERY));
|
||||
}
|
||||
// do I need to set this?
|
||||
modelInfo.setTypeEnsemble(null);
|
||||
fakeRec.setModelInfo(modelInfo);
|
||||
try {
|
||||
fakeRec.constructDataURI();
|
||||
datauris.add(fakeRec.getDataURI());
|
||||
} catch (PluginException e) {
|
||||
statusHandler
|
||||
.handle(Priority.PROBLEM,
|
||||
"Unable to generate updates for derived product",
|
||||
e);
|
||||
}
|
||||
}
|
||||
}
|
||||
myUpdates.addAll(datauris);
|
||||
ProductAlertObserver.processDerivedAlerts(datauris);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
|
|
|
@ -20,7 +20,6 @@ import com.raytheon.uf.common.status.IUFStatusHandler;
|
|||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.viz.alerts.IAlertObserver;
|
||||
import com.raytheon.viz.alerts.observers.ProductAlertObserver;
|
||||
|
@ -129,68 +128,60 @@ public class RadarUpdater implements IAlertObserver {
|
|||
return;
|
||||
}
|
||||
Set<String> datauris = new HashSet<String>();
|
||||
for (AlertMessage alertMessage : alertMessages) {
|
||||
DataTime dataTime = (DataTime) alertMessage.decodedAlert
|
||||
.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
String icao = alertMessage.decodedAlert.get(
|
||||
RadarAdapter.ICAO_QUERY).toString();
|
||||
if (icao == null
|
||||
|| !icao.equalsIgnoreCase(configuredRadar.getRdaId())) {
|
||||
continue;
|
||||
}
|
||||
globalTimes = null;
|
||||
Object obj = alertMessage.decodedAlert
|
||||
.get(RadarAdapter.PRODUCT_CODE_QUERY);
|
||||
if (obj == null || !(obj instanceof Integer)) {
|
||||
continue;
|
||||
}
|
||||
Integer productCode = (Integer) obj;
|
||||
String paramAbbrev = RadarProductCodeMapping.getInstance()
|
||||
.getParameterAbbrev(productCode);
|
||||
if (paramAbbrev == null) {
|
||||
continue;
|
||||
}
|
||||
obj = alertMessage.decodedAlert.get("dataTime");
|
||||
if (obj == null || !(obj instanceof DataTime)) {
|
||||
continue;
|
||||
}
|
||||
DataTime time = (DataTime) obj;
|
||||
obj = alertMessage.decodedAlert.get(RadarAdapter.TILT_QUERY);
|
||||
if (obj == null || !(obj instanceof Double)) {
|
||||
continue;
|
||||
}
|
||||
Double elevationAngle = (Double) obj;
|
||||
cache.remove(new CacheKey(productCode, elevationAngle));
|
||||
Level level = null;
|
||||
try {
|
||||
level = LevelFactory.getInstance()
|
||||
.getLevel(RadarAdapter.CUBE_MASTER_LEVEL_NAME,
|
||||
elevationAngle);
|
||||
} catch (CommunicationException e1) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e1.getLocalizedMessage(), e1);
|
||||
}
|
||||
GribRecord fakeRec = new GribRecord();
|
||||
fakeRec.setPluginName("grib");
|
||||
fakeRec.setDataTime(time);
|
||||
GribModel modelInfo = new GribModel();
|
||||
modelInfo.setModelName(RadarAdapter.RADAR_SOURCE);
|
||||
modelInfo.setParameterAbbreviation(paramAbbrev);
|
||||
modelInfo.setLevel(level);
|
||||
modelInfo.setTypeEnsemble(null);
|
||||
fakeRec.setModelInfo(modelInfo);
|
||||
try {
|
||||
fakeRec.constructDataURI();
|
||||
datauris.add(fakeRec.getDataURI());
|
||||
} catch (PluginException e) {
|
||||
statusHandler
|
||||
.handle(Priority.PROBLEM,
|
||||
"Unable to generate updates for derived product",
|
||||
e);
|
||||
}
|
||||
}
|
||||
for (AlertMessage alertMessage : alertMessages) {
|
||||
String icao = alertMessage.decodedAlert
|
||||
.get(RadarAdapter.ICAO_QUERY).toString();
|
||||
if (icao == null
|
||||
|| !icao.equalsIgnoreCase(configuredRadar.getRdaId())) {
|
||||
continue;
|
||||
}
|
||||
globalTimes = null;
|
||||
Object obj = alertMessage.decodedAlert
|
||||
.get(RadarAdapter.PRODUCT_CODE_QUERY);
|
||||
if (obj == null || !(obj instanceof Integer)) {
|
||||
continue;
|
||||
}
|
||||
Integer productCode = (Integer) obj;
|
||||
String paramAbbrev = RadarProductCodeMapping.getInstance()
|
||||
.getParameterAbbrev(productCode);
|
||||
if (paramAbbrev == null) {
|
||||
continue;
|
||||
}
|
||||
obj = alertMessage.decodedAlert.get("dataTime");
|
||||
if (obj == null || !(obj instanceof DataTime)) {
|
||||
continue;
|
||||
}
|
||||
DataTime time = (DataTime) obj;
|
||||
obj = alertMessage.decodedAlert.get(RadarAdapter.TILT_QUERY);
|
||||
if (obj == null || !(obj instanceof Double)) {
|
||||
continue;
|
||||
}
|
||||
Double elevationAngle = (Double) obj;
|
||||
cache.remove(new CacheKey(productCode, elevationAngle));
|
||||
Level level = null;
|
||||
try {
|
||||
level = LevelFactory.getInstance().getLevel(
|
||||
RadarAdapter.CUBE_MASTER_LEVEL_NAME, elevationAngle);
|
||||
} catch (CommunicationException e1) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e1.getLocalizedMessage(), e1);
|
||||
}
|
||||
GribRecord fakeRec = new GribRecord();
|
||||
fakeRec.setPluginName("grib");
|
||||
fakeRec.setDataTime(time);
|
||||
GribModel modelInfo = new GribModel();
|
||||
modelInfo.setModelName(RadarAdapter.RADAR_SOURCE);
|
||||
modelInfo.setParameterAbbreviation(paramAbbrev);
|
||||
modelInfo.setLevel(level);
|
||||
modelInfo.setTypeEnsemble(null);
|
||||
fakeRec.setModelInfo(modelInfo);
|
||||
try {
|
||||
fakeRec.constructDataURI();
|
||||
datauris.add(fakeRec.getDataURI());
|
||||
} catch (PluginException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Unable to generate updates for derived product", e);
|
||||
}
|
||||
}
|
||||
ProductAlertObserver.processDerivedAlerts(datauris);
|
||||
}
|
||||
|
|
|
@ -31,8 +31,6 @@ import com.raytheon.uf.common.pointdata.GetPointDataTreeRequest;
|
|||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.requests.ThriftClient;
|
||||
|
@ -103,30 +101,25 @@ public class PointDataInventory extends AbstractPointDataInventory implements
|
|||
}
|
||||
|
||||
@Override
|
||||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
for (AlertMessage message : alertMessages) {
|
||||
DataTime dataTime = (DataTime) message.decodedAlert.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
String pluginName = message.decodedAlert.get(PLUGIN_NAME)
|
||||
.toString();
|
||||
String source = pluginName;
|
||||
String typeKey = getTypeKey(pluginName);
|
||||
if (!PLUGIN_NAME.equals(typeKey)) {
|
||||
source += message.decodedAlert.get(typeKey).toString();
|
||||
}
|
||||
public void alertArrived(Collection<AlertMessage> alertMessages) {
|
||||
for (AlertMessage message : alertMessages) {
|
||||
String pluginName = message.decodedAlert.get(PLUGIN_NAME)
|
||||
.toString();
|
||||
String source = pluginName;
|
||||
String typeKey = getTypeKey(pluginName);
|
||||
if (!PLUGIN_NAME.equals(typeKey)) {
|
||||
source += message.decodedAlert.get(typeKey).toString();
|
||||
}
|
||||
|
||||
if (getAllSources() != null
|
||||
&& !getAllSources().contains(source)) {
|
||||
try {
|
||||
initTree(derParLibrary);
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (getAllSources() != null && !getAllSources().contains(source)) {
|
||||
try {
|
||||
initTree(derParLibrary);
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -50,7 +50,9 @@ import com.raytheon.uf.common.time.SimulatedTime;
|
|||
public class TimeQueryRequest implements IServerRequest {
|
||||
|
||||
public TimeQueryRequest() {
|
||||
this.simDate = SimulatedTime.getSystemTime().getTime();
|
||||
if (!SimulatedTime.getSystemTime().isRealTime()) {
|
||||
this.simDate = SimulatedTime.getSystemTime().getTime();
|
||||
}
|
||||
}
|
||||
|
||||
@DynamicSerializeElement
|
||||
|
|
|
@ -94,16 +94,19 @@ public class TimeQueryHandler implements IRequestHandler<TimeQueryRequest> {
|
|||
// getting all times
|
||||
DatabaseQuery query = buildQuery(classname, map, true);
|
||||
List<DataTime> latestTime = runQuery(dao, query);
|
||||
RequestConstraint timeRC = new RequestConstraint(null,
|
||||
ConstraintType.LESS_THAN);
|
||||
map.put(REF_TIME, timeRC);
|
||||
if (!map.containsKey(REF_TIME)) {
|
||||
RequestConstraint timeRC = new RequestConstraint(null,
|
||||
ConstraintType.LESS_THAN);
|
||||
map.put(REF_TIME, timeRC);
|
||||
}
|
||||
times = new ArrayList<DataTime>(50);
|
||||
while (latestTime != null && latestTime.size() != 0) {
|
||||
DataTime normalTime = binOffset.getNormalizedTime(latestTime
|
||||
.get(0));
|
||||
times.add(normalTime);
|
||||
Date date = binOffset.getTimeRange(normalTime).getStart();
|
||||
timeRC.setConstraintValue(new DataTime(date).toString());
|
||||
map.get(REF_TIME).setConstraintValue(
|
||||
new DataTime(date).toString());
|
||||
query = buildQuery(classname, map, true);
|
||||
latestTime = runQuery(dao, query);
|
||||
}
|
||||
|
@ -112,17 +115,6 @@ public class TimeQueryHandler implements IRequestHandler<TimeQueryRequest> {
|
|||
request.isMaxQuery());
|
||||
times = runQuery(dao, query);
|
||||
}
|
||||
|
||||
// second check for some complex plugin requests that get by the simDate check in the query
|
||||
ArrayList<DataTime> removes = new ArrayList<DataTime>();
|
||||
for (DataTime time: times) {
|
||||
if (time.getRefTime().after(request.getSimDate())) {
|
||||
removes.add(time);
|
||||
}
|
||||
}
|
||||
if (removes.size() > 0) {
|
||||
times.removeAll(removes);
|
||||
}
|
||||
|
||||
return times;
|
||||
}
|
||||
|
@ -157,7 +149,7 @@ public class TimeQueryHandler implements IRequestHandler<TimeQueryRequest> {
|
|||
constraint.getConstraintType().getOperand(), classname);
|
||||
}
|
||||
|
||||
//System.out.println("TimeQuery: " + query.createHQLQuery());
|
||||
// System.out.println("TimeQuery: " + query.createHQLQuery());
|
||||
return query;
|
||||
}
|
||||
|
||||
|
|
|
@ -31,8 +31,6 @@ import com.raytheon.uf.common.dataplugin.PluginDataObject;
|
|||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
import com.raytheon.uf.common.time.DataTime;
|
||||
import com.raytheon.uf.common.time.SimulatedTime;
|
||||
import com.raytheon.uf.viz.core.RecordFactory;
|
||||
import com.raytheon.uf.viz.core.alerts.AbstractAlertMessageParser;
|
||||
import com.raytheon.uf.viz.core.alerts.AlertMessage;
|
||||
|
@ -82,9 +80,6 @@ public class NcAutoUpdater implements IAlertObserver {
|
|||
Object objectToSend = null;
|
||||
Map<String, Object> attribs = new HashMap<String, Object>(
|
||||
message.decodedAlert);
|
||||
DataTime dataTime = (DataTime) attribs.get("dataTime");
|
||||
if (dataTime.getRefTime().before(
|
||||
SimulatedTime.getSystemTime().getTime())) {
|
||||
String dataURI = message.dataURI;
|
||||
if (reqResourceData.isUpdatingOnMetadataOnly()) {
|
||||
PluginDataObject record = RecordFactory.getInstance()
|
||||
|
@ -95,7 +90,6 @@ public class NcAutoUpdater implements IAlertObserver {
|
|||
attribs.put("dataURI", message.dataURI);
|
||||
objectToSend = Loader.loadData(attribs);
|
||||
}
|
||||
}
|
||||
return objectToSend;
|
||||
}
|
||||
};
|
||||
|
|
Loading…
Add table
Reference in a new issue