/** * Return true if the supplied expression "contradicts" this expression. If the supplied * expression is not of the same type, then it cannot contradict it. If the names are different * then there can be no contradiction. * * <p>Contradiction occurs if the operator is the same or if they aren't the same and the operator * is < or > and the values aren't simultanteously achievable. * * @param o Expression to examine for contradiction. */ public boolean contradicts(Expression o) { if (!(o instanceof KVOpExpression)) return (false); KVOpExpression other = (KVOpExpression) o; if (getName().compareTo(other.getName()) != 0) return (false); if (getOp() != other.getOp()) { if (getOp() != NT && other.getOp() != NT) { if (getOp() == GT) { if (getValue() < other.getValue()) return (false); } else { if (getValue() > other.getValue()) return (false); } } else return (false); } return (true); }
/** * Indicates whether some other KVOpExpression is "equal to this one. * * @param o the reference object with which to compare. * @return <code>true</code> if this object is the same as the o argument; <code>false</code> * otherwise. * @see #hashCode() */ public boolean equals(Object o) { if (o == this) return (true); if (!(o instanceof KVOpExpression)) return (false); KVOpExpression other = (KVOpExpression) o; if (getName().compareTo(other.getName()) != 0 || op != other.getOp() || val != other.getValue()) return (false); return (true); }