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
[formerly9aaf06ab73
] [formerly9f6213f9a5
[formerly 1015a76693e73c52d2bc56c18c4f3dfa25092771]] Former-commit-id:9f6213f9a5
Former-commit-id:502a141297
This commit is contained in:
parent
33ec4dd688
commit
7a8d39b1da
3 changed files with 255 additions and 171 deletions
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue