/** * Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.integration.tool.enginedebugger.node; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.opengamma.engine.value.ValueRequirement; import com.opengamma.engine.value.ValueSpecification; /** * A wrapper for a map of value specification to value requirement that makes it easier to write * a tree table model */ public class ValueSpecificationToRequirementMapNode implements TreeTableNode { private static final Logger s_logger = LoggerFactory.getLogger(ValueSpecificationToRequirementMapNode.class); private static final Object NAME = "Map of ValueSpec->ValueReq"; private Map<ValueSpecification, ValueRequirement> _map; private String _description; private List<ValueSpecification> _keySet; private Object _parent; public ValueSpecificationToRequirementMapNode(Object parent, Map<ValueSpecification, ValueRequirement> map, String description) { _parent = parent; _map = map; _description = description; _keySet = new ArrayList<ValueSpecification>(map.keySet()); } public String getDescription() { return _description; } private int getSize() { return _keySet.size(); } private SpecToRequirementEntryNode getEntry(int index) { ValueSpecification valueSpecification = _keySet.get(index); ValueRequirement valueRequirement = _map.get(valueSpecification); return new SpecToRequirementEntryNode(valueSpecification, valueRequirement); } private int indexOf(SpecToRequirementEntryNode entry) { return _keySet.indexOf(entry.getValueSpecification()); } @Override public Object getChildAt(int index) { return getEntry(index); } @Override public int getChildCount() { return getSize(); } @Override public int getIndexOfChild(Object child) { if (child instanceof SpecToRequirementEntryNode) { return indexOf((SpecToRequirementEntryNode) child); } return -1; } @Override public Object getColumn(int column) { switch (column) { case 0: return NAME + ((getChildCount() == 0) ? " (Empty)" : ""); case 1: return _description; } return null; } }