package rba.tool.core.sort; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EObject; import rba.core.ComparisonOperator; import rba.core.Expression; import rba.core.RuleObject; public abstract class ComparisonOperatorEvaluator extends ExpressionEvaluator implements ComparisonOperator { protected ComparisonOperator operator; protected T subject; @SuppressWarnings("unchecked") protected ComparisonOperatorEvaluator(ComparisonOperator o) { super(o); operator = o; EObject container = o.eContainer(); while (!(container instanceof RuleObject)) { container = container.eContainer(); if (container == null) break; } if (container != null) { subject = (T) container; } } abstract public boolean evaluate(ValueSortedList list); /** * @param list * @return -1 if it has no suggestion 9999 implies MAX group (last index) */ abstract public int suggestIndex(ValueSortedList list); @Override public EList getOperand() { return operator.getOperand(); } @Override public String getSymbol() { return operator.getSymbol(); } }