Class BetweenExpressionStateObject

  • All Implemented Interfaces:
    StateObject

    public class BetweenExpressionStateObject
    extends AbstractStateObject
    Used in conditional expression to determine whether the result of an expression falls within an inclusive range of values. Numeric, string and date expression can be evaluated in this way.
    BNF: between_expression ::= arithmetic_expression [NOT] BETWEEN arithmetic_expression AND arithmetic_expression |
    string_expression [NOT] BETWEEN string_expression AND string_expression |
    datetime_expression [NOT] BETWEEN datetime_expression AND datetime_expression

    Version:
    2.4
    See Also:
    BetweenExpression
    Author:
    Pascal Filion
    Since:
    2.4
    • Field Detail

      • LOWER_STATE_OBJECT_PROPERTY

        public static final java.lang.String LOWER_STATE_OBJECT_PROPERTY
        Notifies the StateObject representing the lower bound expression has changed.
        See Also:
        Constant Field Values
      • NOT_PROPERTY

        public static final java.lang.String NOT_PROPERTY
        Notifies the visibility of the NOT identifier has changed.
        See Also:
        Constant Field Values
      • STATE_OBJECT_PROPERTY

        public static final java.lang.String STATE_OBJECT_PROPERTY
        Notifies the state object property has changed.
        See Also:
        Constant Field Values
      • UPPER_STATE_OBJECT_PROPERTY

        public static final java.lang.String UPPER_STATE_OBJECT_PROPERTY
        Notifies the StateObject representing the upper bound expression has changed.
        See Also:
        Constant Field Values
    • Constructor Detail

      • BetweenExpressionStateObject

        public BetweenExpressionStateObject​(StateObject parent)
        Creates a new BetweenExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        Throws:
        java.lang.NullPointerException - The given parent cannot be null
      • BetweenExpressionStateObject

        public BetweenExpressionStateObject​(StateObject parent,
                                            StateObject stateObject,
                                            boolean not,
                                            StateObject lowerBound,
                                            StateObject upperBound)
        Creates a new BetweenExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        stateObject - The StateObject representing the expression to compare its result to the lower and upper bounds
        not - Determines whether the NOT identifier is part of the expression or not
        lowerBound - The StateObject representing the lower bound expression
        upperBound - The StateObject representing the upper bound expression
        Throws:
        java.lang.NullPointerException - The given parent cannot be null
      • BetweenExpressionStateObject

        public BetweenExpressionStateObject​(StateObject parent,
                                            StateObject stateObject,
                                            StateObject lowerBound,
                                            StateObject upperBound)
        Creates a new BetweenExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        stateObject - The StateObject representing the expression to compare its result to the lower and upper bounds
        lowerBound - The StateObject representing the lower bound expression
        upperBound - The StateObject representing the upper bound expression
        Throws:
        java.lang.NullPointerException - The given parent cannot be null
      • BetweenExpressionStateObject

        public BetweenExpressionStateObject​(StateObject parent,
                                            java.lang.String jpqlFragment,
                                            boolean not,
                                            java.lang.String lowerBoundJpqlFragment,
                                            java.lang.String upperBoundJpqlFragment)
        Creates a new BetweenExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        jpqlFragment - The JPQL fragment representing the expression to compare its result to the lower and upper bounds, the fragment will be parsed and converted into a StateObject
        not - Determines whether the NOT identifier is part of the expression or not
        lowerBoundJpqlFragment - The JPQL fragment representing the lower bound of the range, the fragment will be parsed and converted into a StateObject
        upperBoundJpqlFragment - The JPQL fragment representing the upper bound of the range, the fragment will be parsed and converted into a StateObject
        Throws:
        java.lang.NullPointerException - The given parent cannot be null
      • BetweenExpressionStateObject

        public BetweenExpressionStateObject​(StateObject parent,
                                            java.lang.String jpqlFragment,
                                            java.lang.String lowerBoundJpqlFragment,
                                            java.lang.String upperBoundJpqlFragment)
        Creates a new BetweenExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        jpqlFragment - The JPQL fragment representing the expression to compare its result to the lower and upper bounds, the fragment will be parsed and converted into a StateObject
        lowerBoundJpqlFragment - The JPQL fragment representing the lowe bound of the range, the fragment will be parsed and converted into a StateObject
        upperBoundJpqlFragment - The JPQL fragment representing the upper bound of the range, the fragment will be parsed and converted into a StateObject
        Throws:
        java.lang.NullPointerException - The given parent cannot be null
    • Method Detail

      • getLowerBound

        public StateObject getLowerBound()
        Returns the StateObject representing the lower bound of the range.
        Returns:
        The expression representing the lower bound
      • getStateObject

        public StateObject getStateObject()
        Returns the StateObject representing the expression to determine if its result falls within the lower and upper bounds.
        Returns:
        The expression to check if its result is in the range of the lower and upper bounds
      • getUpperBound

        public StateObject getUpperBound()
        Returns the StateObject representing the upper bound of the range.
        Returns:
        The expression representing the upper bound
      • hasLowerBound

        public boolean hasLowerBound()
        Determines whether the StateObject representing the lower bound is defined or not.
        Returns:
        true if the StateObject representing the expression to check if its result falls into a range has been defined; false otherwise
      • hasNot

        public boolean hasNot()
        Determines whether the NOT identifier is used or not.
        Returns:
        true if the NOT identifier is part of the expression; false otherwise
      • hasStateObject

        public boolean hasStateObject()
        Determines whether the StateObject representing the expression to determine if its result falls within the lower and upper bounds has been defined or not.
        Returns:
        true if the StateObject representing the lower bound expression has been defined; false otherwise
      • hasUpperBound

        public boolean hasUpperBound()
        Determines whether the StateObject representing the upper bound is defined or not.
        Returns:
        true if the StateObject representing the upper bound expression has been defined; false otherwise
      • parse

        public void parse​(java.lang.String jpqlFragment)
        Parses the given JPQL fragment, which will represent the expression to compare its result to the lower and upper bounds.
        Parameters:
        jpqlFragment - The JPQL fragment representing the expression to compare its result to the lower and upper bounds, the fragment will be parsed and converted into a StateObject
      • parseLowerBound

        public void parseLowerBound​(java.lang.String jpqlFragment)
        Parses the given JPQL fragment, which will represent the lower bound of the range.
        Parameters:
        jpqlFragment - The JPQL fragment representing the lower bound of the range, the fragment will be parsed and converted into a StateObject
      • parseUpperBound

        public void parseUpperBound​(java.lang.String jpqlFragment)
        Parses the given JPQL fragment, which will represent the upper bound of the range.
        Parameters:
        jpqlFragment - The JPQL fragment representing the upper bound of the range, the fragment will be parsed and converted into a StateObject
      • removeNot

        public void removeNot()
        Makes sure the NOT identifier is not specified.
      • setExpression

        public void setExpression​(BetweenExpression expression)
        Keeps a reference of the parsed object object, which should only be done when this object is instantiated during the conversion of a parsed JPQL query into StateObjects.
        Parameters:
        expression - The parsed object representing a BETWEEN expression
      • setLowerBound

        public void setLowerBound​(StateObject lowerBound)
        Sets the StateObject representing the lower bound of the range.
        Parameters:
        lowerBound - The StateObject representing the lower bound expression
      • setNot

        public void setNot​(boolean not)
        Sets whether the NOT identifier should be part of the expression or not.
        Parameters:
        not - true if the NOT identifier should be part of the expression; false otherwise
      • setStateObject

        public void setStateObject​(StateObject stateObject)
        Sets the StateObject representing the expression to determine if its result falls within the lower and upper bounds.
        Parameters:
        stateObject - The expression to check if its result is in the range of the lower and upper bounds
      • setUpperBound

        public void setUpperBound​(StateObject upperBound)
        Sets the StateObject representing the upper bound of the range.
        Parameters:
        upperBound - The StateObject representing the upper bound expression
      • toggleNot

        public void toggleNot()
        Changes the visibility state of the NOT identifier.
      • toTextInternal

        protected void toTextInternal​(java.lang.Appendable writer)
                               throws java.io.IOException
        Prints out a string representation of this StateObject, which should not be used to define a true string representation of a JPQL query but should be used for debugging purposes.
        Specified by:
        toTextInternal in class AbstractStateObject
        Parameters:
        writer - The writer used to print out the string representation
        Throws:
        java.io.IOException - This should never happens, it is only required because Appendable is used instead of any concrete class