Class WhenClause

  • All Implemented Interfaces:
    Expression

    public final class WhenClause
    extends AbstractExpression
    A WHEN predicate is used to calculate a condition and when it's true, its THEN will be executed.
    BNF: when_clause ::= WHEN conditional_expression THEN scalar_expression

    or
    BNF: simple_when_clause ::= WHEN scalar_expression THEN scalar_expression

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

      • WhenClause

        public WhenClause​(AbstractExpression parent)
        Creates a new WhenClause.
        Parameters:
        parent - The parent of this expression
    • Method Detail

      • buildWhenCollectionExpression

        public CollectionExpression buildWhenCollectionExpression()
        Creates a new CollectionExpression that will wrap the single WHEN expression.
        Returns:
        The single WHEN expression represented by a temporary collection
      • getActualThenIdentifier

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

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

        public AbstractExpression getThenExpression()
        Returns the Expression representing the expression following the identifier THEN.
        Returns:
        The expression representing the expression executed if the predicate is true
      • getWhenExpression

        public AbstractExpression getWhenExpression()
        Returns the Expression representing the conditional predicate of the clause.
        Returns:
        The expression following the WHEN identifier
      • hasSpaceAfterThen

        public boolean hasSpaceAfterThen()
        Determines whether a whitespace was parsed after THEN.
        Returns:
        true if there was a whitespace after THEN; false otherwise
      • hasSpaceAfterWhen

        public boolean hasSpaceAfterWhen()
        Determines whether a whitespace was parsed after WHEN.
        Returns:
        true if there was a whitespace after WHEN; false otherwise
      • hasSpaceAfterWhenExpression

        public boolean hasSpaceAfterWhenExpression()
        Determines whether a whitespace was parsed after the conditional expression.
        Returns:
        true if there was a whitespace after the conditional expression; false otherwise
      • hasThen

        public boolean hasThen()
        Determines whether the identifier THEN was part of the query.
        Returns:
        true if the identifier THEN was parsed; false otherwise
      • hasThenExpression

        public boolean hasThenExpression()
        Determines whether the THEN expression of the query was parsed.
        Returns:
        true the THEN expression was parsed; false if nothing was parsed
      • hasWhenExpression

        public boolean hasWhenExpression()
        Determines whether the conditional expression of the query was parsed.
        Returns:
        true the conditional expression was parsed; false if nothing was parsed
      • 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
      • 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
      • 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