Issue #2137 - Change Data Browser Dialog to only allow a single data type to be selected

Review comments

Change-Id: Ic4f508ea98683f750b906292094740a4538950b1

Former-commit-id: 53ebc492e1 [formerly 9aaf06ab73] [formerly 9f6213f9a5 [formerly 1015a76693e73c52d2bc56c18c4f3dfa25092771]]
Former-commit-id: 9f6213f9a5
Former-commit-id: 502a141297
This commit is contained in:
Mike Duff 2013-07-05 12:02:19 -05:00
parent 33ec4dd688
commit 7a8d39b1da
3 changed files with 255 additions and 171 deletions

View file

@ -83,9 +83,6 @@ import com.raytheon.uf.viz.datadelivery.subscription.subset.SubsetManagerDlg;
import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryGUIUtils;
import com.raytheon.uf.viz.datadelivery.utils.DataDeliveryUtils.TABLE_TYPE;
import com.raytheon.viz.ui.dialogs.CaveSWTDialog;
import com.raytheon.viz.ui.widgets.duallist.DualList;
import com.raytheon.viz.ui.widgets.duallist.DualListConfig;
import com.raytheon.viz.ui.widgets.duallist.IUpdate;
import com.vividsolutions.jts.geom.Coordinate;
/**
@ -119,6 +116,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Jun 04, 2013 223 mpduff Add data type to filters.
* Jun 05, 2013 1800 mpduff Move the area filter below the data type selection.
* Jun 06, 2013 2030 mpduff Updates to help.
* Jul 05, 2013 2137 mpduff Changed data type to a single select list, changed layout.
*
* </pre>
*
@ -126,7 +124,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* @version 1.0
*/
public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
IUpdate, IDataLoad {
IDataLoad {
/** Status Handler */
private final IUFStatusHandler statusHandler = UFStatus
@ -159,7 +157,7 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
private LoadSaveConfigDlg loadSaveDlg;
/** List to choose the data types from. */
private DualList dataTypesDualList;
private org.eclipse.swt.widgets.List datatypeList;
/** Label indicating how many entries are in the table. */
private Label tableEntriesLabel;
@ -176,8 +174,11 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
/** The selected config file that is currently loaded. */
private String selectedFile;
/** The area selected label. */
private Label areaSelectedLbl;
/** The upper left area point label. */
private Label upperLeftLabel;
/** The lower right area point label. */
private Label lowerRightLabel;
/** The LocalizationFile object of the currently loaded file. */
private LocalizationFile locFile;
@ -267,8 +268,7 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
protected void initializeComponents(Shell shell) {
createMenus();
createDataTypeControls();
createAreaControls();
createDataTypeAndAreaControls();
createSashForm();
createRetSubsControl();
@ -451,28 +451,69 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
}
/**
* Create the controls for selecting an area.
* Create the controls for selecting the data types and the area selection.
*/
private void createAreaControls() {
areaGrp = new Group(shell, SWT.NONE);
private void createDataTypeAndAreaControls() {
Composite comp = new Composite(shell, SWT.NONE);
comp.setLayout(new GridLayout(2, false));
comp.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
dataTypeGrp = new Group(comp, SWT.NONE);
dataTypeGrp.setLayout(new GridLayout(1, false));
dataTypeGrp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
dataTypeGrp.setText(" Data Types: ");
loadDataTypes();
datatypeList = new org.eclipse.swt.widgets.List(dataTypeGrp, SWT.BORDER
| SWT.V_SCROLL);
datatypeList
.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
datatypeList.addSelectionListener(new SelectionAdapter() {
/*
* (non-Javadoc)
*
* @see
* org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
* .swt.events.SelectionEvent)
*/
@Override
public void widgetSelected(SelectionEvent e) {
handleDataTypeSelection();
}
});
areaGrp = new Group(comp, SWT.NONE);
areaGrp.setLayout(new GridLayout(1, false));
areaGrp.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
areaGrp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
areaGrp.setText(" Areal Coverage: ");
Composite areaComp = new Composite(areaGrp, SWT.NONE);
areaComp.setLayout(new GridLayout(4, false));
areaComp.setLayout(new GridLayout(2, false));
areaComp.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true, false));
Label areaLabel = new Label(areaComp, SWT.NONE);
areaLabel.setText("Area:");
areaLabel.setLayoutData(new GridData(SWT.DEFAULT, SWT.CENTER, false,
false));
Label ulLbl = new Label(areaComp, SWT.NONE);
ulLbl.setText("Upper Left:");
ulLbl.setLayoutData(new GridData(SWT.DEFAULT, SWT.CENTER, false, false));
areaSelectedLbl = new Label(areaComp, SWT.BORDER);
areaSelectedLbl.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
upperLeftLabel = new Label(areaComp, SWT.BORDER);
upperLeftLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
true));
clearBtn = new Button(areaComp, SWT.PUSH);
Label lrLbl = new Label(areaComp, SWT.NONE);
lrLbl.setText("Lower Right:");
lrLbl.setLayoutData(new GridData(SWT.DEFAULT, SWT.CENTER, false, false));
lowerRightLabel = new Label(areaComp, SWT.BORDER);
lowerRightLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
true));
Composite comp2 = new Composite(areaGrp, SWT.NONE);
comp2.setLayout(new GridLayout(2, true));
comp2.setLayoutData(new GridData(SWT.CENTER, SWT.DEFAULT, true, false));
clearBtn = new Button(comp2, SWT.PUSH);
clearBtn.setText("Clear");
clearBtn.setEnabled(false);
clearBtn.setLayoutData(new GridData(90, SWT.DEFAULT));
@ -483,7 +524,7 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
}
});
areaBtn = new Button(areaComp, SWT.PUSH);
areaBtn = new Button(comp2, SWT.PUSH);
areaBtn.setText("Set Area...");
areaBtn.setLayoutData(new GridData(90, SWT.DEFAULT));
areaBtn.addSelectionListener(new SelectionAdapter() {
@ -494,27 +535,6 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
});
}
/**
* Create the controls for selecting the data types.
*/
private void createDataTypeControls() {
dataTypeGrp = new Group(shell, SWT.NONE);
dataTypeGrp.setLayout(new GridLayout(1, false));
dataTypeGrp.setLayoutData(new GridData(SWT.FILL, SWT.DEFAULT, true,
false));
dataTypeGrp.setText(" Data Types: ");
loadDataTypes();
DualListConfig config = new DualListConfig();
config.setAvailableListLabel("Available:");
config.setSelectedListLabel("Selected:");
config.setListHeight(70);
config.setListWidth(150);
dataTypesDualList = new DualList(dataTypeGrp, SWT.NONE, config, this);
}
/**
* Create the SashForm that will allow the composite sizes to be adjusted.
*/
@ -671,11 +691,12 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
*/
private void handleClearArea() {
getShell().setCursor(getDisplay().getSystemCursor(SWT.CURSOR_WAIT));
areaSelectedLbl.setText("");
upperLeftLabel.setText("");
lowerRightLabel.setText("");
clearBtn.setEnabled(false);
envelope = null;
if (dataTypesDualList.getSelectedListItems().length != 0) {
if (datatypeList.getSelectionIndex() != -1) {
if (filterExpandBar != null) {
filterExpandBar.setEnvelope(null);
}
@ -731,11 +752,11 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
* Update the area label.
*/
private void updateAreaLabel(ReferencedEnvelope envelope) {
this.envelope = envelope;
if (envelope == null || envelope.isEmpty()) {
areaSelectedLbl.setText("");
upperLeftLabel.setText("");
lowerRightLabel.setText("");
clearBtn.setEnabled(false);
} else {
NumberFormat formatter = new DecimalFormat(".0000");
@ -748,16 +769,19 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
return;
}
StringBuilder sb = new StringBuilder("UL: ");
sb.append(formatter.format(ul.x) + "," + formatter.format(ul.y));
sb.append(", LR: " + formatter.format(lr.x) + ","
+ formatter.format(lr.y));
StringBuilder sb = new StringBuilder();
sb.append(formatter.format(ul.x)).append(", ")
.append(formatter.format(ul.y));
areaSelectedLbl.setText(sb.toString());
upperLeftLabel.setText(sb.toString());
if (areaSelectedLbl.getText().length() > 0) {
clearBtn.setEnabled(true);
}
sb.setLength(0);
sb.append(formatter.format(lr.x)).append(", ")
.append(formatter.format(lr.y));
lowerRightLabel.setText(sb.toString());
clearBtn.setEnabled(true);
}
this.areaDirty = true;
@ -870,18 +894,21 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
setText(WINDOW_TITLE);
// Clear the area.
areaSelectedLbl.setText("");
upperLeftLabel.setText("");
lowerRightLabel.setText("");
clearBtn.setEnabled(false);
envelope = null;
// Clear the data type.
dataTypesDualList.clearSelection();
datatypeList.deselectAll();
// Clear the filters.
updateFilters();
filterExpandBar.updateFilters(dataTypesDualList.getSelectedListItems(),
envelope);
String selection = datatypeList.getItem(datatypeList
.getSelectionIndex());
filterExpandBar.updateFilters(selection, envelope);
// Clear the table and disable the buttons.
resetTableAndControls();
@ -907,13 +934,12 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
xml = new FilterSettingsXML();
// Save data type
String[] dataTypes = dataTypesDualList
.getSelectedListItems();
String dataType = datatypeList.getItem(datatypeList
.getSelectionIndex());
FilterTypeXML ftx = new FilterTypeXML();
ftx.setFilterType("Data Type");
for (String dataType : dataTypes) {
ftx.addValue(dataType);
}
ftx.addValue(dataType);
xml.addFilterType(ftx);
@ -971,13 +997,11 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
xml = new FilterSettingsXML();
// Save data type
String[] dataTypes = dataTypesDualList.getSelectedListItems();
String dataType = datatypeList
.getItem(datatypeList.getSelectionIndex());
FilterTypeXML ftx = new FilterTypeXML();
ftx.setFilterType("Data Type");
for (String dataType : dataTypes) {
ftx.addValue(dataType);
}
ftx.addValue(dataType);
xml.addFilterType(ftx);
// Save area settings
@ -1011,10 +1035,11 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
getShell().setCursor(getDisplay().getSystemCursor(SWT.CURSOR_WAIT));
// Clear the filters.
filterExpandBar.updateFilters(new String[0], envelope);
dataTypesDualList.clearSelection();
filterExpandBar.updateFilters("", envelope);
datatypeList.deselectAll();
areaSelectedLbl.setText("");
upperLeftLabel.setText("");
lowerRightLabel.setText("");
clearBtn.setEnabled(false);
envelope = null;
@ -1024,24 +1049,24 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
updateAreaLabel(area.getEnvelope());
}
dataTypesDualList.setAvailableItems(dataTypes);
datatypeList.setItems(dataTypes.toArray(new String[dataTypes.size()]));
ArrayList<FilterTypeXML> filterTypeList = xml.getFilterTypeList();
for (FilterTypeXML ftx : filterTypeList) {
if (ftx.getFilterType().equals("Data Type")) {
ArrayList<String> valueList = ftx.getValues();
String[] values = new String[valueList.size()];
// only one for data type
int i = 0;
for (String s : valueList) {
values[i] = s;
i++;
for (String s : dataTypes) {
if (s.equals(valueList.get(0))) {
i++;
break;
}
}
dataTypesDualList.selectItems(values);
datatypeList.select(i);
}
}
// this.filterExpandBar.updateFilters(dataTypesDualList.getSelectedListItems(),
// coordArray);
filterExpandBar.setFilterSettingsXml(xml);
getShell().setCursor(null);
@ -1059,10 +1084,9 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
xml = new FilterSettingsXML();
filterExpandBar.populateFilterSettingsXml(xml);
String[] dataTypes = this.dataTypesDualList.getSelectedListItems();
for (String type : dataTypes) {
xml.addDataSetType(type);
}
String selectedDataType = this.datatypeList.getItem(datatypeList
.getSelectionIndex());
xml.addDataSetType(selectedDataType);
final List<DataSet> matchingDataSets = new ArrayList<DataSet>();
final Shell jobParent = this.getShell();
@ -1154,27 +1178,21 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
}
/**
* Set flag for has entries.
* Data Type selection action
*/
@Override
public void hasEntries(boolean entries) {
shell.setCursor(getDisplay().getSystemCursor(SWT.CURSOR_WAIT));
if (dataTypesDualList != null) {
if (filterExpandBar != null) {
this.filterExpandBar.updateFilters(
dataTypesDualList.getSelectedListItems(), envelope);
this.filterExpandBar.addListener(SWT.SetData, new Listener() {
@Override
public void handleEvent(Event event) {
resetTableAndControls();
}
});
dataTypeDirty = true;
}
private void handleDataTypeSelection() {
String dataType = datatypeList
.getItem(datatypeList.getSelectionIndex());
if (filterExpandBar != null) {
this.filterExpandBar.updateFilters(dataType, envelope);
this.filterExpandBar.addListener(SWT.SetData, new Listener() {
@Override
public void handleEvent(Event event) {
resetTableAndControls();
}
});
dataTypeDirty = true;
}
shell.setCursor(null);
resetTableAndControls();
}
/**
@ -1190,15 +1208,11 @@ public class DataBrowserDlg extends CaveSWTDialog implements IDataTableUpdate,
@Override
public void run() {
dataTypes = (ArrayList<String>) dataTypesList;
dataTypesDualList.setFullList(dataTypes);
for (String type : dataTypes) {
datatypeList.add(type);
}
getShell().setCursor(null);
}
});
}
@Override
public void selectionChanged() {
// unused
}
}

View file

@ -21,8 +21,8 @@ package com.raytheon.uf.viz.datadelivery.filter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@ -82,6 +82,7 @@ import com.raytheon.viz.ui.widgets.duallist.DualListConfig;
* Feb 24, 2013 1620 mpduff Fixed set clean issue when loading configurations. Set clean
* needs to be called after the data load job is complete.
* May 15, 2013 1040 mpduff Called markNotBusyInUIThread.
* Jul 05, 2013 2137 mpduff Only a single data type can be selected.
* Jul 05, 2013 2138 mpduff Fixed to not use filter if filter is disabled.
*
* </pre>
@ -113,10 +114,11 @@ public class FilterExpandBar extends Composite implements IFilterUpdate,
private FilterSettingsXML filterSettingsXml;
private String[] dataTypes;
/** The selected data type */
private String dataType;
/** List of common filters */
private ArrayList<String> filterList = null;
private final List<String> filterList = null;
/**
* envelope for filtering.
@ -186,8 +188,11 @@ public class FilterExpandBar extends Composite implements IFilterUpdate,
addSeparator(composite);
}
/**
* Create the filter expand items.
*/
private void createExpandItems() {
if (dataTypes != null && dataTypes.length > 0) {
if (dataType != null) {
final Shell parentShell = this.getShell();
final Job job = new Job("Dataset Discovery...") {
@Override
@ -196,7 +201,7 @@ public class FilterExpandBar extends Composite implements IFilterUpdate,
DataDeliveryGUIUtils.markBusyInUIThread(parentShell);
dataManager.rereadMetaData();
dataManager.readMetaData(dataTypes[0]);
dataManager.readMetaData(dataType);
return Status.OK_STATUS;
}
};
@ -206,37 +211,24 @@ public class FilterExpandBar extends Composite implements IFilterUpdate,
public void done(IJobChangeEvent event) {
try {
DataTypeFilterElementXML dtfe;
HashMap<String, ArrayList<String>> dataFilterMap = new HashMap<String, ArrayList<String>>();
// Get filters for each data type
for (int i = 0; i < dataTypes.length; i++) {
String dataType = dataTypes[i];
dtfe = dataTypeFilterXml.getFilterData(dataType);
ArrayList<String> filterIDList = dtfe
.getFilterIDList();
dataFilterMap.put(dataType, filterIDList);
}
// Now have a list of available filter types
// Need to find the common filters
FilterDefinitionManager filterMan = FilterDefinitionManager
.getInstance();
filterList = filterMan.findCommon(dataFilterMap);
// Get filters for the data type
dtfe = dataTypeFilterXml.getFilterData(dataType);
final List<String> filterIDList = dtfe
.getFilterIDList();
VizApp.runAsync(new Runnable() {
@Override
public void run() {
// Now we have a list of common filters, lets
// build
// them
for (String filter : filterList) {
// build them
for (String filter : filterIDList) {
final FilterElementsXML fex = filterXml
.getFilter(filter);
String clazz = fex.getClazz();
// TODO use reflection here to instantiate
// the
// class
// the class
if (clazz.equals("FilterComp")) {
createFilter(fex);
}
@ -302,8 +294,9 @@ public class FilterExpandBar extends Composite implements IFilterUpdate,
final String PARAMETER = "Parameter";
final String LEVEL = "Level";
if (displayName.equals(DATA_PROVIDER)) {
dualConfig.setFullList(new ArrayList<String>(dataManager
.getAvailableDataProviders()));
Set<String> providerSet = dataManager
.getAvailableDataProvidersByType(dataType);
dualConfig.setFullList(new ArrayList<String>(providerSet));
dualConfig.setSelectedList(getFilterSettingsValues(DATA_PROVIDER));
} else if (displayName.equals(DATA_SET)) {
dualConfig.setFullList(new ArrayList<String>(dataManager
@ -593,31 +586,32 @@ public class FilterExpandBar extends Composite implements IFilterUpdate,
/**
* Update the filters.
*
* @param dataTypes
* Array of data types
* @param dataType
* the data type
* @param envelope
* envelope
*/
public void updateFilters(String[] dataTypes, ReferencedEnvelope envelope) {
this.dataTypes = dataTypes;
public void updateFilters(String dataType, ReferencedEnvelope envelope) {
this.dataType = dataType;
setEnvelope(envelope);
disposeExpandItemsAndControls();
createExpandItems();
}
/**
* Update the filter settings.
*/
private void updateFilterSettings() {
ArrayList<FilterTypeXML> filterTypeList = filterSettingsXml
.getFilterTypeList();
if (filterTypeList != null && filterTypeList.size() > 0) {
for (FilterTypeXML ftx : filterTypeList) {
if (ftx.getFilterType().equals("Data Type")) {
dataTypes = new String[ftx.getValues().size()];
int i = 0;
for (String dataType : ftx.getValues()) {
dataTypes[i] = dataType;
i++;
// only one data type
List<String> values = ftx.getValues();
if (values != null && values.size() > 0) {
dataType = ftx.getValues().get(0);
}
break;
}
}
@ -685,7 +679,6 @@ public class FilterExpandBar extends Composite implements IFilterUpdate,
}
}
}
// return filterSettingsXml;
}
/**

View file

@ -20,7 +20,6 @@
package com.raytheon.uf.viz.datadelivery.filter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@ -35,6 +34,7 @@ import org.geotools.geometry.jts.ReferencedEnvelope;
import com.raytheon.uf.common.datadelivery.registry.DataLevelType.LevelType;
import com.raytheon.uf.common.datadelivery.registry.DataSet;
import com.raytheon.uf.common.datadelivery.registry.DataType;
import com.raytheon.uf.common.datadelivery.registry.GriddedDataSet;
import com.raytheon.uf.common.datadelivery.registry.Provider;
import com.raytheon.uf.common.datadelivery.registry.ProviderType;
@ -68,6 +68,7 @@ import com.raytheon.uf.viz.datadelivery.filter.config.xml.FilterTypeXML;
* Nov 19, 2012 1166 djohnson Clean up JAXB representation of registry objects.
* Dec 10, 2012 1259 bsteffen Switch Data Delivery from LatLon to referenced envelopes.
* Jun 04, 2013 223 mpduff Add data set type to filter.
* Jul 05, 2013 2137 mpduff Single data type.
*
* </pre>
*
@ -79,6 +80,7 @@ public class MetaDataManager {
private static final IUFStatusHandler statusHandler = UFStatus
.getHandler(MetaDataManager.class);
/** The single instance */
private static MetaDataManager instance = new MetaDataManager();
/**
@ -94,7 +96,7 @@ public class MetaDataManager {
// references from a multi-threaded call
private volatile SortedSet<String> allAvailableDataSets;
private volatile SortedSet<String> allAvailableProviders;
private volatile Set<Provider> allAvailableProviders;
private volatile SortedSet<String> allAvailableLevels;
@ -105,9 +107,11 @@ public class MetaDataManager {
*/
private ReferencedEnvelope envelope;
/** reread flag */
private boolean reread = true;
private String[] dataTypes;
/** The data type */
private String dataType;
/**
* Private constructor.
@ -115,6 +119,32 @@ public class MetaDataManager {
private MetaDataManager() {
}
/**
* Get the available data providers for the provided data type.
*
* @param dataType
* The data type
*
* @return SortedSet of available providers
*/
public SortedSet<String> getAvailableDataProvidersByType(String dataType) {
SortedSet<String> providers = new TreeSet<String>();
if (allAvailableProviders == null) {
populateAvailableProviders();
}
for (Provider p : allAvailableProviders) {
for (ProviderType pt : p.getProviderType()) {
if (pt.getDataType().toString().equalsIgnoreCase(dataType)) {
providers.add(p.getName());
break;
}
}
}
return providers;
}
/**
* Get all available Data Providers
*
@ -122,20 +152,37 @@ public class MetaDataManager {
*/
public SortedSet<String> getAvailableDataProviders() {
if (allAvailableProviders == null) {
allAvailableProviders = new TreeSet<String>();
try {
for (Provider provider : DataDeliveryHandlers
.getProviderHandler().getAll()) {
allAvailableProviders.add(provider.getName());
}
} catch (RegistryHandlerException e) {
statusHandler.handle(Priority.PROBLEM,
"Unable to retrieve the list of providers.", e);
}
populateAvailableProviders();
}
return allAvailableProviders;
SortedSet<String> providers = new TreeSet<String>();
for (Provider p : allAvailableProviders) {
providers.add(p.getName());
}
return providers;
}
/**
* Populate the available providers.
*/
private void populateAvailableProviders() {
allAvailableProviders = new HashSet<Provider>();
DataType dataType = DataType.valueOfIgnoreCase(this.dataType);
try {
for (Provider provider : DataDeliveryHandlers.getProviderHandler()
.getAll()) {
ProviderType providerType = provider.getProviderType(dataType);
if (providerType != null) {
allAvailableProviders.add(provider);
}
}
} catch (RegistryHandlerException e) {
statusHandler.handle(Priority.PROBLEM,
"Unable to retrieve the list of providers.", e);
}
}
/**
@ -148,9 +195,10 @@ public class MetaDataManager {
allAvailableDataSets = new TreeSet<String>();
try {
List<String> dataTypeList = new ArrayList<String>();
dataTypeList.add(dataType);
allAvailableDataSets.addAll(DataDeliveryHandlers
.getDataSetNameHandler().getByDataTypes(
Arrays.asList(dataTypes)));
.getDataSetNameHandler().getByDataTypes(dataTypeList));
} catch (RegistryHandlerException e) {
statusHandler.handle(Priority.PROBLEM,
"Unable to retrieve the dataset list.", e);
@ -160,6 +208,11 @@ public class MetaDataManager {
return allAvailableDataSets;
}
/**
* Get the available data types
*
* @return List of data types
*/
public List<String> getAvailableDataTypes() {
Set<String> typeSet = new TreeSet<String>();
@ -195,9 +248,15 @@ public class MetaDataManager {
allAvailableLevels = new TreeSet<String>();
try {
allAvailableLevels.addAll(DataDeliveryHandlers
List<String> dataTypeList = new ArrayList<String>();
dataTypeList.add(dataType);
List<String> levels = DataDeliveryHandlers
.getParameterHandler().getDataLevelTypeDescriptions(
Arrays.asList(dataTypes)));
dataTypeList);
if (levels != null && levels.get(0) != null) {
allAvailableLevels.addAll(levels);
}
} catch (RegistryHandlerException e) {
statusHandler.handle(Priority.PROBLEM,
"Unable to retrieve the levels.", e);
@ -217,9 +276,14 @@ public class MetaDataManager {
allAvailableParameters = new TreeSet<String>();
try {
allAvailableParameters.addAll(DataDeliveryHandlers
.getParameterHandler().getNamesByDataTypes(
Arrays.asList(dataTypes)));
List<String> dataTypeList = new ArrayList<String>();
dataTypeList.add(dataType);
Set<String> parameters = DataDeliveryHandlers
.getParameterHandler()
.getNamesByDataTypes(dataTypeList);
if (parameters != null) {
allAvailableParameters.addAll(parameters);
}
} catch (RegistryHandlerException e) {
statusHandler.handle(Priority.PROBLEM,
"Unable to retrieve the parameter list.", e);
@ -228,6 +292,15 @@ public class MetaDataManager {
return allAvailableParameters;
}
/**
* Get the data set.
*
* @param dataSetName
* The data set name
* @param providerName
* The provider name
* @return The DataSet
*/
public DataSet getDataSet(String dataSetName, String providerName) {
try {
return DataDeliveryHandlers.getDataSetHandler()
@ -311,10 +384,11 @@ public class MetaDataManager {
* Get the metadata
*
* @param dataType
* the data type
*/
public void readMetaData(String dataType) {
if (reread) {
dataTypes = new String[] { dataType };
this.dataType = dataType;
reread = false;
allAvailableDataSets = null;
@ -326,6 +400,9 @@ public class MetaDataManager {
}
}
/**
* Sets flag to reread the metadata
*/
public void rereadMetaData() {
reread = true;
}