Class OrderByItem

  • All Implemented Interfaces:
    Expression

    public final class OrderByItem
    extends AbstractExpression
    An orderby_item must be one of the following:
    1. A state_field_path_expression that evaluates to an orderable state field of an entity or embeddable class abstract schema type designated in the SELECT clause by one of the following:
      • A general_identification_variable
      • A single_valued_object_path_expression
    2. A state_field_path_expression that evaluates to the same state field of the same entity or embeddable abstract schema type as a state_field_path_expression in the SELECT clause
    3. A result_variable that refers to an orderable item in the SELECT clause for which the same result_variable has been specified. This may be the result of an aggregate_expression, a scalar_expression, or a state_field_path_expression in the SELECT clause.

    The keyword ASC specifies that ascending ordering be used for the associated orderby_item; the keyword DESC specifies that descending ordering be used. Ascending ordering is the default.

    The keyword NULLS FIRST specifies that nulls first ordering be used for the associated orderby_item; the keyword NULLS LAST specifies that nulls last ordering be used. Ascending ordering is the default.

    JPA 1.0:

    BNF: orderby_item ::= state_field_path_expression [ ASC | DESC ]

    JPA 2.0

    BNF: orderby_item ::= state_field_path_expression | result_variable [ ASC | DESC ]

    EclipseLink 2.4:

    BNF: orderby_item ::= state_field_path_expression | result_variable [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ]

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

      • OrderByItem

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

      • getActualNullOrdering

        public java.lang.String getActualNullOrdering()
        Returns the actual null ordering identifier found in the string representation of the JPQL query, which has the actual case that was used.
        Returns:
        The null ordering identifier that was actually parsed, if one was present, otherwise an empty string is returned
      • getActualOrdering

        public java.lang.String getActualOrdering()
        Returns the actual ordering identifier found in the string representation of the JPQL query, which has the actual case that was used.
        Returns:
        The ordering identifier that was actually parsed, if one was present, otherwise an empty string is returned
      • getExpression

        public Expression getExpression()
        Returns the Expression that represents the order by expression.
        Returns:
        The expression that was parsed representing the order by expression
      • getOrdering

        public OrderByItem.Ordering getOrdering()
        Returns the enum constant representing the ordering type.
        Returns:
        The constant representing the ordering, in the case the ordering was not parsed, then OrderByItem.Ordering.DEFAULT is returned
      • hasExpression

        public boolean hasExpression()
        Determines whether the order by expression was parsed.
        Returns:
        true if the order by expression was parsed; false otherwise
      • hasNulls

        public boolean hasNulls()
        Determines whether the NULLS identifier was parsed.
        Returns:
        true if the NULLS identifier was parsed; false otherwise
      • hasOrdering

        public boolean hasOrdering()
        Determines whether ASC or DESC was parsed.
        Returns:
        true if the ordering status was parsed; false otherwise
        Since:
        2.5
      • hasSpaceAfterExpression

        public boolean hasSpaceAfterExpression()
        Determines whether a whitespace was parsed after the order by expression.
        Returns:
        true if there was a whitespace after the order by expression; false otherwise
      • hasSpaceAfterNulls

        public boolean hasSpaceAfterNulls()
        Determines whether a whitespace was parsed after the NULLS identifier. If the composite identifier was fully parsed - NULLS FIRST or NULLS LAST - then this is always true, but if only NULLS was parsed, then this can be useful to determine if there was a space after.
        Returns:
        true if there was a whitespace after the NULLS identifier; false otherwise
      • hasSpaceAfterOrdering

        public boolean hasSpaceAfterOrdering()
        Determines whether a whitespace was parsed after the ordering.
        Returns:
        true if there was a whitespace after the ordering; false otherwise
      • isAscending

        public boolean isAscending()
        Determines whether the ordering was specified as being ascendant.
        Returns:
        true if ASC was parsed; false otherwise
      • isDefault

        public boolean isDefault()
        Determines whether the ordering was not specified.
        Returns:
        true if no ordering was parsed; false otherwise
      • isDescending

        public boolean isDescending()
        Determines whether the ordering was specified as being descendant.
        Returns:
        true if DESC was parsed; false otherwise
      • isNullsFirst

        public boolean isNullsFirst()
        Determines whether the ordering was specified as being nulls first.
        Returns:
        true if NULLS FIRST was parsed; false otherwise
      • isNullsLast

        public boolean isNullsLast()
        Determines whether the ordering was specified as being nulls first.
        Returns:
        true if NULLS LAST was parsed; 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
      • 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