try {
ViewDefinition viewDefinition = _compiledViewDef.getViewDefinition();
for (final String calcConfigName : viewDefinition.getAllCalculationConfigurationNames()) {
ViewCalculationConfiguration calcConfig = viewDefinition.getCalculationConfiguration(calcConfigName);
final ValueMappings valueMappings = new ValueMappings(_compiledViewDef);
final ViewCalculationResultModel calculationResult = _viewComputationResultModel.getCalculationResult(calcConfigName);
final Map<String, Set<Pair<String, ValueProperties>>> portfolioRequirementsBySecurityType = calcConfig.getPortfolioRequirementsBySecurityType();
Portfolio portfolio = _compiledViewDef.getPortfolio();
PortfolioNodeTraverser traverser = new DepthFirstPortfolioNodeTraverser(new PortfolioNodeTraversalCallback() {
@Override
public void preOrderOperation(PortfolioNode parentNode, Position position) {
UniqueId positionId = position.getUniqueId().toLatest();
// then construct a chained target spec pointing at a specific position.
ComputationTargetSpecification breadcrumbTargetSpec = ComputationTargetSpecification.of(parentNode).containing(ComputationTargetType.POSITION, positionId);
ComputationTargetSpecification targetSpec = ComputationTargetSpecification.of(position);
Map<Pair<String, ValueProperties>, ComputedValueResult> values = calculationResult.getValues(targetSpec);
String securityType = position.getSecurity().getSecurityType();
Set<Pair<String, ValueProperties>> valueRequirements = portfolioRequirementsBySecurityType.get(securityType);
s_logger.error("Processing valueRequirement " + valueRequirements + " for security type " + securityType);
if (valueRequirements != null) {
for (Pair<String, ValueProperties> valueRequirement : valueRequirements) {