Package com.opengamma.engine.marketdata.historical

Source Code of com.opengamma.engine.marketdata.historical.HistoricalShockMarketDataProviderFactory

/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.marketdata.historical;

import java.util.Objects;

import com.opengamma.engine.marketdata.MarketDataProvider;
import com.opengamma.engine.marketdata.MarketDataProviderFactory;
import com.opengamma.engine.marketdata.resolver.MarketDataProviderResolver;
import com.opengamma.engine.marketdata.spec.HistoricalShockMarketDataSpecification;
import com.opengamma.engine.marketdata.spec.MarketDataSpecification;
import com.opengamma.livedata.UserPrincipal;
import com.opengamma.util.ArgumentChecker;

/**
* Factory for creating instances of {@link HistoricalShockMarketDataProvider}.
*/
public class HistoricalShockMarketDataProviderFactory implements MarketDataProviderFactory {

  private final MarketDataProviderResolver _resolver;

  public HistoricalShockMarketDataProviderFactory(MarketDataProviderResolver resolver) {
    ArgumentChecker.notNull(resolver, "resolver");
    _resolver = resolver;
  }

  @Override
  public HistoricalShockMarketDataProvider create(UserPrincipal user, MarketDataSpecification marketDataSpec) {
    if (!(marketDataSpec instanceof HistoricalShockMarketDataSpecification)) {
      throw new IllegalArgumentException("Market data spec must be a HistoricalShockMarketDataSpecification: " + marketDataSpec);
    }
    HistoricalShockMarketDataSpecification shockSpec = (HistoricalShockMarketDataSpecification) marketDataSpec;
    MarketDataProvider provider1 = resolve(user, shockSpec.getHistoricalSpecification1());
    MarketDataProvider provider2 = resolve(user, shockSpec.getHistoricalSpecification2());
    MarketDataProvider baseProvider = resolve(user, shockSpec.getBaseSpecification());
    return new HistoricalShockMarketDataProvider(provider1, provider2, baseProvider);
  }

  private MarketDataProvider resolve(UserPrincipal user, MarketDataSpecification spec) {
    return Objects.requireNonNull(_resolver.resolve(user, spec));
  }
}
TOP

Related Classes of com.opengamma.engine.marketdata.historical.HistoricalShockMarketDataProviderFactory

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.