Interface ExpressionFactory

All Known Implementing Classes:
InMemoryExpressionFactory, JDBCExpressionFactory

public interface ExpressionFactory
The ExpressionFactory must be implemented by a particular runtime to form Expressions in its native query language.
Author:
Abe White
  • Method Details

    • emptyExpression

      Expression emptyExpression()
      Return a blank expression; this is used when the filter is empty.
    • asExpression

      Expression asExpression(Value bool)
      Return the given value as an expression.
    • equal

      Expression equal(Value v1, Value v2)
      Return an expression representing the given condition.
    • notEqual

      Expression notEqual(Value v1, Value v2)
      Return an expression representing the given condition.
    • lessThan

      Expression lessThan(Value v1, Value v2)
      Return an expression representing the given condition.
    • greaterThan

      Expression greaterThan(Value v1, Value v2)
      Return an expression representing the given condition.
    • lessThanEqual

      Expression lessThanEqual(Value v1, Value v2)
      Return an expression representing the given condition.
    • greaterThanEqual

      Expression greaterThanEqual(Value v1, Value v2)
      Return an expression representing the given condition.
    • isEmpty

      Expression isEmpty(Value target)
      Return an expression representing the given condition.
    • isNotEmpty

      Expression isNotEmpty(Value target)
      Return an expression representing the given condition.
    • contains

      Expression contains(Value coll, Value arg)
      Return an expression representing the given condition.
    • containsKey

      Expression containsKey(Value map, Value arg)
      Return an expression representing the given condition.
    • containsValue

      Expression containsValue(Value map, Value arg)
      Return an expression representing the given condition.
    • getMapValue

      Value getMapValue(Value map, Value arg)
      Return an expression representing the given condition.
    • isInstance

      Expression isInstance(Value obj, Class c)
      Return whether the first value is an instance of the given class.
    • and

      Expression and(Expression exp1, Expression exp2)
      Return the two expressions AND'd together.
    • or

      Expression or(Expression exp1, Expression exp2)
      Return the two expressions OR'd together.
    • not

      Return the inverse of this expression.
    • bindVariable

      Expression bindVariable(Value var, Value coll)
      Bind the given variable to the given collection value.
    • bindKeyVariable

      Expression bindKeyVariable(Value var, Value map)
      Bind the given variable to the key set of the given map value.
    • bindValueVariable

      Expression bindValueVariable(Value var, Value map)
      Bind the given variable to the value set of the given map value.
    • endsWith

      Expression endsWith(Value str1, Value str2)
      Return whether the first string ends with the second.
    • matches

      Expression matches(Value str, Value regexp, String single, String multi, String escape)
      Return whether the string matches the matching pattern.
      Parameters:
      str - the value to compare
      regexp - the pattern against which to compare
      single - the token that signifies a single-character match
      multi - the token that signifies a multi-character match
      escape - the escape token that escapes the matching tokens
    • notMatches

      Expression notMatches(Value str, Value regexp, String single, String multi, String escape)
      Return whether the string does not match the given pattern.
      Parameters:
      str - the value to compare
      regexp - the pattern against which to compare
      single - the token that signifies a single-character match
      multi - the token that signifies a multi-character match
      escape - the escape token that escapes the matching tokens
    • startsWith

      Expression startsWith(Value str1, Value str2)
      Return whether the first string starts with the second.
    • stringLength

      Value stringLength(Value str)
      Returns the number of characters in the String value.
    • trim

      Value trim(Value str, Value trimChar, Boolean where)
      Trims the specified specified trimChar from the specified value.
      Parameters:
      str - the value from which to trim
      trimChar - the characters to trim off
      where - which side of the String to trim: null indicates both sides, true indicates leading, and false indicates trailing
    • newSubquery

      Subquery newSubquery(ClassMetaData candidate, boolean subs, String alias)
      Return a subquery. Paths for the candidates of the subquery are created with newPath(Value), passing in the subquery as the value.
      Parameters:
      candidate - the candidate class of the subquery
      subs - whether the query includes subclasses
      alias - the alias given to the query candidate class
    • newPath

      Path newPath()
      Return a value representing a path which will consist of a chain of 1 or more field names starting in the namespace of the candidate class.
      Example: parent.address.city
    • newPath

      Path newPath(Value val)
      Return a value representing a path which will consist of a chain of 1 or more field names starting in the namespace of the given value.
      Example: var.address.city
    • newLiteral

      Literal newLiteral(Object val, int parseType)
      Return a value representing the given constant, which will be a Number, String, or Boolean instance.
    • getThis

      Value getThis()
      Return a value representing this.
    • getNull

      Value getNull()
      Return a value representing null.
    • getCurrentDate

      <T extends Date> Value getCurrentDate(Class<T> dateType)
      Return a value representing the current date.
    • getCurrentTime

      <T extends Date> Value getCurrentTime(Class<T> timeType)
      Return a value representing the current time.
    • getCurrentTimestamp

      <T extends Date> Value getCurrentTimestamp(Class<T> timestampType)
      Return a value representing the current timestamp.
    • newParameter

      Parameter newParameter(Object name, Class type)
      Return a value representing a parameter for the given value. The type may be Object if the parameter is not declared.
    • newCollectionValuedParameter

      Parameter newCollectionValuedParameter(Object name, Class type)
      Return a value representing a collection-valued parameter. The type may be Object if the parameter is not declared.
    • newExtension

      Value newExtension(FilterListener listener, Value target, Value args)
      Return the value of the given extension.
    • newAggregate

      Value newAggregate(AggregateListener listener, Value args)
      Return the value of the given function.
    • newArgumentList

      Arguments newArgumentList(Value arg1, Value arg2)
      Return a function argument list consisting of the given values, either of which may itself be an argument list.
    • newArgumentList

      Arguments newArgumentList(Value... values)
      Return a function argument list consisting of the given values, any of which may itself be an argument list.
    • newUnboundVariable

      Value newUnboundVariable(String name, Class type)
      Return an unbound variable. This method will only be called once for a given named unbound variable. The type may be Object if the variable is not declared.
    • newBoundVariable

      Value newBoundVariable(String name, Class type)
      This method will be called only once per variable bound in a contains clause, and the returned value will be reused for any further instances of the variable in subexpression of the filter string. The type may be Object if the variable is not declared.
    • cast

      Value cast(Value obj, Class cls)
      Cast the value to the given class.
    • add

      Value add(Value num1, Value num2)
      Return a value representing the two values added together.
    • subtract

      Value subtract(Value num1, Value num2)
      Return a value representing the second value subtracted from the first.
    • multiply

      Value multiply(Value num1, Value num2)
      Return a value representing the two values multiplied together.
    • divide

      Value divide(Value num1, Value num2)
      Return a value representing the first value divided by the first one.
    • mod

      Value mod(Value num1, Value num2)
      Return a value representing the first value mod'd by the second one.
    • abs

      Value abs(Value num)
      Return a value representing the absolute value of the given one.
    • indexOf

      Value indexOf(Value str, Value args)
      Return a value representing the indexOf (LOCATE in JPQL) function on the given target with the given args. The optional second argument is one-based.
    • concat

      Value concat(Value str, Value args)
      Return a value representing the concatenation of the given target with the given args.
    • sqrt

      Value sqrt(Value num)
      Return the square root of the given value.
    • substring

      Value substring(Value str, Value args)
      Return a value representing the substring function on the given target with the given args. Unlike as with String.substring(int), the start index is one-based, and the second argument is the length.
    • toUpperCase

      Value toUpperCase(Value str)
      Return the upper case of the given value.
    • toLowerCase

      Value toLowerCase(Value str)
      Return the upper case of the given value.
    • avg

      Value avg(Value num)
      Return the average of the given value for all matches.
    • count

      Value count(Value obj)
      Return the count of the given value for all matches.
    • max

      Value max(Value num)
      Return the max of the given value for all matches.
    • min

      Value min(Value num)
      Return the max of the given value for all matches.
    • sum

      Value sum(Value num)
      Return the max of the given value for all matches.
    • any

      Value any(Value target)
      Return an expression representing the given condition.
      Since:
      0.4.0.0
    • all

      Value all(Value target)
      Return an expression representing the given condition.
      Since:
      0.4.0.0
    • size

      Value size(Value target)
      Return an expression representing the given condition.
      Since:
      0.4.0.0
    • index

      Value index(Value target)
      Return an index/position of the given value within a collection/map.
      Since:
      2.0.0
    • type

      Value type(Value target)
      Return the type/class of the given value.
      Since:
      2.0.0
    • mapEntry

      Value mapEntry(Value key, Value val)
      Return the map entry of the given value.
      Since:
      2.0.0
    • mapKey

      Value mapKey(Value key, Value val)
      Return the map key of the given value
    • getKey

      Value getKey(Value val)
      Path navigation thru map key
    • distinct

      Value distinct(Value obj)
      Return distinct values of the given value. This is typically used within aggregates, for example: max(distinct(path))
      Since:
      0.4.0.0
    • getObjectId

      Value getObjectId(Value val)
      Return the object id of the given value.
    • simpleCaseExpression

      Value simpleCaseExpression(Value caseOperand, Expression[] exp, Value val)
      Return a simple case expression
    • generalCaseExpression

      Value generalCaseExpression(Expression[] exp, Value val)
      Return a general case expression
    • whenCondition

      Expression whenCondition(Expression exp, Value val)
      Return a when condidional clause
    • whenScalar

      Expression whenScalar(Value val1, Value val2)
      Return a when scalar_expression clause
    • coalesceExpression

      Value coalesceExpression(Value[] val)
      Return a coalesce expression
    • nullIfExpression

      Value nullIfExpression(Value val1, Value val2)
      Return a nullif expression
    • newTypeLiteral

      Literal newTypeLiteral(Object val, int parseType)
      Return a value representing the given constant, which will be a Number, String, or Boolean instance.
    • newFunction

      Value newFunction(String functionName, Class<?> resultType, Value... args)
      Return a value representing the given datastore function with the given arguments.
    • isVerticalType

      boolean isVerticalType(Value val)
      Return true if the Value is a Type expression and the Type uses joined table strategy.