java.lang.Object
org.eclipse.persistence.jpa.jpql.parser.ExpressionFactory
All Implemented Interfaces:
Comparable<ExpressionFactory>
Direct Known Subclasses:
AbsExpressionFactory, AbstractLiteralExpressionFactory, AbstractSchemaNameFactory, AllOrAnyExpressionFactory, AndExpressionFactory, ArithmeticExpressionFactory, AsOfClauseFactory, AvgFunctionFactory, BadExpressionFactory, BetweenExpressionFactory, CaseExpressionFactory, CastExpressionFactory, CoalesceExpressionFactory, CollectionMemberDeclarationFactory, CollectionMemberExpressionFactory, ComparisonExpressionFactory, ConcatExpressionFactory, ConnectByClauseFactory, ConstructorExpressionFactory, CountFunctionFactory, DatabaseTypeFactory, DateTimeFactory, DeleteClauseFactory, DeleteStatementFactory, EntryExpressionFactory, ExistsExpressionFactory, ExtractExpressionFactory, FromClauseFactory, FunctionExpressionFactory, GeneralIdentificationExpressionFactory, GroupByClauseFactory, GroupByItemFactory, HavingClauseFactory, HierarchicalQueryClauseFactory, IdentificationVariableDeclarationFactory, IdentificationVariableFactory, IndexExpressionFactory, InExpressionFactory, InternalOrderByItemFactory, IsExpressionFactory, JoinFactory, KeywordExpressionFactory, LengthExpressionFactory, LikeExpressionFactory, LocalDateTypeFactory, LocalExpressionFactory, LocateExpressionFactory, LowerExpressionFactory, MathExpressionFactory, MaxFunctionFactory, MinFunctionFactory, ModExpressionFactory, NotExpressionFactory, NullIfExpressionFactory, ObjectExpressionFactory, OnClauseFactory, OrderByClauseFactory, OrderByItemFactory, OrderSiblingsByClauseFactory, OrExpressionFactory, RangeDeclarationFactory, RangeVariableDeclarationFactory, RegexpExpressionFactory, ResultVariableFactory, SelectClauseFactory, SelectStatementFactory, SimpleSelectStatementFactory, SizeExpressionFactory, SqrtExpressionFactory, StartWithClauseFactory, StringLiteralFactory, SubstringExpressionFactory, SumFunctionFactory, TableExpressionFactory, TableVariableDeclarationFactory, TreatExpressionFactory, TrimExpressionFactory, TypeExpressionFactory, UnionClauseFactory, UnknownExpressionFactory, UpdateClauseFactory, UpdateItemFactory, UpdateItemStateFieldPathExpressionFactory, UpdateStatementFactory, UpperExpressionFactory, WhenClauseFactory, WhereClauseFactory

public abstract class ExpressionFactory extends Object implements Comparable<ExpressionFactory>
An ExpressionFactory is responsible to parse a portion of JPQL query which starts with one of the factory's JPQL identifiers.

Provisional API: This interface is part of an interim API that is still under development and expected to change significantly before reaching stability. It is available at this early stage to solicit feedback from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken (repeatedly) as the API evolves.

Since:
2.3
Version:
2.5
  • Constructor Details

    • ExpressionFactory

      protected ExpressionFactory(String id, String... identifiers)
      Creates a new ExpressionFactory.
      Parameters:
      id - The unique identifier of this ExpressionFactory
      identifiers - The JPQL identifiers handled by this factory
      Throws:
      NullPointerException - The given unique identifier cannot be null or the list of JPQL identifiers was null
  • Method Details

    • buildExpression

      protected abstract AbstractExpression buildExpression(AbstractExpression parent, WordParser wordParser, String word, JPQLQueryBNF queryBNF, AbstractExpression expression, boolean tolerant)
      Creates a new Expression.
      Parameters:
      parent - The parent AbstractExpression
      wordParser - The text to parse based on the current position of the cursor
      word - The current word being parsed
      queryBNF - The BNF grammar that was used to identifier this factory to be capable to parse a portion of the query
      expression - During the parsing, it is possible the first part of an expression was parsed which needs to be used as a sub-expression of the newly created expression
      Returns:
      A new AbstractExpression representing the portion or the totality of the text held by WordParser starting at the cursor position
    • compareTo

      public final int compareTo(ExpressionFactory expressionFactory)
      Specified by:
      compareTo in interface Comparable<ExpressionFactory>
    • equals

      public final boolean equals(Object object)
      Overrides:
      equals in class Object
    • getExpressionRegistry

      public final ExpressionRegistry getExpressionRegistry()
      Returns the registry containing the JPQLQueryBNFs and the ExpressionFactories that are used to properly parse a JPQL query.
      Returns:
      The registry containing the information related to the JPQL grammar
    • getId

      public final String getId()
      Returns the unique identifier of this ExpressionFactory.
      Returns:
      The identifier used to register this ExpressionFactory with ExpressionRegistry
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class Object
    • identifiers

      public final String[] identifiers()
      Returns the JPQL identifiers handled by this factory.
      Returns:
      The list of JPQL identifiers this factory knows how to parse
    • toString

      public final String toString()
      Overrides:
      toString in class Object