/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.marketdata.snapshot;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.opengamma.core.marketdatasnapshot.MarketDataSnapshotSource;
import com.opengamma.engine.marketdata.MarketDataProvider;
import com.opengamma.engine.marketdata.MarketDataProviderFactory;
import com.opengamma.engine.marketdata.availability.MarketDataAvailabilityFilter;
import com.opengamma.engine.marketdata.spec.MarketDataSpecification;
import com.opengamma.engine.marketdata.spec.UserMarketDataSpecification;
import com.opengamma.livedata.UserPrincipal;
import com.opengamma.util.ArgumentChecker;
/**
* A factory for {@link UserMarketDataProvider} instances.
*/
public class UserMarketDataProviderFactory implements MarketDataProviderFactory {
private static final Logger s_logger = LoggerFactory.getLogger(UserMarketDataProviderFactory.class);
private final MarketDataSnapshotSource _snapshotSource;
public UserMarketDataProviderFactory(final MarketDataSnapshotSource snapshotSource) {
ArgumentChecker.notNull(snapshotSource, "snapshotSource");
_snapshotSource = snapshotSource;
}
/**
* Creates a market data provider based on snapshots.
*
* @param snapshotSource the snapshots, not null
* @param baseMarketDataAvailability ignored (see PLAT-1459)
* @deprecated baseMarketDataAvailability not used, see PLAT-1459
*/
@Deprecated
public UserMarketDataProviderFactory(final MarketDataSnapshotSource snapshotSource, final MarketDataAvailabilityFilter baseMarketDataAvailability) {
this(snapshotSource);
s_logger.error("Call to deprecated constructor (see PLAT-1459)");
}
@Override
public MarketDataProvider create(final UserPrincipal marketDataUser, final MarketDataSpecification marketDataSpec) {
final UserMarketDataSpecification userMarketDataSpec = (UserMarketDataSpecification) marketDataSpec;
final UserMarketDataProvider marketDataProvider = new UserMarketDataProvider(getSnapshotSource(), userMarketDataSpec.getUserSnapshotId());
return marketDataProvider;
}
private MarketDataSnapshotSource getSnapshotSource() {
return _snapshotSource;
}
}