org.apache.commons.jxpath.ri.compiler
Class CoreOperationRelationalExpression

java.lang.Object
  extended by org.apache.commons.jxpath.ri.compiler.Expression
      extended by org.apache.commons.jxpath.ri.compiler.Operation
          extended by org.apache.commons.jxpath.ri.compiler.CoreOperation
              extended by org.apache.commons.jxpath.ri.compiler.CoreOperationRelationalExpression
Direct Known Subclasses:
CoreOperationGreaterThan, CoreOperationGreaterThanOrEqual, CoreOperationLessThan, CoreOperationLessThanOrEqual

public abstract class CoreOperationRelationalExpression
extends CoreOperation

Base implementation of Expression for the operations ">", ">=", "<", "<=".

Since:
JXPath 1.3
Version:
$Revision: 652845 $ $Date: 2008-05-02 12:46:46 -0500 (Fri, 02 May 2008) $
Author:
Matt Benson

Nested Class Summary
 
Nested classes/interfaces inherited from class org.apache.commons.jxpath.ri.compiler.Expression
Expression.PointerIterator, Expression.ValueIterator
 
Field Summary
 
Fields inherited from class org.apache.commons.jxpath.ri.compiler.CoreOperation
ADD_PRECEDENCE, AND_PRECEDENCE, COMPARE_PRECEDENCE, MULTIPLY_PRECEDENCE, NEGATE_PRECEDENCE, OR_PRECEDENCE, RELATIONAL_EXPR_PRECEDENCE, UNION_PRECEDENCE
 
Fields inherited from class org.apache.commons.jxpath.ri.compiler.Operation
args
 
Fields inherited from class org.apache.commons.jxpath.ri.compiler.Expression
NOT_A_NUMBER, ONE, ZERO
 
Constructor Summary
protected CoreOperationRelationalExpression(Expression[] args)
          Create a new CoreOperationRelationalExpression.
 
Method Summary
private  boolean compute(java.lang.Object left, java.lang.Object right)
          Compare left to right.
 java.lang.Object computeValue(EvalContext context)
          Evaluates the expression.
private  boolean containsMatch(java.util.Iterator it, java.lang.Object value)
          Learn whether any element returned from an Iterator matches a given value.
protected abstract  boolean evaluateCompare(int compare)
          Template method for subclasses to evaluate the result of a comparison.
private  boolean findMatch(java.util.Iterator lit, java.util.Iterator rit)
          Learn whether there is an intersection between two Iterators.
protected  int getPrecedence()
          Computes the precedence of the operation.
protected  boolean isSymmetric()
          Returns true if the operation is not sensitive to the order of arguments, e.g.
private  java.lang.Object reduce(java.lang.Object o)
          Reduce an operand for comparison.
 
Methods inherited from class org.apache.commons.jxpath.ri.compiler.CoreOperation
compute, getSymbol, toString
 
Methods inherited from class org.apache.commons.jxpath.ri.compiler.Operation
computeContextDependent, getArguments
 
Methods inherited from class org.apache.commons.jxpath.ri.compiler.Expression
isContextDependent, iterate, iteratePointers
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

CoreOperationRelationalExpression

protected CoreOperationRelationalExpression(Expression[] args)
Create a new CoreOperationRelationalExpression.

Parameters:
args - arguments
Method Detail

computeValue

public final java.lang.Object computeValue(EvalContext context)
Description copied from class: Expression
Evaluates the expression. If the result is a node set, returns the first element of the node set.

Specified by:
computeValue in class CoreOperation
Parameters:
context - evaluation context
Returns:
Object

getPrecedence

protected final int getPrecedence()
Description copied from class: CoreOperation
Computes the precedence of the operation.

Specified by:
getPrecedence in class CoreOperation
Returns:
int precedence

isSymmetric

protected final boolean isSymmetric()
Description copied from class: CoreOperation
Returns true if the operation is not sensitive to the order of arguments, e.g. "=", "and" etc, and false if it is, e.g. "<=", "div".

Specified by:
isSymmetric in class CoreOperation
Returns:
boolean

evaluateCompare

protected abstract boolean evaluateCompare(int compare)
Template method for subclasses to evaluate the result of a comparison.

Parameters:
compare - result of comparison to evaluate
Returns:
ultimate operation success/failure

compute

private boolean compute(java.lang.Object left,
                        java.lang.Object right)
Compare left to right.

Parameters:
left - left operand
right - right operand
Returns:
operation success/failure

reduce

private java.lang.Object reduce(java.lang.Object o)
Reduce an operand for comparison.

Parameters:
o - Object to reduce
Returns:
reduced operand

containsMatch

private boolean containsMatch(java.util.Iterator it,
                              java.lang.Object value)
Learn whether any element returned from an Iterator matches a given value.

Parameters:
it - Iterator
value - to look for
Returns:
whether a match was found

findMatch

private boolean findMatch(java.util.Iterator lit,
                          java.util.Iterator rit)
Learn whether there is an intersection between two Iterators.

Parameters:
lit - left Iterator
rit - right Iterator
Returns:
whether a match was found