Class AbstractPathExpression

java.lang.Object
org.eclipse.persistence.jpa.jpql.parser.AbstractExpression
org.eclipse.persistence.jpa.jpql.parser.AbstractPathExpression
All Implemented Interfaces:
Expression
Direct Known Subclasses:
CollectionValuedPathExpression, StateFieldPathExpression

public abstract class AbstractPathExpression extends AbstractExpression
An identification variable followed by the navigation operator (.) and a state field or association field is a path expression. The type of the path expression is the type computed as the result of navigation; that is, the type of the state field or association field to which the expression navigates.
Since:
2.3
Version:
2.5
See Also:
  • Constructor Details

    • AbstractPathExpression

      protected AbstractPathExpression(AbstractExpression parent, AbstractExpression identificationVariable)
      Creates a new AbstractPathExpression.
      Parameters:
      parent - The parent of this expression
      identificationVariable - The identification variable that was already parsed, which means the beginning of the parsing should start with a dot
    • AbstractPathExpression

      public AbstractPathExpression(AbstractExpression parent, AbstractExpression identificationVariable, String paths)
      Creates a new AbstractPathExpression.
      Parameters:
      parent - The parent of this expression
      identificationVariable - The identification variable that was already parsed, which means the beginning of the parsing should start with a dot
      paths - The path expression that is following the identification variable
    • AbstractPathExpression

      protected AbstractPathExpression(AbstractExpression parent, String paths)
      Creates a new AbstractPathExpression.
      Parameters:
      parent - The parent of this expression
      paths - The path 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 final 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
    • endsWithDot

      public final boolean endsWithDot()
      Determines whether the path ends with a dot or not.
      Returns:
      true if the path ends with a dot; false otherwise
    • 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
    • getIdentificationVariable

      public final Expression getIdentificationVariable()
      Returns the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.
      Returns:
      The root of the path expression
    • getPath

      public final String getPath(int index)
      Returns the specified segment of the state field path.
      Parameters:
      index - The 0-based segment index
      Returns:
      The specified segment
    • hasIdentificationVariable

      public final boolean hasIdentificationVariable()
      Determines whether the identification variable was parsed.
      Returns:
      true the identification variable was parsed; false otherwise
    • hasVirtualIdentificationVariable

      public final boolean hasVirtualIdentificationVariable()
      Determines whether the path's identification variable is virtual or not, meaning it's not part of the query but is required for proper navigability.
      Returns:
      true if this identification variable was virtually created to fully qualify path expression; false if it was parsed
    • parse

      protected final 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
    • paths

      public final ListIterable<String> paths()
      Returns the segments in the state field path in order.
      Returns:
      An Iterator over the segments of the state field path
    • pathSize

      public final int pathSize()
      Returns the number of segments in the state field path.
      Returns:
      The number of segments
    • setVirtualIdentificationVariable

      protected final void setVirtualIdentificationVariable(String variableName)
      Sets a virtual identification variable because the abstract schema name was parsed without one. This is valid in an UPDATE and DELETE queries.
      Parameters:
      variableName - The identification variable that was generated to identify the "root" object
    • startsWithDot

      public final boolean startsWithDot()
      Determines whether the path starts with a dot or not.
      Returns:
      true if the path starts with a dot; false otherwise
    • toParsedText

      public String toParsedText(int startIndex, int stopIndex)
      Returns a string representation from the given range.
      Parameters:
      startIndex - The beginning of the range to create the string representation
      stopIndex - When to stop creating the string representation, which is exclusive
      Returns:
      The string representation of this path expression contained in the given range
      Since:
      2.4
    • toParsedText

      protected final 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