Issue #1495 update Product Browser to load all ensemble members

Former-commit-id: 4854df66bc [formerly 38af9c697b1bb96e5f6f032eb9fc2055a9e8f7ef]
Former-commit-id: 9aafe61075
This commit is contained in:
Ben Steffensmeier 2013-01-16 10:34:31 -06:00 committed by Gerrit Code Review
parent 5c5201ad6e
commit 6ff281dc98
2 changed files with 54 additions and 3 deletions

View file

@ -20,6 +20,7 @@ package com.raytheon.uf.viz.productbrowser;
* further licensing information.
**/
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -198,12 +199,15 @@ public abstract class AbstractRequestableProductBrowserDataDefinition<T extends
constructResource();
}
private void constructResource() {
protected void constructResource() {
ResourcePair pair = new ResourcePair();
pair.setResourceData(resourceData);
pair.setLoadProperties(loadProperties);
pair.setProperties(new ResourceProperties());
IDescriptor currDesc = null;
constructResource(Arrays.asList(pair));
}
protected void constructResource(List<ResourcePair> pairs) {
// retrieves the correct editor
getEditor();
IDisplayPaneContainer container = getEditor();
@ -213,7 +217,9 @@ public abstract class AbstractRequestableProductBrowserDataDefinition<T extends
AbstractRenderableDisplay display = (AbstractRenderableDisplay) container
.getActiveDisplayPane().getRenderableDisplay();
display = (AbstractRenderableDisplay) display.createNewDisplay();
display.getDescriptor().getResourceList().add(pair);
for (ResourcePair pair : pairs) {
display.getDescriptor().getResourceList().add(pair);
}
Bundle b = new Bundle();
b.setDisplays(new AbstractRenderableDisplay[] { display });
new BundleProductLoader(EditorUtil.getActiveVizContainer(), b).schedule();

View file

@ -47,9 +47,12 @@ 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.viz.core.datastructure.DataCubeContainer;
import com.raytheon.uf.viz.core.drawables.ResourcePair;
import com.raytheon.uf.viz.core.exception.VizCommunicationException;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.uf.viz.core.level.LevelMappingFactory;
import com.raytheon.uf.viz.core.rsc.DisplayType;
import com.raytheon.uf.viz.core.rsc.ResourceProperties;
import com.raytheon.uf.viz.core.rsc.ResourceType;
import com.raytheon.uf.viz.derivparam.library.DerivParamDesc;
import com.raytheon.uf.viz.derivparam.library.DerivedParameterGenerator;
@ -129,6 +132,48 @@ public class GridProductBrowserDataDefinition extends
return new GridResourceData();
}
@Override
public void constructResource(String[] selection, ResourceType type) {
GridInventory inventory = getInventory();
if (inventory == null) {
super.constructResource(selection, type);
return;
}
if (type != null) {
loadProperties.setResourceType(type);
}
HashMap<String, RequestConstraint> parameters = getProductParameters(
selection, order);
List<String> ensembles = null;
try {
ensembles = inventory.getEnsembles(parameters);
} catch (VizException e) {
statusHandler.handle(Priority.PROBLEM, e.getLocalizedMessage(), e);
}
if (ensembles != null && ensembles.size() > 1) {
Collections.sort(ensembles);
List<ResourcePair> pairs = new ArrayList<ResourcePair>();
for (String ensemble : ensembles) {
ResourcePair pair = new ResourcePair();
resourceData = getResourceData();
HashMap<String, RequestConstraint> newParameters = new HashMap<String, RequestConstraint>(
parameters);
newParameters.put(GridConstants.ENSEMBLE_ID,
new RequestConstraint(ensemble));
resourceData.setMetadataMap(newParameters);
pair.setResourceData(resourceData);
pair.setLoadProperties(loadProperties);
pair.setProperties(new ResourceProperties());
pairs.add(pair);
}
constructResource(pairs);
} else {
resourceData = getResourceData();
resourceData.setMetadataMap(parameters);
constructResource();
}
}
@Override
protected String[] queryData(String param,
HashMap<String, RequestConstraint> queryList) {