/**
* 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 com.opengamma.engine.value.ValueRequirement;
/**
* Node representing a ValueRequirement
*/
public class ValueRequirementNode implements TreeTableNode {
private static final String NAME = "ValueRequirement";
/**
* Value requirement itself
*/
protected ValueRequirement _valueRequirement;
@SuppressWarnings("unused")
private Object _parent;
public ValueRequirementNode(Object parent, ValueRequirement valueRequirement) {
_parent = parent;
_valueRequirement = valueRequirement;
}
@Override
public Object getChildAt(int index) {
if (_valueRequirement != null) {
switch (index) {
case 0:
return new ComputationTargetReferenceNode(this, _valueRequirement.getTargetReference());
case 1:
return new ValuePropertiesNode(this, _valueRequirement.getConstraints());
}
}
return null;
}
@Override
public int getChildCount() {
if (_valueRequirement != null) {
return 2;
} else {
return 0;
}
}
@Override
public int getIndexOfChild(Object child) {
if (_valueRequirement != null) {
if (_valueRequirement.getTargetReference() != null) {
if (child instanceof ComputationTargetReferenceNode) {
if (child.equals(new ComputationTargetReferenceNode(this, _valueRequirement.getTargetReference()))) {
return 0;
}
} else if (child instanceof ValuePropertiesNode) {
if (child.equals(new ValuePropertiesNode(this, _valueRequirement.getConstraints()))) {
return 1;
}
}
}
}
return -1;
}
@Override
public Object getColumn(int column) {
if (column == 0) {
return NAME;
} else if (column == 1) {
return _valueRequirement.getValueName();
}
return null;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((_valueRequirement == null) ? 0 : _valueRequirement.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof ValueRequirementNode)) {
return false;
}
ValueRequirementNode other = (ValueRequirementNode) obj;
if (_valueRequirement == null) {
if (other._valueRequirement != null) {
return false;
}
} else if (!_valueRequirement.equals(other._valueRequirement)) {
return false;
}
return true;
}
}