/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.target.logger; import java.util.ArrayList; import java.util.List; import com.opengamma.core.position.PortfolioNode; import com.opengamma.core.position.Position; import com.opengamma.engine.target.ComputationTargetType; import com.opengamma.id.UniqueId; /** * Wrapper around a {@link PortfolioNode} instance that will log any deep resolution calls. */ public class LoggedResolutionPortfolioNode extends AbstractLoggedResolution<PortfolioNode> implements PortfolioNode { public LoggedResolutionPortfolioNode(final PortfolioNode underlying, final ResolutionLogger logger) { super(underlying, logger); } // PortfolioNode @Override public UniqueId getParentNodeId() { return getUnderlying().getParentNodeId(); } @Override public int size() { return getUnderlying().size(); } @Override public List<PortfolioNode> getChildNodes() { final List<PortfolioNode> childNodes = getUnderlying().getChildNodes(); final List<PortfolioNode> result = new ArrayList<PortfolioNode>(childNodes.size()); for (PortfolioNode childNode : childNodes) { //log(ComputationTargetType.PORTFOLIO_NODE, childNode); // [PLAT-4491] Nodes are linked by UID not OID result.add(new LoggedResolutionPortfolioNode(childNode, getLogger())); } return result; } @Override public List<Position> getPositions() { final List<Position> positions = getUnderlying().getPositions(); final List<Position> result = new ArrayList<Position>(positions.size()); for (Position position : positions) { log(ComputationTargetType.POSITION, position); result.add(new LoggedResolutionPosition(position, getLogger())); } return result; } @Override public String getName() { return getUnderlying().getName(); } }