/** * 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 java.util.Set; import com.opengamma.engine.depgraph.ResolutionFailure; import com.opengamma.engine.value.ValueRequirement; import com.opengamma.engine.value.ValueSpecification; /** * Node representing a failed function (more than one unsatisfied value requirements) */ public class FailedFunctionNode extends AbstractFailureWithRequirementsNode { private static final String NAME = "FailedFunction: 1+ unsatisfied ValueReqs"; private UnsatisfiedResolutionFailuresNode _unsatisfiedFailures; public FailedFunctionNode(Object parent, ValueRequirement valueRequirement, String function, ValueSpecification desiredOutput, Map<ValueSpecification, ValueRequirement> satisfied, Set<ResolutionFailure> unsatisfied) { super(parent, valueRequirement, function, desiredOutput, satisfied, "Satisfied"); _unsatisfiedFailures = new UnsatisfiedResolutionFailuresNode(_parent, unsatisfied); } @Override public Object getChildAt(int index) { switch (index) { case 4: return _unsatisfiedFailures; default: return super.getChildAt(index); } } @Override public int getIndexOfChild(Object child) { if (child.equals(_unsatisfiedFailures)) { return 4; } else { return super.getIndexOfChild(child); } } @Override public int getChildCount() { return 5; } @Override public Object getColumn(int column) { if (column == 0) { return NAME; } else if (column == 1) { return _functionEntry.getFunctionName(); } return null; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + ((_unsatisfiedFailures == null) ? 0 : _unsatisfiedFailures.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (!super.equals(obj)) { return false; } if (!(obj instanceof FailedFunctionNode)) { return false; } FailedFunctionNode other = (FailedFunctionNode) obj; if (_unsatisfiedFailures == null) { if (other._unsatisfiedFailures != null) { return false; } } else if (!_unsatisfiedFailures.equals(other._unsatisfiedFailures)) { return false; } return true; } }