org.apache.poi.hssf.record.formula.eval
Class RelationalOperationEval

java.lang.Object
  extended by org.apache.poi.hssf.record.formula.eval.RelationalOperationEval
All Implemented Interfaces:
Function

public abstract class RelationalOperationEval
extends java.lang.Object
implements Function

Base class for all comparison operator evaluators

Author:
Amol S. Deshmukh < amolweb at ya hoo dot com >

Field Summary
static Function EqualEval
           
static Function GreaterEqualEval
           
static Function GreaterThanEval
           
static Function LessEqualEval
           
static Function LessThanEval
           
static Function NotEqualEval
           
 
Constructor Summary
RelationalOperationEval()
           
 
Method Summary
protected abstract  boolean convertComparisonResult(int cmpResult)
          Converts a standard compare result (-1, 0, 1) to true or false according to subclass' comparison type.
 ValueEval evaluate(ValueEval[] operands, int srcRow, short srcCol)
          This is a description of how the relational operators apply in MS Excel.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

EqualEval

public static final Function EqualEval

GreaterEqualEval

public static final Function GreaterEqualEval

GreaterThanEval

public static final Function GreaterThanEval

LessEqualEval

public static final Function LessEqualEval

LessThanEval

public static final Function LessThanEval

NotEqualEval

public static final Function NotEqualEval
Constructor Detail

RelationalOperationEval

public RelationalOperationEval()
Method Detail

convertComparisonResult

protected abstract boolean convertComparisonResult(int cmpResult)
Converts a standard compare result (-1, 0, 1) to true or false according to subclass' comparison type.


evaluate

public final ValueEval evaluate(ValueEval[] operands,
                                int srcRow,
                                short srcCol)
This is a description of how the relational operators apply in MS Excel. Use this as a guideline when testing/implementing the evaluate methods for the relational operators Evals.
 Bool.TRUE > any number.
 Bool > any string. ALWAYS
 Bool.TRUE > Bool.FALSE
 Bool.FALSE == Blank

 Strings are never converted to numbers or booleans
 String > any number. ALWAYS
 Non-empty String > Blank
 Empty String == Blank
 String are sorted dictionary wise

 Blank > Negative numbers
 Blank == 0
 Blank < Positive numbers
 

Specified by:
evaluate in interface Function
Parameters:
operands - the evaluated function arguments. Empty values are represented with BlankEval or MissingArgEval, never null.
srcRow - row index of the cell containing the formula under evaluation
srcCol - column index of the cell containing the formula under evaluation
Returns:
The evaluated result, possibly an ErrorEval, never null. Note - Excel uses the error code #NUM! instead of IEEE NaN, so when numeric functions evaluate to Double.NaN be sure to translate the result to ErrorEval.NUM_ERROR.


Copyright 2009 The Apache Software Foundation or its licensors, as applicable.