com.opengamma.provider.historicaltimeseries.impl.DelegatingHistoricalTimeSeriesProvider.java Source code

Java tutorial

Introduction

Here is the source code for com.opengamma.provider.historicaltimeseries.impl.DelegatingHistoricalTimeSeriesProvider.java

Source

/**
 * 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());
    }

}