Class TrimExpressionStateObject

  • All Implemented Interfaces:
    StateObject

    public class TrimExpressionStateObject
    extends AbstractSingleEncapsulatedExpressionStateObject
    The TRIM function trims the specified character from a string. If the character to be trimmed is not specified, it is assumed to be space (or blank). The optional trim_character is a single-character string literal or a character-valued input parameter (i.e., char or Character). If a trim specification is not provided, BOTH is assumed. The TRIM function returns the trimmed string.
    BNF: expression ::= TRIM([[trim_specification] [trim_character] FROM] string_primary)

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

      • HAS_FROM_PROPERTY

        public static final java.lang.String HAS_FROM_PROPERTY
        Notifies the visibility of the FROM identifier has changed.
        See Also:
        Constant Field Values
      • SPECIFICATION_PROPERTY

        public static final java.lang.String SPECIFICATION_PROPERTY
        Notifies the specification property has changed.
        See Also:
        Constant Field Values
      • TRIM_CHARACTER_PROPERTY

        public static final java.lang.String TRIM_CHARACTER_PROPERTY
        Notify the state object representing the trim character has changed.
        See Also:
        Constant Field Values
    • Constructor Detail

      • TrimExpressionStateObject

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

        public TrimExpressionStateObject​(StateObject parent,
                                         TrimExpression.Specification specification,
                                         StateObject stateObject)
        Creates a new TrimExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        stateObject - The StateObject representing the encapsulated expression
        specification - Defines the way the string is trimmed, or Specification.DEFAULT when it is not present
        Throws:
        java.lang.NullPointerException - The given parent cannot be null
      • TrimExpressionStateObject

        public TrimExpressionStateObject​(StateObject parent,
                                         TrimExpression.Specification specification,
                                         StateObject trimCharacter,
                                         StateObject stateObject)
        Creates a new TrimExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        specification - Defines the way the string is trimmed, or Specification.DEFAULT when it is not present
        trimCharacter - The trim character
        stateObject - The StateObject representing the encapsulated expression
        Throws:
        java.lang.NullPointerException - The given parent cannot be null
      • TrimExpressionStateObject

        public TrimExpressionStateObject​(StateObject parent,
                                         java.lang.String jpqlFragment)
        Creates a new TrimExpressionStateObject.
        Parameters:
        parent - The parent of this state object, which cannot be null
        jpqlFragment - The portion of the query representing the encapsulated expression
        Throws:
        java.lang.NullPointerException - The given parent cannot be null
    • Method Detail

      • getSpecification

        public TrimExpression.Specification getSpecification()
        Returns the new trim specification.
        Returns:
        The new trim specification; which is never null
      • getTrimCharacter

        public StateObject getTrimCharacter()
        Returns the StateObject representing the trim character.
        Returns:
        The StateObject representing the trim character or null if it is not present
      • hasSpecification

        public boolean hasSpecification()
        Determines whether the way the trim is trimmed was parsed.
        Returns:
        true if the query contained the way the trim needs to be trimmed; false otherwise
      • hasTrimCharacter

        public boolean hasTrimCharacter()
        Determines whether the character used to trim the string was specified.
        Returns:
        true if the character used for trimming was specified; false otherwise
      • parse

        public void parse​(java.lang.String jpqlFragment)
        Parses the given JPQL fragment, which represents the encapsulated expression, and creates the StateObject.
        Overrides:
        parse in class AbstractSingleEncapsulatedExpressionStateObject
        Parameters:
        jpqlFragment - The portion of the query representing the encapsulated expression
      • parseTrimCharacter

        public void parseTrimCharacter​(java.lang.CharSequence jpqlFragment)
        Parses the given JPQL fragment, which represents either a single-character string literal or a character-valued input parameter, the fragment will be parsed and converted into a StateObject.
        Parameters:
        jpqlFragment - The portion of the query to parse
      • removeSpecification

        public void removeSpecification()
        Removes the trim specification.
      • removeTrimCharacter

        public void removeTrimCharacter()
        Removes the trim character if it is defined.
      • setExpression

        public void setExpression​(TrimExpression 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 TRIM expression
      • setSpecification

        public void setSpecification​(TrimExpression.Specification specification)
        Sets the new trim specification.
        Parameters:
        specification - The new trim specification; null is not valid
      • setTrimCharacter

        public void setTrimCharacter​(StateObject trimCharacter)
        Sets the character to trim from the string. If the character to be trimmed is not specified, it is assumed to be space (or blank). It is a single-character string literal or a character- valued input parameter (i.e., char or Character).
        Parameters:
        trimCharacter - The trim character or null to remove it
      • toTextEncapsulatedExpression

        protected void toTextEncapsulatedExpression​(java.lang.Appendable writer)
                                             throws java.io.IOException
        Prints out a string representation of this encapsulated information, which should not be used to define a true string representation of a JPQL query but should be used for debugging purposes.
        Overrides:
        toTextEncapsulatedExpression in class AbstractSingleEncapsulatedExpressionStateObject
        Parameters:
        writer - The writer used to print out the string representation of the encapsulated information
        Throws:
        java.io.IOException - This should never happens, only required because Appendable is used instead of StringBuilder for instance