/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.financial.analytics.model.pnl;
import java.util.Set;
import com.opengamma.core.position.PortfolioNode;
import com.opengamma.core.position.Position;
import com.opengamma.core.position.impl.PositionAccumulator;
import com.opengamma.core.security.Security;
import com.opengamma.engine.ComputationTarget;
import com.opengamma.engine.function.FunctionCompilationContext;
import com.opengamma.engine.function.FunctionDefinition;
import com.opengamma.financial.analytics.MissingInputsFunction;
import com.opengamma.financial.security.FinancialSecurityUtils;
import com.opengamma.financial.security.bond.BondSecurity;
/**
*
*/
public class PortfolioExchangeTradedDailyPnLFunction extends AbstractPortfolioDailyPnLFunction {
@Override
public boolean canApplyTo(FunctionCompilationContext context, ComputationTarget target) {
final PortfolioNode node = target.getPortfolioNode();
final Set<Position> allPositions = PositionAccumulator.getAccumulatedPositions(node);
for (Position position : allPositions) {
Security positionSecurity = position.getSecurity();
if (!FinancialSecurityUtils.isExchangeTraded(positionSecurity) && !(positionSecurity instanceof BondSecurity)) {
return false;
}
}
return true;
}
@Override
public String getShortName() {
return "PortfolioDailyEquityPnL";
}
/**
* Declared implementation.
*/
public static class Impl extends MissingInputsFunction {
public Impl() {
super((FunctionDefinition) new PortfolioExchangeTradedDailyPnLFunction());
}
}
}