/** * Copyright (C) 2009 - 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.Map; import com.opengamma.engine.value.ValueRequirement; import com.opengamma.engine.value.ValueSpecification; /** * Extended abstract failure node that adds a map as standard. */ public abstract class AbstractFailureWithRequirementsNode extends AbstractFailureNode { private ValueSpecificationToRequirementMapNode _valueSpecificationToRequirementMap; public AbstractFailureWithRequirementsNode(Object parent, ValueRequirement valueRequirement, String function, ValueSpecification desiredOutput, Map<ValueSpecification, ValueRequirement> satisfied, String mapName) { super(parent, valueRequirement, function, desiredOutput); _valueSpecificationToRequirementMap = new ValueSpecificationToRequirementMapNode(this, satisfied, mapName); } @Override public Object getChildAt(int index) { switch (index) { case 3: return _valueSpecificationToRequirementMap; default: return super.getChildAt(index); } } @Override public int getIndexOfChild(Object child) { if (child.equals(_valueSpecificationToRequirementMap)) { return 3; } else { return super.getIndexOfChild(child); } } @Override public int getChildCount() { return 4; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((_valueSpecificationToRequirementMap == null) ? 0 : _valueSpecificationToRequirementMap.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } if (!(obj instanceof AbstractFailureWithRequirementsNode)) { return false; } AbstractFailureWithRequirementsNode other = (AbstractFailureWithRequirementsNode) obj; if (_valueSpecificationToRequirementMap == null) { if (other._valueSpecificationToRequirementMap != null) { return false; } } else if (!_valueSpecificationToRequirementMap.equals(other._valueSpecificationToRequirementMap)) { return false; } return true; } }