org.apache.poi.ss.formula.eval

## Class RelationalOperationEval

- java.lang.Object
- - org.apache.poi.ss.formula.functions.Fixed2ArgFunction
  - - org.apache.poi.ss.formula.eval.RelationalOperationEval

- All Implemented Interfaces:
    ArrayFunction, Function, Function2Arg

      public abstract class RelationalOperationEval
      extends Fixed2ArgFunction
      implements ArrayFunction

  Base class for all comparison operator evaluators
  Author:
    Amol S. Deshmukh < amolweb at ya hoo dot com >

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static Function` | `EqualEval`
    `static Function` | `GreaterEqualEval`
    `static Function` | `GreaterThanEval`
    `static Function` | `LessEqualEval`
    `static Function` | `LessThanEval`
    `static Function` | `NotEqualEval`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RelationalOperationEval()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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(int srcRowIndex, int srcColumnIndex, ValueEval arg0, ValueEval arg1)` This is a description of how the relational operators apply in MS Excel.
    `ValueEval` | `evaluateArray(ValueEval[] args, int srcRowIndex, int srcColumnIndex)`

    - ### Methods inherited from class org.apache.poi.ss.formula.functions.Fixed2ArgFunction

      `evaluate`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.poi.ss.formula.functions.ArrayFunction

      `evaluateOneArrayArg, evaluateTwoArrayArgs`

- - ### 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 ValueEval evaluate(int srcRowIndex,
                                    int srcColumnIndex,
                                    ValueEval arg0,
                                    ValueEval arg1)

      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 `Function2Arg`

    - #### evaluateArray

          public ValueEval evaluateArray(ValueEval[] args,
                                         int srcRowIndex,
                                         int srcColumnIndex)

      Specified by:
        `evaluateArray` in interface `ArrayFunction`
      Parameters:
        `args` - the evaluated function arguments. Empty values are represented with `BlankEval` or `MissingArgEval`, never `null`.
        `srcRowIndex` - row index of the cell containing the formula under evaluation
        `srcColumnIndex` - 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 2020 The Apache Software Foundation or its licensors, as applicable.