Class AbstractJPQLQueryBuilder

java.lang.Object
org.eclipse.persistence.jpa.jpql.tools.model.AbstractJPQLQueryBuilder
All Implemented Interfaces:
IJPQLQueryBuilder
Direct Known Subclasses:
EclipseLinkJPQLQueryBuilder, JPQLQueryBuilder1_0, JPQLQueryBuilder2_0, JPQLQueryBuilder2_1

public abstract class AbstractJPQLQueryBuilder extends Object implements IJPQLQueryBuilder
An abstract implementation of IJPQLQueryBuilder that parses a JPQL query or any JPQL fragments and creates the StateObject representation by delegating the creation to an instance of BasicStateObjectBuilder.
Since:
2.4
Version:
2.4
See Also:
  • Constructor Details

    • AbstractJPQLQueryBuilder

      protected AbstractJPQLQueryBuilder()
      Creates a new AbstractJPQLQueryBuilder.
  • Method Details

    • buildCaseExpressionStateObjectBuilder

      public ICaseExpressionStateObjectBuilder buildCaseExpressionStateObjectBuilder(StateObject parent)
      Description copied from interface: IJPQLQueryBuilder
      Creates a builder that can create a CASE expression programmatically. Once the expression is complete, ICaseExpressionStateObjectBuilder.buildStateObject() will return the result.
      Specified by:
      buildCaseExpressionStateObjectBuilder in interface IJPQLQueryBuilder
      Parameters:
      parent - The StateObject that will be the parent of the newly created model
      Returns:
      The builder of a CASE expression
    • buildStateObject

      public JPQLQueryStateObject buildStateObject(IManagedTypeProvider provider, CharSequence jpqlQuery, boolean tolerant)
      Description copied from interface: IJPQLQueryBuilder
      Creates a state model representation of a JPQL query that can be edited.
      Specified by:
      buildStateObject in interface IJPQLQueryBuilder
      Parameters:
      provider - The provider of managed types
      jpqlQuery - The JPQL query to parse into a StateObject model
      tolerant - Determines if the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
      Returns:
      The root of the StateObject model that represents the edited form of the JPQL query
    • buildStateObject

      public JPQLQueryStateObject buildStateObject(IManagedTypeProvider provider, CharSequence jpqlQuery, String queryBNFId, boolean tolerant)
      Description copied from interface: IJPQLQueryBuilder
      Creates a state model representation of a JPQL query that can be edited.
      Specified by:
      buildStateObject in interface IJPQLQueryBuilder
      Parameters:
      provider - The provider of managed types
      jpqlQuery - The JPQL query to parse into a StateObject model
      queryBNFId - The unique identifier of the query BNF that will be used to parse the fragment
      tolerant - Determines if the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
      Returns:
      The root of the StateObject model that represents the edited form of the JPQL query
    • buildStateObject

      public StateObject buildStateObject(StateObject parent, CharSequence jpqlFragment, String queryBNFId)
      Description copied from interface: IJPQLQueryBuilder
      Creates a StateObject representation of the given JPQL fragment. In order to properly parse the fragment, the given unique identifier of the JPQLQueryBNF will determine how to parse it.

      It is possible the given JPQL fragment has more than one expression, in this case, parsing should stop at the first comma (x, y) or space (x y) where x and y are two separate expressions.

      Specified by:
      buildStateObject in interface IJPQLQueryBuilder
      Parameters:
      parent - The StateObject that will be the parent of the newly created model
      jpqlFragment - A portion of a JPQL query that will be parsed and the StateObject representation will be created
      queryBNFId - The unique identifier of the query BNF that will be used to parse the fragment
      Returns:
      The StateObject representation of the given JPQL fragment
    • buildStateObjectBuilder

      protected abstract BasicStateObjectBuilder buildStateObjectBuilder()
      Creates the builder that creates the StateObject for each Expression.
      Returns:
      The builder that will be visiting the Expression
    • getStateObjectBuilder

      protected final BasicStateObjectBuilder getStateObjectBuilder()
      Returns the builder that creates the StateObject for each Expression.
      Returns:
      The builder that will be visiting the Expression
    • parse

      protected JPQLExpression parse(CharSequence jpqlQuery, JPQLGrammar jpqlGrammar, boolean tolerant)
      Parses the given JPQL query with tolerant mode turned on.
      Parameters:
      jpqlQuery - The string representation of the JPQL query to parse
      jpqlGrammar - The JPQL grammar that defines how to parse a JPQL query
      tolerant - Determines if the parsing system should be tolerant, meaning if it should try to parse invalid or incomplete queries
      Returns:
      The root of the parsed tree representation of the JPQL query
    • parse

      protected JPQLExpression parse(CharSequence jpqFragment, JPQLGrammar jpqlGrammar, String queryBNFId)
      Parses the given JPQL fragment with tolerant mode turned on.
      Parameters:
      jpqFragment - The string representation of the portion of a JPQL query to parse
      jpqlGrammar - The JPQL grammar that defines how to parse a JPQL query
      queryBNFId - The unique identifier of the JPQLQueryBNF
      Returns:
      The root of the parsed tree representation of the JPQL fragment
    • wrap

      protected ExpressionVisitor wrap(BasicStateObjectBuilder builder)
      If a subclass needs to wrap the given BasicStateObjectBuilder with another visitor can do so by simply overriding this method. buildStateObjectBuilder() can't be easily overridden with an ExpressionVisitor due to the constraint on the return type.
      Parameters:
      builder - The builder to wrap
      Returns:
      By default the given builder is returned