/* * Copyright Aduna (http://www.aduna-software.com/) (c) 1997-2007. * * Licensed under the Aduna BSD-style license. */ package org.openrdf.query.algebra; /** * A comparison between two values. */ public class Compare extends BinaryValueOperator { /*---------------* * enum Operator * *---------------*/ public enum CompareOp { /** equal to */ EQ("="), /** not equal to */ NE("!="), /** lower than */ LT("<"), /** lower than or equal to */ LE("<="), /** greater than or equal to */ GE(">="), /** greater than */ GT(">"); private String symbol; CompareOp(String symbol) { this.symbol = symbol; } public String getSymbol() { return symbol; } } /*-----------* * Variables * *-----------*/ private CompareOp operator; /*--------------* * Constructors * *--------------*/ public Compare() { } public Compare(ValueExpr leftArg, ValueExpr rightArg) { this(leftArg, rightArg, CompareOp.EQ); } public Compare(ValueExpr leftArg, ValueExpr rightArg, CompareOp operator) { super(leftArg, rightArg); setOperator(operator); } /*---------* * Methods * *---------*/ public CompareOp getOperator() { return operator; } public void setOperator(CompareOp operator) { assert operator != null : "operator must not be null"; this.operator = operator; } public <X extends Exception> void visit(QueryModelVisitor<X> visitor) throws X { visitor.meet(this); } @Override public String getSignature() { return super.getSignature() + " (" + operator.getSymbol() + ")"; } @Override public Compare clone() { return (Compare)super.clone(); } }