Class TrimExpression

All Implemented Interfaces:
Expression

public final class TrimExpression extends AbstractSingleEncapsulatedExpression
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.

JPA 1.0, 2.0:

BNF: expression ::= TRIM([[trim_specification] [trim_character] FROM] string_primary)
BNF: trim_character ::= string_literal | input_parameter

JPA 2.1:

BNF: expression ::= TRIM([[trim_specification] [trim_character] FROM] string_expression)
BNF: trim_character ::= string_literal | input_parameter

Example: UPDATE Student st SET st.sname=TRIM(st.sname)

Version:
2.5
Author:
Pascal Filion
  • Constructor Details

    • TrimExpression

      public TrimExpression(AbstractExpression parent)
      Creates a new TrimExpression.
      Parameters:
      parent - The parent of this expression
  • Method Details

    • accept

      public void accept(ExpressionVisitor visitor)
      Description copied from interface: Expression
      Visits this Expression by the given visitor.
      Parameters:
      visitor - The ExpressionVisitor to visit this object
    • acceptChildren

      public void acceptChildren(ExpressionVisitor visitor)
      Description copied from interface: Expression
      Visits the children of this Expression. This method can be used to optimize traversing the children since a new list is not created every time Expression.children() is called.

      This does not traverse the Expression sub-hierarchy, use a subclass of AbstractTraverseChildrenVisitor in order to traverse the entire sub-hierarchy.

      Specified by:
      acceptChildren in interface Expression
      Overrides:
      acceptChildren in class AbstractSingleEncapsulatedExpression
      Parameters:
      visitor - The visitor to visit the children of this object.
    • addOrderedEncapsulatedExpressionTo

      protected void addOrderedEncapsulatedExpressionTo(List<Expression> children)
      Description copied from class: AbstractEncapsulatedExpression
      Adds the Expressions representing the encapsulated Expression.
      Overrides:
      addOrderedEncapsulatedExpressionTo in class AbstractSingleEncapsulatedExpression
      Parameters:
      children - The list used to store the string representation of the encapsulated Expression
    • getEncapsulatedExpressionQueryBNFId

      public String getEncapsulatedExpressionQueryBNFId()
      Description copied from class: AbstractSingleEncapsulatedExpression
      Returns the BNF used to parse the encapsulated expression.
      Specified by:
      getEncapsulatedExpressionQueryBNFId in class AbstractSingleEncapsulatedExpression
      Returns:
      The BNF used to parse the encapsulated expression
    • getActualFromIdentifier

      public String getActualFromIdentifier()
      Returns the actual FROM identifier found in the string representation of the JPQL query, which has the actual case that was used.
      Returns:
      The FROM identifier that was actually parsed, or an empty string if it was not parsed
    • getActualSpecificationIdentifier

      public String getActualSpecificationIdentifier()
      Returns the actual specification identifier found in the string representation of the JPQL query, which has the actual case that was used.
      Returns:
      The specification identifier that was actually parsed, or an empty string if it was not parsed
    • getQueryBNF

      public JPQLQueryBNF getQueryBNF()
      Description copied from interface: Expression
      Returns the BNF of this Expression.
      Returns:
      The JPQLQueryBNF, which represents the grammar of this Expression
    • getSpecification

      public TrimExpression.Specification getSpecification()
      Returns the specification which specifies how to trim the string.
      Returns:
      One of the available choices for trimming the string
    • getTrimCharacter

      public Expression getTrimCharacter()
      Returns the character used for trimming the string.
      Returns:
      The character, if one was parsed, that will be used to trim the string. If the character was not specified, then '\0' is the character
    • hasEncapsulatedExpression

      public boolean hasEncapsulatedExpression()
      Description copied from class: AbstractEncapsulatedExpression
      Determines whether something was parsed after the left parenthesis.
      Overrides:
      hasEncapsulatedExpression in class AbstractSingleEncapsulatedExpression
      Returns:
      true if something was parsed; false otherwise
    • hasFrom

      public boolean hasFrom()
      Determines whether the identifier FROM was part of the query.
      Returns:
      true if the identifier FROM was parsed; false otherwise
    • hasSpaceAfterFrom

      public boolean hasSpaceAfterFrom()
      Determines whether a whitespace was found after FROM.
      Returns:
      true if there was a whitespace after FROM; false otherwise
    • hasSpaceAfterSpecification

      public boolean hasSpaceAfterSpecification()
      Determines whether a whitespace was found after the way the string is trimmed.
      Returns:
      true if there was a whitespace after the trim specification; false otherwise
    • hasSpaceAfterTrimCharacter

      public boolean hasSpaceAfterTrimCharacter()
      Determines whether a whitespace was found after the character used to trim the string.
      Returns:
      true if there was a whitespace after the trim character; false otherwise
    • 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
    • parseEncapsulatedExpression

      protected void parseEncapsulatedExpression(WordParser wordParser, int whitespaceCount, boolean tolerant)
      Description copied from class: AbstractEncapsulatedExpression
      Parses the encapsulated expression by starting at the current position, which is part of the given WordParser.
      Overrides:
      parseEncapsulatedExpression in class AbstractSingleEncapsulatedExpression
      Parameters:
      wordParser - The text to parse based on the current position of the cursor
      whitespaceCount - The number of whitespace characters that were parsed after '('
      tolerant - Determines whether the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
    • toParsedTextEncapsulatedExpression

      protected void toParsedTextEncapsulatedExpression(StringBuilder writer, boolean actual)
      Description copied from class: AbstractEncapsulatedExpression
      Generates a string representation of the encapsulated Expression.
      Overrides:
      toParsedTextEncapsulatedExpression in class AbstractSingleEncapsulatedExpression
      Parameters:
      writer - The buffer used to append the encapsulated Expression's string representation
      actual - Determines whether to include any characters that are considered virtual, i.e. that was parsed when the query is incomplete and is needed for functionality like content assist