java.lang.Object
org.eclipse.persistence.jpa.jpql.parser.AbstractExpression
org.eclipse.persistence.jpa.jpql.parser.AbstractFromClause
All Implemented Interfaces:
Expression
Direct Known Subclasses:
FromClause, SimpleFromClause

public abstract class AbstractFromClause extends AbstractExpression
The FROM clause of a query defines the domain of the query by declaring identification variables. An identification variable is an identifier declared in the FROM clause of a query. The domain of the query may be constrained by path expressions. Identification variables designate instances of a particular entity abstract schema type. The FROM clause can contain multiple identification variable declarations separated by a comma (,).
Since:
2.3
Version:
2.5
See Also:
  • Constructor Details

    • AbstractFromClause

      protected AbstractFromClause(AbstractExpression parent)
      Creates a new AbstractFromClause.
      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
    • buildCollectionExpression

      public final CollectionExpression buildCollectionExpression()
      Creates a new CollectionExpression that will wrap the single declaration.
      Returns:
      The single declaration represented by a temporary collection
    • findQueryBNF

      public final 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
    • getActualIdentifier

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

      public final Expression getAsOfClause()
      Returns the Expression representing the AS OF clause.
      Returns:
      The expression representing the AS OF clause
    • getDeclaration

      public final Expression getDeclaration()
      Returns the Expression that represents the declaration of this clause.
      Returns:
      The expression that was parsed representing the declaration
    • getDeclarationQueryBNFId

      public abstract String getDeclarationQueryBNFId()
      Returns the BNF of the declaration part of this clause.
      Returns:
      The BNF of the declaration part of this clause
    • getHierarchicalQueryClause

      public final Expression getHierarchicalQueryClause()
      Returns the Expression representing the hierarchical query clause.
      Returns:
      The expression representing the hierarchical query clause
      Since:
      2.5
    • hasAsOfClause

      public final boolean hasAsOfClause()
      Determines whether the AS OF clause is defined.
      Returns:
      true if the query that got parsed had the AS OF clause
    • hasDeclaration

      public final boolean hasDeclaration()
      Determines whether the declaration of this clause was parsed.
      Returns:
      true if the declaration of this clause was parsed; false if it was not parsed
    • hasHierarchicalQueryClause

      public final boolean hasHierarchicalQueryClause()
      Determines whether the hierarchical query clause was parsed or not.
      Returns:
      true if the query that got parsed had the hierarchical query clause
      Since:
      2.5
    • hasSpaceAfterDeclaration

      public final boolean hasSpaceAfterDeclaration()
      Determines whether a whitespace was found after the declaration query clause, which will be true if it's followed by either the hierarchical query clause or the AS OF clause.
      Returns:
      true if there was a whitespace after the declaration; false otherwise
      Since:
      2.5
    • hasSpaceAfterFrom

      public final boolean hasSpaceAfterFrom()
      Determines whether a whitespace was parsed after the FROM identifier.
      Returns:
      true if a whitespace was parsed after the FROM identifier; false otherwise
    • hasSpaceAfterHierarchicalQueryClause

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

      protected boolean isParsingComplete(WordParser wordParser, String word, Expression expression)
      Description copied from class: AbstractExpression
      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)
      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
    • shouldParseWithFactoryFirst

      protected boolean shouldParseWithFactoryFirst()
      Description copied from class: AbstractExpression
      Determines whether the parsing of the query should be performed using the factories first or it should automatically fallback to the fallback factory.
      Overrides:
      shouldParseWithFactoryFirst in class AbstractExpression
      Returns:
      true is returned by default so the factories are used before falling back
    • 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