Class OperandEvaluator


  • public class OperandEvaluator
    extends Object
    Evaluator of QOM operands. This class evaluates operands in the context of a value factory, a set of bind variables and possibly a query result row.
    • Constructor Detail

      • OperandEvaluator

        public OperandEvaluator​(ValueFactory factory,
                                Map<String,​Value> variables,
                                Locale locale)
        Creates an operand evaluator for the given value factory and set of bind variables. Upper- and lower-case conversions are performed using the given locale.
        Parameters:
        factory - value factory
        variables - bind variables
        locale - locale to use in upper- and lower-case conversions
      • OperandEvaluator

        public OperandEvaluator​(ValueFactory factory,
                                Map<String,​Value> variables)
        Creates an operand evaluator for the given value factory and set of bind variables. Upper- and lower-case conversions are performed using the Locale.ENGLISH.
        Parameters:
        factory - value factory
        variables - bind variables
    • Method Detail

      • getValue

        public Value getValue​(StaticOperand operand,
                              int type)
                       throws RepositoryException
        Returns the value of the given static operand (literal or bind variable) casted to the given type.
        Parameters:
        operand - static operand to be evaluated
        type - expected value type
        Returns:
        evaluated value, casted to the given type
        Throws:
        RepositoryException - if a named bind variable is not found, if the operand type is unknown, or if the type conversion fails
      • getValue

        public Value getValue​(Operand operand,
                              Row row)
                       throws RepositoryException
        Returns the value of the given operand in the context of the given row. This is a convenience method that uses a somewhat lossy best-effort mapping to evaluate multi-valued operands to a single value. Use the getValues(Operand, Row) method for more accurate results.
        Parameters:
        operand - operand to be evaluated
        row - query result row
        Returns:
        evaluated value
        Throws:
        RepositoryException - if the operand can't be evaluated
      • getValues

        public Value[] getValues​(Operand operand,
                                 Row row)
                          throws RepositoryException
        Evaluates the given operand in the context of the given row.
        Parameters:
        operand - operand to be evaluated
        row - query result row
        Returns:
        values of the operand at the given row
        Throws:
        RepositoryException - if the operand can't be evaluated
      • getValues

        public Value[] getValues​(Operand operand,
                                 Node node)
                          throws RepositoryException
        Evaluates the given operand in the context of the given node.
        Parameters:
        operand - operand to be evaluated
        node - node
        Returns:
        values of the operand at the given node
        Throws:
        RepositoryException - if the operand can't be evaluated