Class RandomJELEvaluator

java.lang.Object
uk.ac.starlink.ttools.jel.RandomJELEvaluator
All Implemented Interfaces:
Closeable, AutoCloseable

public abstract class RandomJELEvaluator extends Object implements Closeable
Random-access evaluator for JEL expressions evaluated against tables.
Since:
11 Dec 2020
Author:
Mark Taylor
  • Constructor Details

    • RandomJELEvaluator

      public RandomJELEvaluator()
  • Method Details

    • evaluateObject

      public abstract Object evaluateObject(long lrow) throws IOException
      Returns the value of the expression at a given table row as an Object.
      Parameters:
      lrow - evaluation row index
      Returns:
      object value at given row
      Throws:
      IOException
    • evaluateDouble

      public abstract double evaluateDouble(long lrow) throws IOException
      Returns the value of the expression at a given table row as a double. Behaviour is undefined if the expression is not numeric.
      Parameters:
      lrow - evaluation row index
      Returns:
      numeric value at given row
      Throws:
      IOException
    • evaluateBoolean

      public abstract boolean evaluateBoolean(long lrow) throws IOException
      Returns the value of the expression at a given table row as a boolean. Behaviour is undefined if the expression is not boolean-typed.
      Parameters:
      lrow - evaluation row index
      Returns:
      boolean value at given row
      Throws:
      IOException
    • createEvaluatorSupplier

      public static Supplier<RandomJELEvaluator> createEvaluatorSupplier(uk.ac.starlink.table.StarTable table, String expr) throws gnu.jel.CompilationException
      Returns a supplier for evaluators. The evaluators returned by the supplier are not safe for concurrent use.
      Parameters:
      table - context for expression evaluation
      expr - JEL expression
      Returns:
      supplier of non-thread-safe evaluators
      Throws:
      gnu.jel.CompilationException
    • createEvaluator

      public static RandomJELEvaluator createEvaluator(uk.ac.starlink.table.StarTable table, String expr, boolean isConcurrent) throws gnu.jel.CompilationException
      Returns a RandomJELEvaluator instance for a given table and expression. The returned implementation may or may not be suitable for use from multiple threads concurrently, depending on the isConcurrent parameter.
      Parameters:
      table - context for expression evaluation
      expr - JEL expression
      isConcurrent - whether result will be suitable for concurrent use
      Returns:
      evaluator, which is only guaranteed safe for concurrent use if isConcurrent was set true
      Throws:
      gnu.jel.CompilationException