/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.view.worker;
import java.util.Set;
import com.opengamma.engine.depgraph.DependencyNode;
import com.opengamma.engine.depgraph.impl.RootDiscardingSubgrapher;
import com.opengamma.engine.target.ComputationTargetType;
import com.opengamma.id.UniqueId;
/**
* Filters a dependency graph to exclude any nodes with a PORTFOLIO or PORTFOLIO_NODE target.
*/
/* package */final class InvalidPortfolioDependencyNodeFilter extends RootDiscardingSubgrapher {
private final Set<UniqueId> _badNodes;
public InvalidPortfolioDependencyNodeFilter(final Set<UniqueId> badNodes) {
_badNodes = badNodes;
}
// RootDiscardingSubgrapher
@Override
public boolean acceptNode(final DependencyNode node) {
final ComputationTargetType nodeType = node.getTarget().getType();
if (nodeType.isTargetType(ComputationTargetType.PORTFOLIO_NODE)) {
return !_badNodes.contains(node.getTarget().getUniqueId());
}
return !nodeType.isTargetType(ComputationTargetType.PORTFOLIO);
}
}