/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.swing;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import javax.swing.AbstractListModel;
import javax.swing.ComboBoxModel;
import javax.swing.SwingWorker;
import com.opengamma.OpenGammaRuntimeException;
import com.opengamma.core.config.impl.ConfigItem;
import com.opengamma.engine.marketdata.spec.LiveMarketDataSpecification;
import com.opengamma.engine.marketdata.spec.MarketDataSpecification;
import com.opengamma.master.config.ConfigMaster;
import com.opengamma.master.config.ConfigSearchRequest;
import com.opengamma.master.config.ConfigSearchResult;
import com.opengamma.master.historicaltimeseries.impl.HistoricalTimeSeriesRating;
import com.opengamma.provider.livedata.LiveDataMetaDataProvider;
import com.opengamma.provider.livedata.LiveDataMetaDataProviderRequest;
import com.opengamma.provider.livedata.LiveDataMetaDataProviderResult;
/**
* List/ComboBox model for historical market data specifications
*/
public class HistoricalMarketDataSpecificationListModel extends AbstractListModel<String> implements ComboBoxModel<String> {
private static final long serialVersionUID = 1L;
private List<String> _names = Collections.emptyList();
private Object _selected;
public HistoricalMarketDataSpecificationListModel(final ConfigMaster configMaster) {
SwingWorker<List<String>, Object> worker = new SwingWorker<List<String>, Object>() {
@Override
protected List<String> doInBackground() throws Exception {
List<String> resolverNames = new ArrayList<>();
ConfigSearchRequest<HistoricalTimeSeriesRating> configSearchRequest = new ConfigSearchRequest<HistoricalTimeSeriesRating>();
configSearchRequest.setType(HistoricalTimeSeriesRating.class);
ConfigSearchResult<HistoricalTimeSeriesRating> searchResults = configMaster.search(configSearchRequest);
for (ConfigItem<HistoricalTimeSeriesRating> item : searchResults.getValues()) {
resolverNames.add(item.getName());
}
return resolverNames;
}
@Override
protected void done() {
try {
_names = get();
fireIntervalAdded(HistoricalMarketDataSpecificationListModel.this, 0, _names.size() - 1);
} catch (InterruptedException ex) {
throw new OpenGammaRuntimeException("InterruptedException retreiving available market data specifications", ex);
} catch (ExecutionException ex) {
throw new OpenGammaRuntimeException("ExecutionException retreiving available market data specifications", ex);
}
}
};
worker.execute();
}
@Override
public int getSize() {
return _names.size();
}
@Override
public String getElementAt(int index) {
return _names.get(index);
}
@Override
public void setSelectedItem(Object anItem) {
_selected = anItem;
}
@Override
public Object getSelectedItem() {
return _selected;
}
}