/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.web.analytics; import java.util.concurrent.ExecutorService; import com.google.common.base.Supplier; import com.opengamma.core.position.Portfolio; import com.opengamma.core.position.PositionSource; import com.opengamma.core.security.SecuritySource; import com.opengamma.engine.view.compilation.PortfolioCompiler; import com.opengamma.id.ObjectId; import com.opengamma.id.VersionCorrection; import com.opengamma.util.ArgumentChecker; /** * Supplies a fully resolved portfolio. */ /* package */ class PortfolioSupplier implements Supplier<Portfolio> { private final ObjectId _portfolioId; private final VersionCorrection _versionCorrection; private final PositionSource _positionSource; private final SecuritySource _securitySource; private final ExecutorService _executor; /* package */ PortfolioSupplier(ObjectId portfolioId, VersionCorrection versionCorrection, PositionSource positionSource, SecuritySource securitySource, ExecutorService executor) { _securitySource = securitySource; _executor = executor; ArgumentChecker.notNull(positionSource, "positionSource"); _positionSource = positionSource; _portfolioId = portfolioId; _versionCorrection = versionCorrection; } @Override public Portfolio get() { if (_portfolioId != null) { Portfolio unresolvedPortfolio = _positionSource.getPortfolio(_portfolioId, _versionCorrection); return PortfolioCompiler.resolvePortfolio(unresolvedPortfolio, _executor, _securitySource); } else { return null; } } }