Issue #1454: Update Dataset size calculation
Change-Id: I5653bc1614945fb0dad2eec757e1de0831b809d5 Former-commit-id:9405cb94ae
[formerly45e6e286bb
] [formerlydeca70207d
] [formerly73263e270e
[formerlydeca70207d
[formerly 345344ed47305bc0698eec29cbae7e7922378cc7]]] Former-commit-id:73263e270e
Former-commit-id: 9f6c7c2bc9e428381b9ce3bd65c4d503ebf7348a [formerly69818573a6
] Former-commit-id:4a097586f6
This commit is contained in:
parent
2c21da07a8
commit
9d0c8ff714
10 changed files with 212 additions and 242 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
*
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue