Class AbstractSelectStatement

java.lang.Object
org.eclipse.persistence.jpa.jpql.parser.AbstractExpression
org.eclipse.persistence.jpa.jpql.parser.AbstractSelectStatement
All Implemented Interfaces:
Expression
Direct Known Subclasses:
SelectStatement, SimpleSelectStatement

public abstract class AbstractSelectStatement extends AbstractExpression
A query is an operation that retrieves data from one or more tables or views. In this reference, a top-level SELECT statement is called a query, and a query nested within another SQL statement is called a subquery.
Since:
2.3
Version:
2.5
See Also:
  • Constructor Details

    • AbstractSelectStatement

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

    • 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.

      Parameters:
      visitor - The visitor to visit the children of this object.
    • addChildrenTo

      protected void addChildrenTo(Collection<Expression> children)
      Description copied from class: AbstractExpression
      Adds the children of this AbstractExpression to the given collection.
      Overrides:
      addChildrenTo in class AbstractExpression
      Parameters:
      children - The collection used to store the children
    • addOrderedChildrenTo

      protected void addOrderedChildrenTo(List<Expression> children)
      Description copied from class: AbstractExpression
      Adds the children of this AbstractExpression to the given list.
      Overrides:
      addOrderedChildrenTo in class AbstractExpression
      Parameters:
      children - The list used to store the string representation of this AbstractExpression
    • buildFromClause

      protected abstract AbstractFromClause buildFromClause()
      Creates the expression representing the from clause of this select statement.
      Returns:
      A new from clause, null can't be returned
    • buildSelectClause

      protected abstract AbstractSelectClause buildSelectClause()
      Creates the expression representing the select clause of this select statement.
      Returns:
      A new from clause, null can't be returned
    • findQueryBNF

      public JPQLQueryBNF findQueryBNF(Expression expression)
      Description copied from interface: Expression
      Retrieves the JPQLQueryBNF that represents the fragment of this Expression that was used when parsing the given Expression.
      Specified by:
      findQueryBNF in interface Expression
      Overrides:
      findQueryBNF in class AbstractExpression
      Parameters:
      expression - The Expression that is a descendant of this one
      Returns:
      The JPQLQueryBNF that was used to parse the given expression
    • getFromClause

      public final Expression getFromClause()
      Returns the Expression representing the FROM clause.
      Returns:
      The expression representing the FROM clause
    • getGroupByClause

      public final Expression getGroupByClause()
      Returns the Expression representing the GROUP BY clause.
      Returns:
      The expression representing the GROUP BY clause
    • getHavingClause

      public final Expression getHavingClause()
      Returns the Expression representing the HAVING clause.
      Returns:
      The expression representing the HAVING clause
    • getSelectClause

      public final Expression getSelectClause()
      Returns the AbstractSelectClause representing the SELECT clause.
      Returns:
      The expression representing the SELECT clause
    • getWhereClause

      public final Expression getWhereClause()
      Returns the Expression representing the WHERE clause.
      Returns:
      The expression representing the WHERE clause
    • hasFromClause

      public final boolean hasFromClause()
      Determines whether the FROM clause was parsed or not.
      Returns:
      true if the query that got parsed had the FROM clause
    • hasGroupByClause

      public final boolean hasGroupByClause()
      Determines whether the GROUP BY clause was parsed or not.
      Returns:
      true if the query that got parsed had the GROUP BY clause
    • hasHavingClause

      public final boolean hasHavingClause()
      Determines whether the HAVING clause was parsed or not.
      Returns:
      true if the query that got parsed had the HAVING clause
    • hasSelectClause

      public final boolean hasSelectClause()
      Determines whether the SELECT clause was parsed or not.
      Returns:
      true if the query that got parsed had the HAVING clause
      Since:
      2.5
    • hasSpaceAfterFrom

      public final boolean hasSpaceAfterFrom()
      Determines whether a whitespace was found after the FROM clause. In some cases, the space is owned by a child of the FROM clause.
      Returns:
      true if there was a whitespace after the FROM clause and owned by this expression; false otherwise
    • hasSpaceAfterGroupBy

      public final boolean hasSpaceAfterGroupBy()
      Determines whether a whitespace was found after the GROUP BY clause. In some cases, the space is owned by a child of the GROUP BY clause.
      Returns:
      true if there was a whitespace after the GROUP BY clause and owned by this expression; false otherwise
    • hasSpaceAfterSelect

      public final boolean hasSpaceAfterSelect()
      Determines whether a whitespace was found after the SELECT clause. In some cases, the space is owned by a child of the SELECT clause.
      Returns:
      true if there was a whitespace after the SELECT clause and owned by this expression; false otherwise
    • hasSpaceAfterWhere

      public final boolean hasSpaceAfterWhere()
      Determines whether a whitespace was found after the WHERE clause. In some cases, the space is owned by a child of the WHERE clause.
      Returns:
      true if there was a whitespace after the WHERE clause and owned by this expression; false otherwise
    • hasWhereClause

      public final boolean hasWhereClause()
      Determines whether the WHERE clause is defined.
      Returns:
      true if the query that got parsed had the WHERE clause
    • parse

      protected void parse(WordParser wordParser, boolean tolerant)
      Description copied from class: AbstractExpression
      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
    • shouldManageSpaceAfterClause

      protected boolean shouldManageSpaceAfterClause()
      Determines whether the whitespace following the HAVING clause should be managed by this expression or not.
      Returns:
      true by default to keep the whitespace part of this expression; false to let the parent handle it
    • toParsedText

      protected void toParsedText(StringBuilder writer, boolean actual)
      Description copied from class: AbstractExpression
      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