Issue #1454: Update Dataset size calculation

Change-Id: I5653bc1614945fb0dad2eec757e1de0831b809d5

Former-commit-id: 73263e270e [formerly 345344ed47305bc0698eec29cbae7e7922378cc7]
Former-commit-id: deca70207d
This commit is contained in:
Richard Peter 2013-01-04 15:48:26 -06:00
parent 5a861267aa
commit 45e6e286bb
10 changed files with 212 additions and 242 deletions

View file

@ -397,7 +397,7 @@ public class UserSelectComp extends Composite implements IUpdate, IDisplay {
u.setEnvelope(groupDefinition.getEnvelope());
u.setNumFcstHours(subscription.getTime()
.getSelectedTimeIndices().size());
u.setNumParameters(subscription.getParameter().size());
u.determineNumberRequestedGrids(subscription.getParameter());
Coverage cov = new GriddedCoverage();
cov.setEnvelope(groupDefinition.getEnvelope());
@ -602,7 +602,6 @@ public class UserSelectComp extends Composite implements IUpdate, IDisplay {
*/
@Override
public boolean displayYesNoPopup(String title, String message) {
return DataDeliveryUtils.showYesNoMessage(getShell(), title,
message) == SWT.YES;
return DataDeliveryUtils.showYesNoMessage(getShell(), title, message) == SWT.YES;
}
}

View file

@ -249,11 +249,11 @@ public class SubscriptionDiff {
// Check for new or removed parameters
for (Parameter p : subParamList) {
subParams.add(p.getName());
subParams.add(p.getProviderName());
}
for (Parameter p : pendingSubParamList) {
pendingSubParams.add(p.getName());
pendingSubParams.add(p.getProviderName());
}
// Check for new parameters, if in pending list, but not sub list
@ -275,11 +275,12 @@ public class SubscriptionDiff {
ArrayList<ParameterDiff> parameterDiffList = new ArrayList<ParameterDiff>();
if (subParamList.size() > pendingSubParamList.size()) {
for (Parameter p : subParamList) {
if (subParams.contains(p.getName())) {
if (subParams.contains(p.getProviderName())) {
// See if anything changed for this parameter, which is
// layer or fcstHr
for (Parameter pendingP : pendingSubParamList) {
if (p.getName().equals(pendingP.getName())) {
if (p.getProviderName().equals(
pendingP.getProviderName())) {
parameterDiffList
.add(new ParameterDiff(p, pendingP));
break;
@ -289,11 +290,12 @@ public class SubscriptionDiff {
}
} else {
for (Parameter pendingP : pendingSubParamList) {
if (subParams.contains(pendingP.getName())) {
if (subParams.contains(pendingP.getProviderName())) {
// See if anything changed for this parameter, which is
// layer or fcstHr
for (Parameter p : subParamList) {
if (p.getName().equals(pendingP.getName())) {
if (p.getProviderName().equals(
pendingP.getProviderName())) {
parameterDiffList
.add(new ParameterDiff(p, pendingP));
break;
@ -327,8 +329,8 @@ public class SubscriptionDiff {
for (Parameter p : pendingSubParamList) {
for (String newParameter : newParameters) {
if (p.getName().equals(newParameter)) {
tmpBuffer.append("Parameter: ").append(p.getName())
if (p.getProviderName().equals(newParameter)) {
tmpBuffer.append("Parameter: ").append(p.getProviderName())
.append(nl);
if (p.getLevelType().size() > 0) {
List<DataLevelType> dltList = p.getLevelType();

View file

@ -53,6 +53,7 @@ import com.raytheon.uf.common.status.UFStatus;
import com.raytheon.uf.common.status.UFStatus.Priority;
import com.raytheon.uf.common.time.util.ImmutableDate;
import com.raytheon.uf.common.util.CollectionUtil;
import com.raytheon.uf.common.util.SizeUtil;
import com.raytheon.uf.viz.datadelivery.subscription.subset.presenter.GriddedTimingSelectionPresenter;
import com.raytheon.uf.viz.datadelivery.subscription.subset.presenter.GriddedTimingSubsetPresenter;
import com.raytheon.uf.viz.datadelivery.subscription.subset.xml.SpecificDateTimeXML;
@ -263,9 +264,8 @@ public class GriddedSubsetManagerDlg
// Update the data set size label text.
// Get the number of parameters and levels
dataSize.setNumParameters(vTab.getNumParams());
dataSize.setNumLevels(vTab.getNumLevels());
// Get the number of requested grids
dataSize.determineNumberRequestedGrids(vTab.getParameters());
// Get the temporal data
int numFcstHours = this.timingTabControls.getSelectedFcstHours().length;
@ -276,8 +276,10 @@ public class GriddedSubsetManagerDlg
dataSize.setEnvelope(envelope);
this.sizeLbl.setText(dataSize.getDataSetSize() + " KB of "
+ dataSize.getFullSize() + " KB");
this.sizeLbl.setText(SizeUtil.prettyByteSize(dataSize
.getDataSetSizeInBytes())
+ " of "
+ SizeUtil.prettyByteSize(dataSize.getFullSizeInBytes()));
}
/**

View file

@ -27,6 +27,7 @@ import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import com.raytheon.uf.common.datadelivery.registry.DataLevelType;
import com.raytheon.viz.ui.widgets.duallist.DualList;
import com.raytheon.viz.ui.widgets.duallist.DualListConfig;
import com.raytheon.viz.ui.widgets.duallist.IUpdate;
@ -50,11 +51,13 @@ import com.raytheon.viz.ui.widgets.duallist.IUpdate;
*/
public class LevelParameterSelection extends Composite implements IUpdate {
private final List<String> levelList;
private final List<String> paramList;
private final DataLevelType levelType;
/** Dual list for levels */
private DualList dualLevelList;
@ -64,7 +67,7 @@ public class LevelParameterSelection extends Composite implements IUpdate {
private final ISubset callback;
private final String id;
/** Flag to determine if tab has changed */
private boolean isDirty = false;
@ -73,15 +76,17 @@ public class LevelParameterSelection extends Composite implements IUpdate {
*
* @param parent
* @param style
* @param levelType
* @param levelList
* @param paramList
* @param callback
* @param id
*/
public LevelParameterSelection(Composite parent, int style,
List<String> levelList, List<String> paramList, ISubset callback,
String id) {
DataLevelType levelType, List<String> levelList,
List<String> paramList, ISubset callback, String id) {
super(parent, style);
this.levelType = levelType;
this.levelList = levelList;
this.paramList = paramList;
this.callback = callback;
@ -117,7 +122,7 @@ public class LevelParameterSelection extends Composite implements IUpdate {
paramConfig.setListWidth(100);
paramConfig.setShowUpDownBtns(false);
paramConfig.setFullList(paramList);
dualParamList = new DualList(this, SWT.NONE, paramConfig, this);
}
@ -130,7 +135,8 @@ public class LevelParameterSelection extends Composite implements IUpdate {
@Override
public void hasEntries(boolean entries) {
if (dualParamList != null && dualLevelList != null) {
if (dualParamList.getItemCount() > 0 && this.dualLevelList.getItemCount() > 0) {
if (dualParamList.getItemCount() > 0
&& this.dualLevelList.getItemCount() > 0) {
callback.updateSelectionState(true, id);
} else {
callback.updateSelectionState(false, id);
@ -192,7 +198,8 @@ public class LevelParameterSelection extends Composite implements IUpdate {
*/
public boolean shouldExpand() {
if (dualParamList != null && dualLevelList != null) {
if (dualParamList.getItemCount() > 0 && this.dualLevelList.getItemCount() > 0) {
if (dualParamList.getItemCount() > 0
&& this.dualLevelList.getItemCount() > 0) {
return true;
}
} else {
@ -203,25 +210,27 @@ public class LevelParameterSelection extends Composite implements IUpdate {
return false;
}
/**
* Action when selecting Parameters on the vertical tab.
*
* @param levelList
*/
public void selectLevels(ArrayList<String> levelList) {
dualLevelList.selectItems(levelList.toArray(new String[levelList.size()]));
dualLevelList
.selectItems(levelList.toArray(new String[levelList.size()]));
}
/**
* Action when selecting Parameters on the vertical tab.
*
* @param paramList
*/
public void selectParameters(ArrayList<String> paramList) {
dualParamList.selectItems(paramList.toArray(new String[paramList.size()]));
dualParamList
.selectItems(paramList.toArray(new String[paramList.size()]));
}
/**
* Set isDirty flag.
*
@ -235,11 +244,16 @@ public class LevelParameterSelection extends Composite implements IUpdate {
* Set parameters to clean.
*/
public void setClean() {
isDirty = false;
isDirty = false;
}
@Override
public void selectionChanged() {
isDirty = true;
}
public DataLevelType getLevelType() {
return levelType;
}
}

View file

@ -154,8 +154,6 @@ public class VerticalSubsetTab extends SubsetTab implements
for (String levelLabel : levelDisplayMap.keySet()) {
DataLevelType levelType = levelDisplayMap.get(levelLabel);
ExpandItem item = new ExpandItem(expandBar, SWT.NONE);
// Store this for later use
item.setData(dataSet.getParameters());
item.setText(levelLabel);
item.setImage(filterImgs
.getExpandItemImage(ExpandItemState.NoEntries));
@ -165,8 +163,8 @@ public class VerticalSubsetTab extends SubsetTab implements
dataSet.getParameters());
LevelParameterSelection lps = new LevelParameterSelection(
expandBar, SWT.BORDER, levelList, paramList, this,
levelLabel);
expandBar, SWT.BORDER, levelType, levelList, paramList,
this, levelLabel);
item.setHeight(lps.computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
item.setControl(lps);
}
@ -322,27 +320,17 @@ public class VerticalSubsetTab extends SubsetTab implements
continue;
}
DataLevelType levelType = lps.getLevelType();
String[] selectedLevels = lps.getSelectedLevels();
String[] selectedParameters = lps.getSelectedParameters();
@SuppressWarnings("unchecked")
Map<String, Parameter> parameterMap = (Map<String, Parameter>) item
.getData();
Map<String, Parameter> parameterMap = dataSet.getParameters();
// TODO - Phase 2 can have multiple levels per parameter
// Here are taking the parameter only because it only has one level
// type
for (String parameter : selectedParameters) {
Parameter param = parameterMap.get(parameter);
if (param != null) {
List<DataLevelType> levels = param.getLevelType();
for (DataLevelType levelType : levels) {
if (param.getLevelType().contains(levelType)) {
Parameter p = copyParameter(param, selectedLevels,
levelType);
selectedParameterObjs.add(p);
continue;
}
}
Parameter p = copyParameter(param, selectedLevels,
levelType);
selectedParameterObjs.add(p);
}
}
}
@ -366,36 +354,23 @@ public class VerticalSubsetTab extends SubsetTab implements
*/
private Parameter copyParameter(Parameter param, String[] selectedLevels,
DataLevelType levelType) {
Parameter myParameterCopy = new Parameter(param);
// add just the selected level type
ArrayList<DataLevelType> myLevelTypes = new ArrayList<DataLevelType>();
myLevelTypes.add(levelType);
myParameterCopy.setLevelType(myLevelTypes);
final String paramName = param.getName();
Levels levels = null;
Parameter parameter = null;
for (Parameter p : dataSet.getParameters().values()) {
if (p.getName().equals(paramName)) {
parameter = p;
levels = p.getLevels();
levels.setLevelType(levelType.getId());
break;
}
}
if (parameter == null) {
throw new IllegalStateException(String.format(
"Unable to find parameter [%s] on the DataSet!", paramName));
}
List<Double> levelsList = new ArrayList<Double>();
List<Double> levelsList = new ArrayList<Double>(selectedLevels.length);
for (String s : selectedLevels) {
levelsList.add(Double.parseDouble(s));
}
Collections.sort(levelsList);
if (levelType.getId() == DataLevelType.LevelType.MB
.getLevelTypeId()) {
if (levelType.getId() == DataLevelType.LevelType.MB.getLevelTypeId()) {
Collections.reverse(levelsList);
}
Levels levels = myParameterCopy.getLevels();
List<Double> availableLevels = levels.getLevel();
List<Integer> indices = new ArrayList<Integer>();
@ -405,22 +380,7 @@ public class VerticalSubsetTab extends SubsetTab implements
levels.setSelectedLevelIndices(indices);
Parameter p = new Parameter();
if (parameter.getEnsemble() != null) {
p.setEnsemble(parameter.getEnsemble());
}
p.setBaseType(param.getBaseType());
p.setDataType(param.getDataType());
p.setDefinition(param.getDefinition());
p.setMissingValue(param.getMissingValue());
p.setName(paramName);
p.setProviderName(param.getProviderName());
p.setUnits(param.getUnits());
p.setLevels(levels);
p.addLevelType(levelType);
return p;
return myParameterCopy;
}
/*
@ -565,42 +525,6 @@ public class VerticalSubsetTab extends SubsetTab implements
return vertList;
}
/**
* Get the number of parameters
*
* @return The number of parameters
*/
public int getNumParams() {
int numParams = 0;
// Get the number of parameters
ArrayList<Parameter> parameterList = getParameters();
if (parameterList != null && parameterList.size() > 0) {
numParams += parameterList.size();
}
return numParams;
}
/**
* Get the number of levels
*
* @return The number of levels
*/
public int getNumLevels() {
int numLevels = 0;
// Get the number of levels
ArrayList<Parameter> parameterList = getParameters();
if (parameterList != null && parameterList.size() > 0) {
for (Parameter par : parameterList) {
numLevels += par.getLevels().getSelectedLevelIndices().size();
}
}
return numLevels;
}
/**
* Determine if the tab selections are valid.
*

View file

@ -42,7 +42,7 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
public class DataLevelType implements ISerializableObject, Serializable {
private static final long serialVersionUID = -6953092339309118122L;
/**
* Unique key for the object.
*/
@ -66,6 +66,19 @@ public class DataLevelType implements ISerializableObject, Serializable {
layer = new ArrayList<Double>();
}
/**
* Copy constructor
*
* @param copy
*/
public DataLevelType(DataLevelType copy) {
this.type = copy.type;
this.unit = copy.unit;
if (copy.layer != null) {
this.layer = new ArrayList<Double>(copy.layer);
}
}
@XmlAttribute
@DynamicSerializeElement
private LevelType type;
@ -268,7 +281,7 @@ public class DataLevelType implements ISerializableObject, Serializable {
public String getDescription() {
return (type != null) ? type.getDescription() : null;
}
/**
* A unique key for this object.
*
@ -278,7 +291,7 @@ public class DataLevelType implements ISerializableObject, Serializable {
if (this.key == null) {
this.key = this.type + this.unit;
}
return key;
}

View file

@ -69,6 +69,24 @@ public class Levels implements ISerializableObject, Serializable {
@DynamicSerializeElement
private List<Integer> selectedLevelIndices;
/**
* Copy constructor
*
* @param copy
*/
public Levels(Levels copy) {
this.name = copy.name;
this.levelType = copy.levelType;
this.requestLevelEnd = copy.requestLevelEnd;
this.requestLevelStart = copy.requestLevelStart;
this.level = new ArrayList<Double>(copy.level);
this.dz = copy.dz;
if (selectedLevelIndices != null) {
this.selectedLevelIndices = new ArrayList<Integer>(
copy.selectedLevelIndices);
}
}
public Integer getLevelType() {
return levelType;
}
@ -152,8 +170,6 @@ public class Levels implements ISerializableObject, Serializable {
return name;
}
/**
* @return the selectedLevelIndices
*/
@ -169,35 +185,35 @@ public class Levels implements ISerializableObject, Serializable {
this.selectedLevelIndices = selectedLevelIndices;
}
/**
* Gets the level breakups needed to split retrievals for a subscription
*
* @return
*/
/**
* Gets the level breakups needed to split retrievals for a subscription
*
* @return
*/
public List<List<Integer>> getLevelSequences(int sfactor) {
List<List<Integer>> sequences = new ArrayList<List<Integer>>();
List<Integer> al = new ArrayList<Integer>();
if (selectedLevelIndices.size() > 0) {
int previous = selectedLevelIndices.get(0);
al.add(previous);
for (int i = 1; i < selectedLevelIndices.size(); i++) {
int next = selectedLevelIndices.get(i);
if (next - previous == 1 && al.size() <= sfactor) {
al.add(next);
previous = next;
} else {
sequences.add(al);
al = new ArrayList<Integer>();
al.add(next);
previous = next;
}
}
sequences.add(al);
}
if (selectedLevelIndices.size() > 0) {
int previous = selectedLevelIndices.get(0);
al.add(previous);
for (int i = 1; i < selectedLevelIndices.size(); i++) {
int next = selectedLevelIndices.get(i);
if (next - previous == 1 && al.size() <= sfactor) {
al.add(next);
previous = next;
} else {
sequences.add(al);
al = new ArrayList<Integer>();
al.add(next);
previous = next;
}
}
return sequences;
sequences.add(al);
}
return sequences;
}
}

View file

@ -54,9 +54,9 @@ import com.raytheon.uf.common.serialization.annotations.DynamicSerializeElement;
@RegistryObject({ "name", "dataType" })
public class Parameter implements ISerializableObject, Serializable {
private static final long serialVersionUID = -2332611624661834210L;
private static final long serialVersionUID = -2332611624661834210L;
public Parameter() {
public Parameter() {
}
@ -111,6 +111,32 @@ public class Parameter implements ISerializableObject, Serializable {
@RegistryObjectAssociation(ParameterLevelsResolver.class)
private Levels levels;
/**
* Copy constructor
*
* @param copy
*/
public Parameter(Parameter copy) {
this.name = copy.name;
this.providerName = copy.providerName;
this.definition = copy.definition;
this.units = copy.units;
this.dataType = copy.dataType;
this.missingValue = copy.missingValue;
this.fillValue = copy.fillValue;
this.ensemble = copy.ensemble;
this.baseType = copy.baseType;
// deep copy
if (copy.levelType != null) {
this.levelType = new ArrayList<DataLevelType>(copy.levelType.size());
for (DataLevelType dlt : copy.levelType) {
this.levelType.add(new DataLevelType(dlt));
}
}
this.levels = new Levels(copy.levels);
}
public String getName() {
return name;
}

View file

@ -12,7 +12,8 @@ Require-Bundle: com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
org.geotools;bundle-version="2.6.4",
com.raytheon.uf.common.geospatial;bundle-version="1.12.1174",
com.raytheon.uf.common.gridcoverage;bundle-version="1.0.0",
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174"
com.raytheon.uf.common.dataplugin;bundle-version="1.12.1174",
com.raytheon.uf.common.util
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Export-Package: com.raytheon.uf.common.datadelivery.retrieval.util,

View file

@ -19,6 +19,7 @@
**/
package com.raytheon.uf.common.datadelivery.retrieval.util;
import java.util.List;
import java.util.Map;
import org.geotools.geometry.jts.ReferencedEnvelope;
@ -27,10 +28,12 @@ import com.raytheon.uf.common.datadelivery.registry.Coverage;
import com.raytheon.uf.common.datadelivery.registry.DataSet;
import com.raytheon.uf.common.datadelivery.registry.GriddedCoverage;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSet;
import com.raytheon.uf.common.datadelivery.registry.Levels;
import com.raytheon.uf.common.datadelivery.registry.Parameter;
import com.raytheon.uf.common.datadelivery.registry.Provider.ServiceType;
import com.raytheon.uf.common.datadelivery.retrieval.xml.RetrievalAttribute;
import com.raytheon.uf.common.gridcoverage.GridCoverage;
import com.raytheon.uf.common.util.CollectionUtil;
/**
* Data Structure for calculating Data Set Size.
@ -45,7 +48,7 @@ import com.raytheon.uf.common.gridcoverage.GridCoverage;
* Aug 12, 2012 1022 djohnson Stop coordinates on GriddedCoverage from being corrupted.
* Oct 31, 2012 1278 mpduff Clarified a Javadoc comment.
* Dec 10, 2012 1259 bsteffen Switch Data Delivery from LatLon to referenced envelopes.
*
*
* </pre>
*
* @author mpduff
@ -68,7 +71,7 @@ public class DataSizeUtils {
GriddedCoverage griddedCov = (GriddedCoverage) ra.getCoverage();
int nx = griddedCov.getGridCoverage().getNx();
int ny = griddedCov.getGridCoverage().getNy();
long l = st.getRequestBytesPerParameterPerLevel(nx * ny);
l = l / bytesPerKilobyte;
@ -90,14 +93,11 @@ public class DataSizeUtils {
/** Data Set Size */
private long size = 0;
/** Full Data Set Size */
/** Full Data Set Size in bytes */
private long fullSize = -999;
/** Number of parameters */
private int numParameters = 0;
/** Number of levels */
private int numLevels = 0;
/** Number of requested grids */
private int numRequestedGrids = 0;
/** Number of forecast hours */
private int numFcstHours = 0;
@ -123,16 +123,6 @@ public class DataSizeUtils {
this.dataSet = dataSet;
}
/**
* Add to the number of levels.
*
* @param levels
* Number of levels to add
*/
public void addToLevelCount(int levels) {
numLevels += levels;
}
private void calculateGridCells() {
if (dataSet != null) {
Coverage cov = dataSet.getCoverage();
@ -160,33 +150,29 @@ public class DataSizeUtils {
return dataSet;
}
public long getDataSetSizeInBytes() {
long l = numRequestedGrids
* numFcstHours
* dataSet.getServiceType().getRequestBytesPerParameterPerLevel(
numberOfGridCells);
return l;
}
/**
* Returns the estimated data set size in KB.
*
* @return
*/
public long getDataSetSize() {
// Handle the case where the level is surface only, must artificially
// set numLevels to 1
int numberOfLevels = numLevels;
if (numberOfLevels == 0 && numParameters > 0) {
numberOfLevels = 1;
}
long l = numParameters
* numberOfLevels
* numFcstHours
* dataSet.getServiceType().getRequestBytesPerParameterPerLevel(
numberOfGridCells);
return l / bytesPerKilobyte;
return getDataSetSizeInBytes() / bytesPerKilobyte;
}
/**
* REturns the estimated full dataset size.
* Returns the estimated full dataset size in bytes.
*
* @return
*/
public long getFullSize() {
public long getFullSizeInBytes() {
if (dataSet != null) {
if (fullSize == -999) {
Coverage cov = dataSet.getCoverage();
@ -198,21 +184,23 @@ public class DataSizeUtils {
long fcstHrs = dataSet instanceof GriddedDataSet ? ((GriddedDataSet) dataSet)
.getForecastHours().size() : 1;
Map<String, Parameter> paramMap = dataSet.getParameters();
long numParams = paramMap.size();
long numLevels = 0;
// get the number of grids available
long numGridsAvailable = 0;
for (Parameter p : paramMap.values()) {
numLevels += p.getLevels().getLevel().size();
int numLevels = p.getLevels().getLevel().size();
// parameter is always at least on one level, level just
// may not be named/enumerated
numGridsAvailable += (numLevels > 0 ? numLevels : 1);
}
fullSize = fcstHrs
* numParams
* numLevels
* numGridsAvailable
* dataSet.getServiceType()
.getRequestBytesPerParameterPerLevel(
numCells);
fullSize /= bytesPerKilobyte;
}
}
}
@ -220,6 +208,15 @@ public class DataSizeUtils {
return fullSize;
}
/**
* Returns the estimated full dataset size in KB.
*
* @return
*/
public long getFullSize() {
return getFullSizeInBytes() / bytesPerKilobyte;
}
public int getNumberOfGridCells() {
return numberOfGridCells;
}
@ -231,20 +228,6 @@ public class DataSizeUtils {
return numFcstHours;
}
/**
* @return the numLevels
*/
public int getNumLevels() {
return numLevels;
}
/**
* @return the numParameters
*/
public int getNumParameters() {
return numParameters;
}
/**
* @return the size
*/
@ -252,26 +235,11 @@ public class DataSizeUtils {
return size;
}
/**
* Increment the number of levels by one.
*/
public void incrementLevelCount() {
numLevels++;
}
/**
* Increment the number of parameters by one.
*/
public void incrementParamCount() {
numParameters++;
}
/**
* Reset the state of this object
*/
public void reset() {
numLevels = 0;
numParameters = 0;
numRequestedGrids = 0;
size = 0;
dataSet = null;
}
@ -300,26 +268,31 @@ public class DataSizeUtils {
}
/**
* @param numLevels
* the numLevels to set
* @param numRequestedGrids
* the numRequestedGrids to set
*/
public void setNumLevels(int numLevels) {
this.numLevels = numLevels;
}
public void determineNumberRequestedGrids(List<Parameter> parameterList) {
int numGrids = 0;
/**
* @param numParameters
* the numParameters to set
*/
public void setNumParameters(int numParameters) {
this.numParameters = numParameters;
}
// Get the number of requested grids
if (!CollectionUtil.isNullOrEmpty(parameterList)) {
for (Parameter par : parameterList) {
Levels parLevels = par.getLevels();
int numSelectedLevels = parLevels.getSelectedLevelIndices()
.size();
if (numSelectedLevels < 1) {
// if parameter is not available on more than level, then by
// default the single level is selected
if (parLevels.size() <= 1) {
numSelectedLevels = 1;
}
// else user did not select any levels for this parameter
}
/**
* @param size
* the size to set
*/
public void setSize(long size) {
this.size = size;
numGrids += numSelectedLevels;
}
}
this.numRequestedGrids = numGrids;
}
}