Class UnionClause

  • All Implemented Interfaces:
    Expression

    public final class UnionClause
    extends AbstractExpression
    The UNION clause allows the results of two queries to be combined.
    BNF: union_clause ::= { UNION | INTERSECT | EXCEPT } [ALL] subquery
    Version:
    2.5
    Author:
    James Sutherland
    Since:
    2.4
    • Constructor Detail

      • UnionClause

        public UnionClause​(AbstractExpression parent,
                           java.lang.String identifier)
        Creates a new UnionClause.
        Parameters:
        parent - The parent of this expression
        identifier - Either UNION, INTERSECT or EXCEPT
    • Method Detail

      • getActualAll

        public java.lang.String getActualAll()
        Returns the actual ALL found in the string representation of the JPQL query, which has the actual case that was used.
        Returns:
        The ALL identifier that was actually parsed
      • getActualIdentifier

        public java.lang.String getActualIdentifier()
        Returns the actual identifier found in the string representation of the JPQL query, which has the actual case that was used.
        Returns:
        The identifier that was actually parsed
      • getIdentifier

        public java.lang.String getIdentifier()
        Returns the union identifier.
        Returns:
        Either "UNION", "INTERSECT", "EXCEPT"
      • hasAll

        public boolean hasAll()
        Determines whether ALL was parsed.
        Returns:
        true if ALL was parsed; false otherwise
      • hasQuery

        public boolean hasQuery()
        Determines whether the query was parsed.
        Returns:
        true the query was parsed; false otherwise
      • hasSpaceAfterAll

        public boolean hasSpaceAfterAll()
        Determines whether a whitespace was parsed after ALL.
        Returns:
        true if a whitespace was parsed after ALL; false otherwise
      • hasSpaceAfterIdentifier

        public boolean hasSpaceAfterIdentifier()
        Determines whether a whitespace was parsed after the identifier.
        Returns:
        true if a whitespace was parsed after the identifier; false otherwise
      • isExcept

        public boolean isExcept()
        Determines whether this UnionClause uses the EXCEPT identifier.
        Returns:
        true if the identifier is EXCEPT; false otherwise
      • isIntersect

        public boolean isIntersect()
        Determines whether this UnionClause uses the INTERSECT identifier.
        Returns:
        true if the identifier is INTERSECT; false otherwise
      • isParsingComplete

        protected boolean isParsingComplete​(WordParser wordParser,
                                            java.lang.String word,
                                            Expression expression)
        Determines whether the parsing is complete based on what is left in the given text. The text is never empty.
        Overrides:
        isParsingComplete in class AbstractExpression
        Parameters:
        wordParser - The text to parse based on the current position of the cursor
        word - The word that was retrieved from the given text, which is the first word in the text
        expression - The Expression that has already been parsed
        Returns:
        true if the text no longer can't be parsed by the current expression; false if more can be parsed
      • isUnion

        public boolean isUnion()
        Determines whether this UnionClause uses the UNION identifier.
        Returns:
        true if the identifier is UNION; false otherwise
      • 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
      • parseIdentifier

        protected java.lang.String parseIdentifier()
        Parses the JPQL identifier identifier the type of union.
        Returns:
        Either UNION, INTERSECT or EXCEPT
      • 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