Issue #1708 Fix redundant excution of evaluateQuery.
Change-Id: Ic41ac2b455755a59c189fa5ec0ca63b45bfca80a Former-commit-id:274ce762d8
[formerlya5a273c1c2
[formerly 2528719c05a9c57ca56a6d6e56ed3ae853d5b860]] Former-commit-id:a5a273c1c2
Former-commit-id:2212f333a3
This commit is contained in:
parent
547f0d086f
commit
db805e2097
4 changed files with 51 additions and 104 deletions
|
@ -57,6 +57,7 @@ import com.raytheon.viz.gfe.rsc.GFEResource;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Nov 14, 2012 mschenke Initial creation
|
||||
* Feb 26, 2013 #1708 randerso Fixed double notification for time change
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -162,6 +163,9 @@ public class GFETimeMatcher extends AbstractTimeMatcher {
|
|||
FramesInfo currInfo = descriptor.getFramesInfo();
|
||||
int currIdx = currInfo.getFrameIndex();
|
||||
DataTime currTime = currInfo.getCurrentFrame();
|
||||
if (selectedDate != null) {
|
||||
currTime = new DataTime(selectedDate);
|
||||
}
|
||||
|
||||
// Create descriptor times, for each resource, time match against them
|
||||
DataTime[] descriptorTimes = calculateDescriptorTimes(descriptor,
|
||||
|
|
|
@ -26,20 +26,21 @@ import com.raytheon.uf.common.dataplugin.gfe.grid.Grid2DFloat;
|
|||
import com.raytheon.uf.common.dataplugin.gfe.reference.GroupID;
|
||||
import com.raytheon.uf.common.dataplugin.gfe.reference.ReferenceData;
|
||||
import com.raytheon.uf.common.dataplugin.gfe.reference.ReferenceID;
|
||||
import com.raytheon.uf.common.python.concurrent.IPythonJobListener;
|
||||
import com.raytheon.viz.gfe.core.msgs.IEditAreaGroupInvChangedListener;
|
||||
import com.raytheon.viz.gfe.core.msgs.IReferenceSetChangedListener;
|
||||
import com.raytheon.viz.gfe.core.msgs.IReferenceSetIDChangedListener;
|
||||
import com.raytheon.viz.gfe.core.msgs.IReferenceSetInvChangedListener;
|
||||
|
||||
/**
|
||||
* TODO Add Description
|
||||
* Public interface for ReferenceSetManager
|
||||
*
|
||||
* <pre>
|
||||
* SOFTWARE HISTORY
|
||||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Apr 2, 2008 randerso Initial creation
|
||||
* 02/14/2013 #1506 mnash Move away from using QueryScript on the UI thread
|
||||
* 02/26/2013 #1708 randerso Remove evaluateRefSet from public interface
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -211,6 +212,7 @@ public interface IReferenceSetManager {
|
|||
*/
|
||||
public abstract Grid2DBit mySiteGridpoints();
|
||||
|
||||
@Override
|
||||
public abstract String toString();
|
||||
|
||||
/**
|
||||
|
@ -307,20 +309,6 @@ public interface IReferenceSetManager {
|
|||
|
||||
public void deleteGroup(String groupName);
|
||||
|
||||
/**
|
||||
* Force the active ref set to be re-evaluated asynchronously.
|
||||
*
|
||||
* @param listener
|
||||
*/
|
||||
public void evaluateActiveRefSet(IPythonJobListener<ReferenceData> listener);
|
||||
|
||||
/**
|
||||
* Force the active ref set to be re-evalutated
|
||||
*
|
||||
* @return the active refersence set
|
||||
*/
|
||||
public ReferenceData evaluateActiveRefSet();
|
||||
|
||||
/**
|
||||
* Dispose of this instance
|
||||
*/
|
||||
|
|
|
@ -37,8 +37,6 @@ import java.util.Map;
|
|||
import java.util.Set;
|
||||
import java.util.WeakHashMap;
|
||||
|
||||
import jep.JepException;
|
||||
|
||||
import org.eclipse.core.runtime.IStatus;
|
||||
import org.eclipse.core.runtime.Status;
|
||||
import org.eclipse.swt.SWT;
|
||||
|
@ -108,6 +106,7 @@ import com.vividsolutions.jts.geom.Envelope;
|
|||
* Apr 1, 2008 #1053 randerso Initial creation
|
||||
* 02/14/2013 #1506 mnash Move QueryScript to use new Python concurrency implementation
|
||||
* 02/12/2013 #1597 randerso Improved error message for exceptions evaluating queries
|
||||
* 02/26/2013 #1708 randerso Removed no longer needed near duplicate methods
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -185,7 +184,7 @@ public class ReferenceSetManager implements IReferenceSetManager,
|
|||
|
||||
private final ArrayList<String> historyStack;
|
||||
|
||||
private PythonJobCoordinator coordinator;
|
||||
private PythonJobCoordinator<QueryScript> coordinator;
|
||||
|
||||
/**
|
||||
* Set the wait cursor on or off
|
||||
|
@ -1321,22 +1320,30 @@ public class ReferenceSetManager implements IReferenceSetManager,
|
|||
* com.raytheon.viz.gfe.core.IReferenceSetManager.RefSetMode)
|
||||
*/
|
||||
@Override
|
||||
public void incomingRefSet(ReferenceData refData, RefSetMode mode) {
|
||||
public void incomingRefSet(ReferenceData refData, final RefSetMode mode) {
|
||||
// Evaluate the Incoming refData if necessary
|
||||
// Then, change the active Reference Set using the given mode.
|
||||
ReferenceData ref = null;
|
||||
if (refData.isQuery()) {
|
||||
String query = refData.getQuery();
|
||||
try {
|
||||
ref = evaluateQuery(query);
|
||||
ref.setQuery(query);
|
||||
} catch (JepException e) {
|
||||
return;
|
||||
}
|
||||
final String query = refData.getQuery();
|
||||
IPythonJobListener<ReferenceData> listener = new IPythonJobListener<ReferenceData>() {
|
||||
@Override
|
||||
public void jobFailed(Throwable e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Unable to run QueryScript job", e);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void jobFinished(ReferenceData result) {
|
||||
result.setQuery(query);
|
||||
setRefSet(result, mode);
|
||||
}
|
||||
};
|
||||
evaluateQuery(query, listener);
|
||||
} else {
|
||||
ref = refData;
|
||||
setRefSet(ref, mode);
|
||||
}
|
||||
setRefSet(ref, mode);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1714,24 +1721,10 @@ public class ReferenceSetManager implements IReferenceSetManager,
|
|||
sendEditAreaGroupInvChanged();
|
||||
}
|
||||
|
||||
private ReferenceData evaluateQuery(String query) throws JepException {
|
||||
private void evaluateQuery(String query,
|
||||
IPythonJobListener<ReferenceData> listener) {
|
||||
Map<String, Object> argMap = new HashMap<String, Object>();
|
||||
argMap.put("expression", query);
|
||||
|
||||
IPythonExecutor<QueryScript, ReferenceData> executor = new QueryScriptExecutor(
|
||||
"evaluate", argMap);
|
||||
ReferenceData newRef = null;
|
||||
try {
|
||||
newRef = (ReferenceData) coordinator.submitSyncJob(executor);
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to submit job to ExecutorService", e);
|
||||
}
|
||||
return newRef;
|
||||
}
|
||||
|
||||
private void evaluateQuery(String query, IPythonJobListener<?> listener) {
|
||||
Map<String, Object> argMap = new HashMap<String, Object>();
|
||||
argMap.put("expression", query);
|
||||
|
||||
IPythonExecutor<QueryScript, ReferenceData> executor = new QueryScriptExecutor(
|
||||
|
@ -1753,7 +1746,7 @@ public class ReferenceSetManager implements IReferenceSetManager,
|
|||
argMap);
|
||||
int result = 0;
|
||||
try {
|
||||
result = (Integer) coordinator.submitSyncJob(executor);
|
||||
result = coordinator.submitSyncJob(executor);
|
||||
} catch (Exception e) {
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to submit job to ExecutorService", e);
|
||||
|
@ -1762,8 +1755,7 @@ public class ReferenceSetManager implements IReferenceSetManager,
|
|||
return result != 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void evaluateActiveRefSet(IPythonJobListener<ReferenceData> listener) {
|
||||
private void evaluateActiveRefSet(IPythonJobListener<ReferenceData> listener) {
|
||||
ReferenceData active = getActiveRefSet();
|
||||
if (active.isQuery()) {
|
||||
// Re-evaluate the activeRefSet
|
||||
|
@ -1775,27 +1767,6 @@ public class ReferenceSetManager implements IReferenceSetManager,
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ReferenceData evaluateActiveRefSet() {
|
||||
// If activeRefSet is a query, re-evaluate it
|
||||
ReferenceData active = getActiveRefSet();
|
||||
if (active.isQuery()) {
|
||||
// Re-evaluate the activeRefSet
|
||||
try {
|
||||
ReferenceData newRef = evaluateQuery(active.getQuery());
|
||||
if (!newRef.getGrid().equals(active.getGrid())) {
|
||||
setActiveRefSet(newRef);
|
||||
}
|
||||
} catch (JepException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
"Error evaluating query \"" + active.getQuery()
|
||||
+ "\" for " + active.getId().getName(), e);
|
||||
}
|
||||
}
|
||||
|
||||
return getActiveRefSet();
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
|
|
|
@ -28,7 +28,6 @@ import com.raytheon.uf.common.dataplugin.gfe.reference.ReferenceData.CoordinateT
|
|||
import com.raytheon.uf.common.geospatial.MapUtil;
|
||||
import com.raytheon.uf.common.geospatial.ReferencedGeometry;
|
||||
import com.raytheon.uf.common.geospatial.ReferencedObject.Type;
|
||||
import com.raytheon.uf.common.python.concurrent.IPythonJobListener;
|
||||
import com.raytheon.uf.common.status.IUFStatusHandler;
|
||||
import com.raytheon.uf.common.status.UFStatus;
|
||||
import com.raytheon.uf.common.status.UFStatus.Priority;
|
||||
|
@ -61,7 +60,8 @@ import com.vividsolutions.jts.geom.MultiPolygon;
|
|||
* Date Ticket# Engineer Description
|
||||
* ------------ ---------- ----------- --------------------------
|
||||
* Mar 27, 2008 #1053 randerso Initial creation
|
||||
* 2/14/2013 mnash Use the new Python concurrency for QueryScript
|
||||
* 02/14/2013 #1506 mnash Use the new Python concurrency for QueryScript
|
||||
* 02/26/2013 #1708 randerso Changed to not evaluate the ref set
|
||||
*
|
||||
* </pre>
|
||||
*
|
||||
|
@ -154,46 +154,30 @@ public class GFEReferenceSetResource extends
|
|||
shadedShape = target.createShadedShape(false,
|
||||
this.descriptor.getGridGeometry(), true);
|
||||
|
||||
JTSCompiler jtsCompiler = new JTSCompiler(shadedShape, outlineShape,
|
||||
this.descriptor);
|
||||
|
||||
this.needsUpdate = false;
|
||||
ReferenceData refData = this.refSetMgr.getActiveRefSet();
|
||||
|
||||
IPythonJobListener<ReferenceData> listener = new IPythonJobListener<ReferenceData>() {
|
||||
@Override
|
||||
public void jobFailed(Throwable e) {
|
||||
statusHandler.handle(Priority.ERROR,
|
||||
"Unable to run query script", e);
|
||||
}
|
||||
refData.setGrid(refData.getGrid());
|
||||
|
||||
@Override
|
||||
public void jobFinished(ReferenceData refData) {
|
||||
JTSCompiler jtsCompiler = new JTSCompiler(shadedShape,
|
||||
outlineShape, descriptor);
|
||||
refData.setGrid(refData.getGrid());
|
||||
MultiPolygon mp = (MultiPolygon) refData.getPolygons(
|
||||
CoordinateType.GRID).clone();
|
||||
|
||||
MultiPolygon mp = (MultiPolygon) refData.getPolygons(
|
||||
CoordinateType.GRID).clone();
|
||||
ReferencedGeometry rc = new ReferencedGeometry(mp,
|
||||
MapUtil.getGridGeometry(refData.getGloc()), Type.GRID_CENTER);
|
||||
|
||||
ReferencedGeometry rc = new ReferencedGeometry(mp,
|
||||
MapUtil.getGridGeometry(refData.getGloc()),
|
||||
Type.GRID_CENTER);
|
||||
try {
|
||||
jtsCompiler.handle(rc, getCapability(ColorableCapability.class)
|
||||
.getColor());
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
|
||||
}
|
||||
|
||||
try {
|
||||
jtsCompiler
|
||||
.handle(rc,
|
||||
getCapability(ColorableCapability.class)
|
||||
.getColor());
|
||||
} catch (VizException e) {
|
||||
statusHandler.handle(Priority.PROBLEM,
|
||||
e.getLocalizedMessage(), e);
|
||||
}
|
||||
|
||||
outlineShape.compile();
|
||||
shadedShape.compile();
|
||||
shadedShape.setFillPattern(fillPattern);
|
||||
refSetMgr.getActiveRefSet();
|
||||
issueRefresh();
|
||||
}
|
||||
};
|
||||
this.refSetMgr.evaluateActiveRefSet(listener);
|
||||
outlineShape.compile();
|
||||
shadedShape.compile();
|
||||
shadedShape.setFillPattern(fillPattern);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Reference in a new issue