/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.provider.historicaltimeseries.impl; import java.util.Map; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.opengamma.provider.historicaltimeseries.HistoricalTimeSeriesProvider; import com.opengamma.provider.historicaltimeseries.HistoricalTimeSeriesProviderGetRequest; import com.opengamma.provider.historicaltimeseries.HistoricalTimeSeriesProviderGetResult; /** * A historical time-series provider that delegates based on the data source in the request. */ public class DelegatingHistoricalTimeSeriesProvider extends AbstractHistoricalTimeSeriesProvider { /** * The delegating providers. */ private final ImmutableMap<String, HistoricalTimeSeriesProvider> _providers; /** * Creates an instance. * * @param providers the providers to use, keyed by data source, not null */ public DelegatingHistoricalTimeSeriesProvider(Map<String, HistoricalTimeSeriesProvider> providers) { _providers = ImmutableMap.copyOf(providers); } //------------------------------------------------------------------------- @Override protected HistoricalTimeSeriesProviderGetResult doBulkGet(HistoricalTimeSeriesProviderGetRequest request) { HistoricalTimeSeriesProvider underlying = _providers.get(request.getDataSource()); if (underlying == null) { throw new IllegalArgumentException("Unknown data source: " + request.getDataSource()); } return underlying.getHistoricalTimeSeries(request); } //------------------------------------------------------------------------- @Override public String toString() { return DelegatingHistoricalTimeSeriesProvider.class.getSimpleName() + ImmutableList.copyOf(_providers.keySet()); } }