Class ExpressionFactory


  • public class ExpressionFactory
    extends Object
    Helper class to build expressions.
    • Field Detail

      • SPLIT_SEPARATOR

        public static final char SPLIT_SEPARATOR
        A "split" character, "|", that is understood by some of the ExpressionFactory methods that require splitting joins in the middle of the path.
        Since:
        3.0
        See Also:
        Constant Field Values
    • Constructor Detail

      • ExpressionFactory

        public ExpressionFactory()
    • Method Detail

      • expressionOfType

        public static Expression expressionOfType​(int type)
        Creates a new expression for the type requested. If type is unknown, ExpressionException is thrown.
      • wrapPathOperand

        protected static Object wrapPathOperand​(Object op)
        Applies a few default rules for adding operands to expressions. In particular wraps all lists into LIST expressions. Applied only in path expressions.
      • matchAnyDbExp

        public static Expression matchAnyDbExp​(Map<String,​?> map,
                                               int pairType)
        Creates an expression that matches any of the key-values pairs in map.

        For each pair pairType operator is used to build a binary expression. Key is considered to be a DB_PATH expression. OR is used to join pair binary expressions.

      • matchAllDbExp

        public static Expression matchAllDbExp​(Map<String,​?> map,
                                               int pairType)
        Creates an expression that matches all key-values pairs in map.

        For each pair pairType operator is used to build a binary expression. Key is considered to be a DB_PATH expression. AND is used to join pair binary expressions.

      • matchAnyExp

        public static Expression matchAnyExp​(Map<String,​?> map,
                                             int pairType)
        Creates an expression that matches any of the key-values pairs in the map.

        For each pair pairType operator is used to build a binary expression. Key is considered to be a OBJ_PATH expression. OR is used to join pair binary expressions.

      • matchAllExp

        public static Expression matchAllExp​(Map<String,​?> map,
                                             int pairType)
        Creates an expression that matches all key-values pairs in map.

        For each pair pairType operator is used to build a binary expression. Key is considered to be a OBJ_PATH expression. AND is used to join pair binary expressions.

      • matchAllExp

        public static Expression matchAllExp​(String path,
                                             Collection<?> values)
        Creates an expression to match a collection of values against a single path expression.

        Splits

        Note that "path" argument here can use a split character (a pipe symbol - '|') instead of dot to indicate that relationship following a path should be split into a separate set of joins. There can only be one split at most. Split must always precede a relationship. E.g. "|exhibits.paintings", "exhibits|paintings", etc.

        Parameters:
        path - expression
        values - collection to match
        Since:
        3.0
      • matchDbExp

        public static Expression matchDbExp​(String pathSpec,
                                            Object value)
        A convenience method to create an DB_PATH "equal to" expression.
      • noMatchDbExp

        public static Expression noMatchDbExp​(String pathSpec,
                                              Object value)
        A convenience method to create an DB_PATH "not equal to" expression.
      • matchExp

        public static Expression matchExp​(String pathSpec,
                                          Object value)
        A convenience method to create an OBJ_PATH "equal to" expression.
      • noMatchExp

        public static Expression noMatchExp​(String pathSpec,
                                            Object value)
        A convenience method to create an OBJ_PATH "not equal to" expression.
      • matchDbIdExp

        public static Expression matchDbIdExp​(String pathSpec,
                                              Object value)
        A convenience method to create an DBID_PATH "equal to" expression.
        Since:
        4.2
      • noMatchDbIdExp

        public static Expression noMatchDbIdExp​(String pathSpec,
                                                Object value)
        A convenience method to create an DBID_PATH "not equal to" expression.
        Since:
        4.2
      • lessExp

        public static Expression lessExp​(String pathSpec,
                                         Object value)
        A convenience method to create an OBJ_PATH "less than" expression.
      • lessDbExp

        public static Expression lessDbExp​(String pathSpec,
                                           Object value)
        A convenience method to create an DB_PATH "less than" expression.
        Since:
        3.0
      • lessOrEqualExp

        public static Expression lessOrEqualExp​(String pathSpec,
                                                Object value)
        A convenience method to create an OBJ_PATH "less than or equal to" expression.
      • lessOrEqualDbExp

        public static Expression lessOrEqualDbExp​(String pathSpec,
                                                  Object value)
        A convenience method to create an DB_PATH "less than or equal to" expression.
        Since:
        3.0
      • greaterExp

        public static Expression greaterExp​(String pathSpec,
                                            Object value)
        A convenience method to create an OBJ_PATH "greater than" expression.
      • greaterDbExp

        public static Expression greaterDbExp​(String pathSpec,
                                              Object value)
        A convenience method to create an DB_PATH "greater than" expression.
        Since:
        3.0
      • greaterOrEqualExp

        public static Expression greaterOrEqualExp​(String pathSpec,
                                                   Object value)
        A convenience method to create an OBJ_PATH "greater than or equal to" expression.
      • greaterOrEqualDbExp

        public static Expression greaterOrEqualDbExp​(String pathSpec,
                                                     Object value)
        A convenience method to create an DB_PATH "greater than or equal to" expression.
        Since:
        3.0
      • inExp

        public static Expression inExp​(String pathSpec,
                                       Object... values)
        A convenience shortcut for building IN expression. Return ASTFalse for empty collection.
      • inDbExp

        public static Expression inDbExp​(String pathSpec,
                                         Object... values)
        A convenience shortcut for building IN DB expression. Return ASTFalse for empty collection.
      • inExp

        public static Expression inExp​(String pathSpec,
                                       Collection<?> values)
        A convenience shortcut for building IN expression. Return ASTFalse for empty collection.
      • inDbIdExp

        public static Expression inDbIdExp​(String pathSpec,
                                           Object... values)
        A convenience shortcut for building IN DBID expression. Return ASTFalse for empty collection.
        Since:
        4.2
      • inDbExp

        public static Expression inDbExp​(String pathSpec,
                                         Collection<?> values)
        A convenience shortcut for building IN DB expression. Return ASTFalse for empty collection.
      • inDbIdExp

        public static Expression inDbIdExp​(String pathSpec,
                                           Collection<?> values)
        A convenience shortcut for building IN DBID expression. Return ASTFalse for empty collection.
        Since:
        4.2
      • notInExp

        public static Expression notInExp​(String pathSpec,
                                          Collection<?> values)
        A convenience shortcut for building NOT_IN expression. Return ASTTrue for empty collection.
      • notInDbExp

        public static Expression notInDbExp​(String pathSpec,
                                            Collection<?> values)
        A convenience shortcut for building NOT_IN expression. Return ASTTrue for empty collection.
        Since:
        3.0
      • notInDbIdExp

        public static Expression notInDbIdExp​(String pathSpec,
                                              Collection<?> values)
        A convenience shortcut for building NOT_IN expression. Return ASTTrue for empty collection.
        Since:
        4.2
      • notInExp

        public static Expression notInExp​(String pathSpec,
                                          Object... values)
        A convenience shortcut for building NOT_IN expression. Return ASTTrue for empty collection.
        Since:
        1.0.6
      • notInDbExp

        public static Expression notInDbExp​(String pathSpec,
                                            Object... values)
        A convenience shortcut for building NOT_IN expression. Return ASTTrue for empty collection.
        Since:
        3.0
      • notInDbIdExp

        public static Expression notInDbIdExp​(String pathSpec,
                                              Object... values)
        A convenience shortcut for building NOT_IN expression. Return ASTTrue for empty collection.
        Since:
        4.2
      • betweenExp

        public static Expression betweenExp​(String pathSpec,
                                            Object value1,
                                            Object value2)
        A convenience shortcut for building BETWEEN expressions.
      • betweenDbExp

        public static Expression betweenDbExp​(String pathSpec,
                                              Object value1,
                                              Object value2)
        A convenience shortcut for building BETWEEN expressions.
        Since:
        3.0
      • notBetweenExp

        public static Expression notBetweenExp​(String pathSpec,
                                               Object value1,
                                               Object value2)
        A convenience shortcut for building NOT_BETWEEN expressions.
      • notBetweenDbExp

        public static Expression notBetweenDbExp​(String pathSpec,
                                                 Object value1,
                                                 Object value2)
        A convenience shortcut for building NOT_BETWEEN expressions.
        Since:
        3.0
      • likeExp

        public static Expression likeExp​(String pathSpec,
                                         Object value)
        A convenience shortcut for building LIKE expression.
      • likeExp

        public static Expression likeExp​(String pathSpec,
                                         Object value,
                                         char escapeChar)

        A convenience shortcut for building LIKE expression.

        The escape character allows for escaping meta-characters in the LIKE clause. Note that the escape character cannot be '?'. To specify no escape character, supply 0 as the escape character.

        Since:
        3.0.1
      • likeDbExp

        public static Expression likeDbExp​(String pathSpec,
                                           Object value)
        A convenience shortcut for building LIKE DB_PATH expression.
        Since:
        3.0
      • likeDbExp

        public static Expression likeDbExp​(String pathSpec,
                                           Object value,
                                           char escapeChar)

        A convenience shortcut for building LIKE DB_PATH expression.

        The escape character allows for escaping meta-characters in the LIKE clause. Note that the escape character cannot be '?'. To specify no escape character, supply 0 as the escape character.

        Since:
        3.0.1
      • notLikeExp

        public static Expression notLikeExp​(String pathSpec,
                                            Object value)
        A convenience shortcut for building NOT_LIKE expression.
      • notLikeExp

        public static Expression notLikeExp​(String pathSpec,
                                            Object value,
                                            char escapeChar)

        A convenience shortcut for building NOT_LIKE expression.

        The escape character allows for escaping meta-characters in the LIKE clause. Note that the escape character cannot be '?'. To specify no escape character, supply 0 as the escape character.

        Since:
        3.0.1
      • notLikeDbExp

        public static Expression notLikeDbExp​(String pathSpec,
                                              Object value)
        A convenience shortcut for building NOT_LIKE expression.
        Since:
        3.0
      • notLikeDbExp

        public static Expression notLikeDbExp​(String pathSpec,
                                              Object value,
                                              char escapeChar)

        A convenience shortcut for building NOT_LIKE expression.

        The escape character allows for escaping meta-characters in the LIKE clause. Note that the escape character cannot be '?'. To specify no escape character, supply 0 as the escape character.

        Since:
        3.0.1
      • likeIgnoreCaseExp

        public static Expression likeIgnoreCaseExp​(String pathSpec,
                                                   Object value)
        A convenience shortcut for building LIKE_IGNORE_CASE expression.
      • likeIgnoreCaseExp

        public static Expression likeIgnoreCaseExp​(String pathSpec,
                                                   Object value,
                                                   char escapeChar)

        A convenience shortcut for building LIKE_IGNORE_CASE expression.

        The escape character allows for escaping meta-characters in the LIKE clause. Note that the escape character cannot be '?'. To specify no escape character, supply 0 as the escape character.

        Since:
        3.0.1
      • likeIgnoreCaseDbExp

        public static Expression likeIgnoreCaseDbExp​(String pathSpec,
                                                     Object value)
        A convenience shortcut for building LIKE_IGNORE_CASE expression.
        Since:
        3.0
      • likeIgnoreCaseDbExp

        public static Expression likeIgnoreCaseDbExp​(String pathSpec,
                                                     Object value,
                                                     char escapeChar)

        A convenience shortcut for building LIKE_IGNORE_CASE expression.

        The escape character allows for escaping meta-characters in the LIKE clause. Note that the escape character cannot be '?'. To specify no escape character, supply 0 as the escape character.

        Since:
        3.0.1
      • notLikeIgnoreCaseExp

        public static Expression notLikeIgnoreCaseExp​(String pathSpec,
                                                      Object value)
        A convenience shortcut for building NOT_LIKE_IGNORE_CASE expression.
      • notLikeIgnoreCaseExp

        public static Expression notLikeIgnoreCaseExp​(String pathSpec,
                                                      Object value,
                                                      char escapeChar)

        A convenience shortcut for building NOT_LIKE_IGNORE_CASE expression.

        The escape character allows for escaping meta-characters in the LIKE clause. Note that the escape character cannot be '?'. To specify no escape character, supply 0 as the escape character.

        Since:
        3.0.1
      • notLikeIgnoreCaseDbExp

        public static Expression notLikeIgnoreCaseDbExp​(String pathSpec,
                                                        Object value)
        A convenience shortcut for building NOT_LIKE_IGNORE_CASE expression.
        Since:
        3.0
      • notLikeIgnoreCaseDbExp

        public static Expression notLikeIgnoreCaseDbExp​(String pathSpec,
                                                        Object value,
                                                        char escapeChar)

        A convenience shortcut for building NOT_LIKE_IGNORE_CASE expression.

        The escape character allows for escaping meta-characters in the LIKE clause. Note that the escape character cannot be '?'. To specify no escape character, supply 0 as the escape character.

        Since:
        3.0.1
      • containsExp

        public static Expression containsExp​(String pathSpec,
                                             String value)
        Returns:
        An expression for a database "LIKE" query with the value converted to a pattern matching anywhere in the String.
        Since:
        4.0
      • startsWithExp

        public static Expression startsWithExp​(String pathSpec,
                                               String value)
        Returns:
        An expression for a database "LIKE" query with the value converted to a pattern matching the beginning of the String.
        Since:
        4.0
      • endsWithExp

        public static Expression endsWithExp​(String pathSpec,
                                             String value)
        Returns:
        An expression for a database "LIKE" query with the value converted to a pattern matching the beginning of the String.
        Since:
        4.0
      • pathExp

        public static Expression pathExp​(String pathSpec)
        Parameters:
        pathSpec - a String "obj:" path.
        Returns:
        a new "obj:" path expression for the specified String path.
        Since:
        4.0
      • dbPathExp

        public static Expression dbPathExp​(String pathSpec)
        Parameters:
        pathSpec - a String db: path.
        Returns:
        a new "db:" path expression for the specified String path.
        Since:
        4.0
      • dbIdPathExp

        public static Expression dbIdPathExp​(String pathSpec)
        Parameters:
        pathSpec - a String "dbid:" path
        Returns:
        a new "dbid:" path expressiob fofr the specified String path
        Since:
        4.2
      • expTrue

        public static Expression expTrue()
        A convenience shortcut for boolean true expression.
        Since:
        3.0
      • expFalse

        public static Expression expFalse()
        A convenience shortcut for boolean false expression.
        Since:
        3.0
      • joinExp

        public static Expression joinExp​(int type,
                                         Collection<Expression> expressions)
        Joins all expressions, making a single expression. type is used as an expression type for expressions joining each one of the items on the list. type must be binary expression type.

        For example, if type is Expression.AND, resulting expression would match all expressions in the list. If type is Expression.OR, resulting expression would match any of the expressions.

      • joinExp

        public static Expression joinExp​(int type,
                                         Expression... expressions)
        Joins all expressions, making a single expression. type is used as an expression type for expressions joining each one of the items in the array. type must be binary expression type.

        For example, if type is Expression.AND, resulting expression would match all expressions in the list. If type is Expression.OR, resulting expression would match any of the expressions.

        Since:
        4.1
      • matchExp

        public static Expression matchExp​(Persistent object)
        Creates an expression that matches the primary key of object in ObjectId's IdSnapshot for the argument object.
      • matchAnyExp

        public static Expression matchAnyExp​(List<? extends Persistent> objects)
        Creates an expression that matches any of the objects contained in the list objects
      • matchAnyExp

        public static Expression matchAnyExp​(Persistent... objects)
        Creates an expression that matches any of the objects contained in the objects array
      • fullObjectExp

        public static Expression fullObjectExp()
      • exp

        public static Expression exp​(String expressionString,
                                     Object... parameters)
        Parses string, converting it to Expression and optionally binding positional parameters. If a string does not represent a semantically correct expression, an ExpressionException is thrown.

        Binding of parameters by name (as opposed to binding by position) can be achieved by chaining this call with Expression.params(Map).

        Since:
        4.0
      • wrapScalarValue

        public static Expression wrapScalarValue​(Object value)
        Wrap value into ASTScalar
        Since:
        4.0