Class CollectionExpression

  • All Implemented Interfaces:
    Expression

    public final class CollectionExpression
    extends AbstractExpression
    A CollectionExpression wraps many expression which they are separated by spaces and/or commas.
    BNF: expression ::= child_item {, child_item }*

    or
    BNF: expression ::= child_item { child_item }*

    Version:
    2.5
    Author:
    Pascal Filion
    Since:
    2.3
    • Constructor Detail

      • CollectionExpression

        public CollectionExpression​(AbstractExpression parent,
                                    java.util.List<AbstractExpression> children,
                                    java.util.List<java.lang.Boolean> commas,
                                    java.util.List<java.lang.Boolean> spaces)
        Creates a new CollectionExpression.
        Parameters:
        parent - The parent of this expression
        children - The list of children that are regrouped together
        spaces - The list of flags used to determine when to add a space after an Expression
        commas - The list of flags used to determine when to add a comma after an Expression
      • CollectionExpression

        public CollectionExpression​(AbstractExpression parent,
                                    java.util.List<AbstractExpression> children,
                                    java.util.List<java.lang.Boolean> commas,
                                    java.util.List<java.lang.Boolean> spaces,
                                    boolean temporary)
        Creates a new CollectionExpression.
        Parameters:
        parent - The parent of this expression
        children - The list of children that are regrouped together
        commas - The list of flags used to determine when to add a comma after an Expression
        spaces - The list of flags used to determine when to add a space after an Expression
        temporary - Flag used to determine if this expression is temporarily used, which means the children will not be parented to this object
    • Method Detail

      • accept

        public void accept​(int index,
                           ExpressionVisitor visitor)
        Visits the child Expression at the given position by the given visitor.
        Parameters:
        index - The index of the child to visit
        visitor - The ExpressionVisitor to visit a specific child
        Since:
        2.4
      • childrenSize

        public int childrenSize()
        Returns the count of child expressions.
        Returns:
        The total count of expressions aggregated with spaces and/or commas
      • endsWithComma

        public boolean endsWithComma()
        Determines whether this CollectionExpression ends with a comma, which means the last Expression is a "null" expression.
        Returns:
        true if the string representation of this CollectionExpression ends with a comma (the ending space is not checked)
      • endsWithSpace

        public boolean endsWithSpace()
        Determines whether this CollectionExpression ends with a space, which means the last Expression is a "null" expression.
        Returns:
        true if the string representation of this CollectionExpression ends with a space (the ending comma is not checked)
      • getChild

        public Expression getChild​(int index)
        Retrieves the child Expression at the given position.
        Parameters:
        index - The position of the child Expression to retrieve
        Returns:
        The child Expression at the given position
      • hasComma

        public boolean hasComma​(int index)
        Determines whether a comma was parsed at the given position. The index is the position of the comma that is following the child at the same position.
        Parameters:
        index - The index of the child Expression to verify if there is a comma following it
        Returns:
        true if a comma is following the child Expression at the given index; false otherwise
      • hasSpace

        public boolean hasSpace​(int index)
        Determines whether a space was parsed at the given position. The index is the position of the space that is following the child at the same position, which is after a comma, if one was also parsed at that location.
        Parameters:
        index - The index of the child Expression to verify if there is a space following it, which could be after a comma, if one was parsed
        Returns:
        true if a space is following the child Expression at the given index; false otherwise
      • indexOf

        public int indexOf​(Expression expression)
        Retrieves the index of the given Expression.
        Parameters:
        expression - The Expression that might be a child of this expression
        Returns:
        The index in the collection of the given Expression or -1 if it is not a child
      • parse

        protected void parse​(WordParser wordParser,
                             boolean tolerant)
        Parses the query by starting at the current position, which is part of the given WordParser.
        Specified by:
        parse in class AbstractExpression
        Parameters:
        wordParser - The text to parse based on the current position of the cursor
        tolerant - Determines whether the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
      • toActualText

        public java.lang.String toActualText​(int endIndex)
        Returns a string representation of this Expression and its children. The expression should contain whitespace even if the beautified version would not have any. For instance, "SELECT e " should be returned where Expression.toParsedText() would return "SELECT e".
        Parameters:
        endIndex - The index used to determine when to create the string representation, which is exclusive
        Returns:
        The string representation of this Expression
      • toParsedText

        public java.lang.String toParsedText​(int endIndex)
        Generates a string representation of this CollectionExpression.
        Parameters:
        endIndex - The index used to determine when to create the string representation, which is exclusive
        Returns:
        The string representation of this Expression
      • toParsedText

        protected void toParsedText​(java.lang.StringBuilder writer,
                                    boolean actual)
        Generates a string representation of this Expression, including its children, if it has any.
        Specified by:
        toParsedText in class AbstractExpression
        Parameters:
        writer - The buffer used to append this Expression's string representation
        actual - Determines whether the string representation should represent what was parsed, i.e. include any "virtual" whitespace (such as ending whitespace) and the actual case of the JPQL identifiers