Package com.opengamma.provider.historicaltimeseries.impl

Source Code of com.opengamma.provider.historicaltimeseries.impl.MarketDataProviderHistoricalTimeSeriesSource

/**
* Copyright (C) 2013 - 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 java.util.Set;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.threeten.bp.LocalDate;

import com.google.common.collect.Maps;
import com.opengamma.core.change.ChangeManager;
import com.opengamma.core.historicaltimeseries.HistoricalTimeSeries;
import com.opengamma.core.historicaltimeseries.HistoricalTimeSeriesSource;
import com.opengamma.core.historicaltimeseries.impl.SimpleHistoricalTimeSeries;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.UniqueId;
import com.opengamma.id.UniqueIdSupplier;
import com.opengamma.provider.historicaltimeseries.HistoricalTimeSeriesProvider;
import com.opengamma.provider.historicaltimeseries.HistoricalTimeSeriesProviderGetRequest;
import com.opengamma.provider.historicaltimeseries.HistoricalTimeSeriesProviderGetResult;
import com.opengamma.timeseries.date.localdate.LocalDateDoubleTimeSeries;
import com.opengamma.util.ArgumentChecker;
import com.opengamma.util.time.LocalDateRange;
import com.opengamma.util.tuple.Pair;

/**
* HTS source which delegates all serviceable requests to the HTS provider.
*/
public abstract class MarketDataProviderHistoricalTimeSeriesSource implements HistoricalTimeSeriesSource {

  /**
   * Logger.
   */
  private static final Logger s_logger = LoggerFactory.getLogger(MarketDataProviderHistoricalTimeSeriesSource.class);

  /**
   * The id supplier service.
   */
  private final UniqueIdSupplier _uniqueIdSupplier;
  /**
   * The provider.
   */
  private final HistoricalTimeSeriesProvider _provider;
  /**
   * The name of the provider.
   */
  private final String _providerName;

  /**
   * Constructor for the class taking the provider to be used for all requests.
   *
   * @param providerName the name of the data provider
   * @param uniqueIdSupplier the supplier for unique ids
   * @param provider the provider of HTS data
   */
  public MarketDataProviderHistoricalTimeSeriesSource(String providerName,
                                                      UniqueIdSupplier uniqueIdSupplier,
                                                      HistoricalTimeSeriesProvider provider) {

    ArgumentChecker.notNull(providerName, "providerName");
    ArgumentChecker.notNull(uniqueIdSupplier, "uniqueIdSupplier");
    ArgumentChecker.notNull(provider, "provider");
    _providerName = providerName;
    _uniqueIdSupplier = uniqueIdSupplier;
    _provider = provider;

  }

  /**
   * Exception to be thrown if operation cannot be performed due to unique id.
   */
  private UnsupportedOperationException createUniqueIdException() {
    return new UnsupportedOperationException(
        "Unable to retrieve historical time-series from " + _providerName + " using unique identifier");
  }

  /**
   * Exception to be thrown if operation cannot be performed due to config.
   */
  private UnsupportedOperationException createConfigException() {
    return new UnsupportedOperationException(
        "Unable to retrieve historical time-series from " + _providerName + " using config");
  }

  /**
   * Exception to be thrown if operation cannot be performed due to validity date.
   */
  private UnsupportedOperationException createValidityDateException() {
    return new UnsupportedOperationException(
        "Unable to retrieve historical time-series from " + _providerName + " using identifier validity date");
  }

  //-------------------------------------------------------------------------
  @Override
  public ChangeManager changeManager() {
    throw new UnsupportedOperationException("Change events not supported");
  }

  private HistoricalTimeSeries doGetHistoricalTimeSeries(
      ExternalIdBundle externalIdBundle, String dataSource, String dataProvider, String dataField,
      LocalDateRange dateRange, Integer maxPoints) {

    s_logger.info("Getting HistoricalTimeSeries for security {}", externalIdBundle);

    HistoricalTimeSeriesProviderGetRequest request = HistoricalTimeSeriesProviderGetRequest.createGet(externalIdBundle, dataSource, dataProvider, dataField, dateRange);
    request.setMaxPoints(maxPoints);
    HistoricalTimeSeriesProviderGetResult result = _provider.getHistoricalTimeSeries(request);
    LocalDateDoubleTimeSeries timeSeries = result.getResultMap().get(externalIdBundle);
    if (timeSeries == null) {
      s_logger.info("Unable to get HistoricalTimeSeries for {}", externalIdBundle);
      return null;
    }
    return new SimpleHistoricalTimeSeries(_uniqueIdSupplier.get(), timeSeries);
  }

  //-------------------------------------------------------------------------
  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(UniqueId uniqueId) {
    throw createUniqueIdException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(UniqueId uniqueId, LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd) {


    throw createUniqueIdException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(UniqueId uniqueId, LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd, int maxPoints) {
    throw createUniqueIdException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(UniqueId uniqueId) {
    throw createUniqueIdException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(UniqueId uniqueId, LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd) {
    throw createUniqueIdException();
  }

  //-------------------------------------------------------------------------
  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(
      ExternalIdBundle identifiers, String dataSource, String dataProvider, String dataField) {
    return doGetHistoricalTimeSeries(identifiers, dataSource, dataProvider, dataField, LocalDateRange.ALL, null);
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(
      ExternalIdBundle identifiers, String dataSource, String dataProvider, String dataField,
      LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd) {
    if (!includeStart && start != null) {
      start = start.plusDays(1);
    }
    LocalDateRange dateRange = LocalDateRange.ofNullUnbounded(start, end, includeEnd);
    return doGetHistoricalTimeSeries(identifiers, dataSource, dataProvider, dataField, dateRange, null);
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(
      ExternalIdBundle identifiers, String dataSource, String dataProvider, String dataField,
      LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd, int maxPoints) {
    if (!includeStart && start != null) {
      start = start.plusDays(1);
    }
    LocalDateRange dateRange = LocalDateRange.ofNullUnbounded(start, end, includeEnd);
    Integer maxPointsVal = (maxPoints == 0 ? null : maxPoints);
    return doGetHistoricalTimeSeries(identifiers, dataSource, dataProvider, dataField, dateRange, maxPointsVal);
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(
      ExternalIdBundle identifiers, LocalDate identifierValidityDate, String dataSource, String dataProvider, String dataField) {
    throw createValidityDateException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(ExternalIdBundle identifiers,
      LocalDate identifierValidityDate, String dataSource, String dataProvider, String dataField, LocalDate start,
      boolean includeStart, LocalDate end, boolean includeEnd) {
    throw createValidityDateException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(ExternalIdBundle identifierBundle, LocalDate identifierValidityDate, String dataSource, String dataProvider, String dataField, LocalDate start,
      boolean includeStart, LocalDate end, boolean includeEnd, int maxPoints) {
    throw createValidityDateException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(ExternalIdBundle identifierBundle, LocalDate identifierValidityDate, String dataSource, String dataProvider, String dataField) {
    throw createValidityDateException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(ExternalIdBundle identifierBundle, LocalDate identifierValidityDate, String dataSource, String dataProvider, String dataField, LocalDate start,
      boolean includeStart, LocalDate end, boolean includeEnd) {
    throw createValidityDateException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(ExternalIdBundle identifierBundle, String dataSource, String dataProvider, String dataField) {
    throw createValidityDateException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(ExternalIdBundle identifierBundle, String dataSource, String dataProvider, String dataField, LocalDate start, boolean includeStart, LocalDate end,
      boolean includeEnd) {
    throw createValidityDateException();
  }

  //-------------------------------------------------------------------------
  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(
      String dataField, ExternalIdBundle identifiers, String resolutionKey) {
    throw createConfigException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(
      String dataField, ExternalIdBundle identifiers, String resolutionKey,
      LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd) {
    throw createConfigException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(
      String dataField, ExternalIdBundle identifiers, LocalDate identifierValidityDate, String resolutionKey) {
    throw createConfigException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(
      String dataField, ExternalIdBundle identifiers, LocalDate identifierValidityDate, String resolutionKey,
      LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd) {
    throw createConfigException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(String dataField, ExternalIdBundle identifierBundle, String resolutionKey, LocalDate start, boolean includeStart, LocalDate end,
      boolean includeEnd, int maxPoints) {
    throw createConfigException();
  }

  @Override
  public HistoricalTimeSeries getHistoricalTimeSeries(String dataField, ExternalIdBundle identifierBundle, LocalDate identifierValidityDate, String resolutionKey, LocalDate start,
      boolean includeStart, LocalDate end, boolean includeEnd, int maxPoints) {
    throw createConfigException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(String dataField, ExternalIdBundle identifierBundle, String resolutionKey) {
    throw createConfigException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(
      String dataField, ExternalIdBundle identifierBundle, String resolutionKey, LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd) {
    throw createConfigException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(String dataField, ExternalIdBundle identifierBundle, LocalDate identifierValidityDate, String resolutionKey) {
    throw createConfigException();
  }

  @Override
  public Pair<LocalDate, Double> getLatestDataPoint(String dataField, ExternalIdBundle identifierBundle, LocalDate identifierValidityDate, String resolutionKey, LocalDate start, boolean includeStart,
      LocalDate end, boolean includeEnd) {
    throw createConfigException();
  }

  //-------------------------------------------------------------------------
  @Override
  public Map<ExternalIdBundle, HistoricalTimeSeries> getHistoricalTimeSeries(
      Set<ExternalIdBundle> externalIdBundles, String dataSource, String dataProvider, String dataField, LocalDate start, boolean includeStart, LocalDate end, boolean includeEnd) {

    if (!includeStart && start != null) {
      start = start.plusDays(1);
    }
    LocalDateRange dateRange = LocalDateRange.ofNullUnbounded(start, end, includeEnd);
    s_logger.info("Getting HistoricalTimeSeries for securities {}", externalIdBundles);

    Map<ExternalIdBundle, LocalDateDoubleTimeSeries> map = _provider.getHistoricalTimeSeries(externalIdBundles, dataSource, dataProvider, dataField, dateRange);
    Map<ExternalIdBundle, HistoricalTimeSeries> result = Maps.newHashMap();
    for (ExternalIdBundle bundle : map.keySet()) {
      LocalDateDoubleTimeSeries ts = map.get(bundle);
      HistoricalTimeSeries hts = null;
      if (ts != null) {
        hts = new SimpleHistoricalTimeSeries(_uniqueIdSupplier.get(), ts);
      }
      result.put(bundle, hts);
    }
    return result;
  }

  @Override
  public ExternalIdBundle getExternalIdBundle(UniqueId uniqueId) {
    throw createConfigException();
  }
}
TOP

Related Classes of com.opengamma.provider.historicaltimeseries.impl.MarketDataProviderHistoricalTimeSeriesSource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.