/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.master.historicaltimeseries.impl;
import java.util.Map;
import java.util.Set;
import org.threeten.bp.LocalDate;
import com.opengamma.id.ExternalId;
import com.opengamma.id.UniqueId;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesLoader;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesLoaderRequest;
import com.opengamma.master.historicaltimeseries.HistoricalTimeSeriesLoaderResult;
import com.opengamma.util.ArgumentChecker;
/**
* Abstract implementation of a loader of time-series information.
* <p>
* This provides default implementations of the interface methods that delegate to a
* protected method that subclasses must implement.
*/
public abstract class AbstractHistoricalTimeSeriesLoader implements HistoricalTimeSeriesLoader {
/**
* Creates an instance.
*/
protected AbstractHistoricalTimeSeriesLoader() {
}
//-------------------------------------------------------------------------
@Override
public Map<ExternalId, UniqueId> loadTimeSeries(
Set<ExternalId> identifiers, String dataProvider, String dataField, LocalDate startDate, LocalDate endDate) {
HistoricalTimeSeriesLoaderRequest request = HistoricalTimeSeriesLoaderRequest.create(identifiers, dataProvider, dataField, startDate, endDate);
HistoricalTimeSeriesLoaderResult result = loadTimeSeries(request);
return result.getResultMap();
}
@Override
public HistoricalTimeSeriesLoaderResult loadTimeSeries(HistoricalTimeSeriesLoaderRequest request) {
ArgumentChecker.notNull(request, "request");
// short-cut empty case
if (request.getExternalIds().isEmpty()) {
return new HistoricalTimeSeriesLoaderResult();
}
// get securities
return doBulkLoad(request);
}
//-------------------------------------------------------------------------
/**
* Loads the time-series.
*
* @param request the request, with a non-empty list of IDs, not null
* @return the result, not null
*/
protected abstract HistoricalTimeSeriesLoaderResult doBulkLoad(HistoricalTimeSeriesLoaderRequest request);
}