All Known Subinterfaces:
DeclarationStateObject, ListHolderStateObject<T>, VariableDeclarationStateObject
All Known Implementing Classes:
AbsExpressionStateObject, AbstractConditionalClauseStateObject, AbstractDoubleEncapsulatedExpressionStateObject, AbstractEncapsulatedExpressionStateObject, AbstractFromClauseStateObject, AbstractIdentificationVariableDeclarationStateObject, AbstractListHolderStateObject, AbstractModifyClauseStateObject, AbstractModifyStatementStateObject, AbstractPathExpressionStateObject, AbstractRangeVariableDeclarationStateObject, AbstractSchemaNameStateObject, AbstractSelectClauseStateObject, AbstractSelectStatementStateObject, AbstractSingleEncapsulatedExpressionStateObject, AbstractStateObject, AbstractTripleEncapsulatedExpressionStateObject, AdditionExpressionStateObject, AggregateFunctionStateObject, AllOrAnyExpressionStateObject, AndExpressionStateObject, ArithmeticExpressionStateObject, ArithmeticFactorStateObject, AvgFunctionStateObject, BadExpressionStateObject, BetweenExpressionStateObject, CaseExpressionStateObject, CoalesceExpressionStateObject, CollectionExpressionStateObject, CollectionMemberDeclarationStateObject, CollectionMemberExpressionStateObject, CollectionValuedPathExpressionStateObject, ComparisonExpressionStateObject, CompoundExpressionStateObject, ConcatExpressionStateObject, ConstructorExpressionStateObject, CountFunctionStateObject, DateTimeStateObject, DeleteClauseStateObject, DeleteStatementStateObject, DerivedPathIdentificationVariableDeclarationStateObject, DerivedPathVariableDeclarationStateObject, DivisionExpressionStateObject, EmptyCollectionComparisonExpressionStateObject, EncapsulatedIdentificationVariableExpressionStateObject, EntityTypeLiteralStateObject, EntryExpressionStateObject, EnumTypeStateObject, ExistsExpressionStateObject, FromClauseStateObject, FunctionExpressionStateObject, GroupByClauseStateObject, HavingClauseStateObject, IdentificationVariableDeclarationStateObject, IdentificationVariableStateObject, IndexExpressionStateObject, InExpressionStateObject, InputParameterStateObject, JoinStateObject, JPQLQueryStateObject, KeyExpressionStateObject, KeywordExpressionStateObject, LengthExpressionStateObject, LikeExpressionStateObject, LocateExpressionStateObject, LogicalExpressionStateObject, LowerExpressionStateObject, MaxFunctionStateObject, MinFunctionStateObject, ModExpressionStateObject, MultiplicationExpressionStateObject, NotExpressionStateObject, NullComparisonExpressionStateObject, NullIfExpressionStateObject, NumericLiteralStateObject, ObjectExpressionStateObject, OrderByClauseStateObject, OrderByItemStateObject, OrExpressionStateObject, RangeVariableDeclarationStateObject, ResultVariableStateObject, SelectClauseStateObject, SelectStatementStateObject, SimpleFromClauseStateObject, SimpleSelectClauseStateObject, SimpleSelectStatementStateObject, SimpleStateObject, SizeExpressionStateObject, SqrtExpressionStateObject, StateFieldPathExpressionStateObject, StringLiteralStateObject, SubExpressionStateObject, SubstringExpressionStateObject, SubtractionExpressionStateObject, SumFunctionStateObject, TreatExpressionStateObject, TrimExpressionStateObject, TypeExpressionStateObject, UnknownExpressionStateObject, UpdateClauseStateObject, UpdateItemStateObject, UpdateStatementStateObject, UpperExpressionStateObject, ValueExpressionStateObject, WhenClauseStateObject, WhereClauseStateObject

public interface StateObject
A StateObject is an editable representation of a JPQL query.

IJPQLQueryBuilder can be used to create the state model from an existing JPQL query.

Since:
2.4
Version:
2.5
  • Method Details

    • accept

      void accept(StateObjectVisitor visitor)
      Visits this StateObject by the given visitor.
      Parameters:
      visitor - The visitor to visit this object
    • addPropertyChangeListener

      void addPropertyChangeListener(String propertyName, IPropertyChangeListener<?> listener)
      Registers the given IPropertyChangeListener for the specified property. The listener will be notified only for changes to the specified property.
      Parameters:
      propertyName - The name of the property for which the listener was registered
      listener - The listener to be notified upon changes
      Throws:
      NullPointerException - IPropertyChangeListener cannot be null
      IllegalArgumentException - The listener is already registered with the property name
    • children

      Iterable<StateObject> children()
      Returns the ordered children of this StateObject.
      Returns:
      The children of this StateObject or an empty iterable this state object does not have children
    • decorate

      void decorate(StateObject decorator)
      Decorates this StateObject with the given decorator. It means the behavior of this StateObject is modified by the given one. By default, this StateObject becomes the parent of the given one.
      Parameters:
      decorator - The StateObject decorating this one
    • findIdentificationVariable

      IdentificationVariableStateObject findIdentificationVariable(String identificationVariable)
      Returns the IdentificationVariableStateObject representing the given identification variable.
      Parameters:
      identificationVariable - The name of the identification variable to retrieve its state object
      Returns:
      The IdentificationVariableStateObject defining the given identification variable
    • getDeclaration

      DeclarationStateObject getDeclaration()
      Returns the declaration clause which defines the domain of the query by declaring identification variables.
      Returns:
      The declaration clause of which this StateObject is a child; i.e. either the top-level declaration if this is part of the top query or the sub-level declaration if this is part of a subquery
    • getDecorator

      StateObject getDecorator()
      Returns the StateObject decorating this one if one has been set, which means the behavior of this StateObject is modified by the decorator.
      Returns:
      The StateObject decorating this one
    • getExpression

      Expression getExpression()
      Returns the actual parsed object if this StateObject representation of the JPQL query was created by parsing an existing JPQL query.
      Returns:
      The parsed object when a JPQL query is parsed and converted into a StateObject or null when the JPQL query is manually created (i.e. not from a string)
    • getGrammar

      JPQLGrammar getGrammar()
      Returns the grammar that defines how to parse a JPQL query.
      Returns:
      The grammar that was used to parse the JPQL query
    • getManagedTypeProvider

      IManagedTypeProvider getManagedTypeProvider()
      Returns the provider of managed types.
      Returns:
      The provider that gives access to the managed types
    • getParent

      StateObject getParent()
      Returns the parent of this StateObject.
      Returns:
      Returns the parent of this StateObject, which is null only when this is the root of the hierarchy
    • getQueryBuilder

      IJPQLQueryBuilder getQueryBuilder()
      Returns the IJPQLQueryBuilder that is responsible to create various part of the StateObject hierarchy.
      Returns:
      The builder that created this StateObject from a JPQL query or that gives access to various sub-builders
    • getRoot

      Returns the root of the StateObject hierarchy.
      Returns:
      The root of the state model representing the JPQL query
    • isDecorated

      boolean isDecorated()
      Determines whether this StateObject is being decorated by another StateObject, which means the behavior is modified by the given one. return true if this StateObject is being decorated; false otherwise
    • isEquivalent

      boolean isEquivalent(StateObject stateObject)
      Determines whether the given StateObject is equivalent to this one, i.e. the information of both StateObject is the same.
      Parameters:
      stateObject - The StateObject to compare its content to this one
      Returns:
      true if both object are equivalent; false otherwise
    • removePropertyChangeListener

      void removePropertyChangeListener(String propertyName, IPropertyChangeListener<?> listener)
      Unregisters the given IPropertyChangeListener that was registered for the specified property. The listener will no longer be notified when the property changes.
      Parameters:
      propertyName - The name of the property for which the listener was registered
      listener - The listener to unregister
      Throws:
      NullPointerException - IPropertyChangeListener cannot be null
      IllegalArgumentException - The listener was never registered with the property name
    • setParent

      void setParent(StateObject parent)
      Sets the given StateObject to become the parent of this one.
      Parameters:
      parent - The new parent StateObject of this one, which cannot be null
    • toString

      void toString(Appendable writer)
      Prints out a string representation of this StateObject, which should not be used to define a true string representation of a JPQL query but should be used for debugging purposes.

      Important: If this StateObject is decorated by another one, then toText(Appendable) from that decorator is invoked, otherwise the information contained in this one will be printed out.

      Parameters:
      writer - The writer used to print out the string representation
      See Also:
    • toText

      void toText(Appendable writer)
      Prints out a string representation of this StateObject, which should not be used to define a true string representation of a JPQL query but should be used for debugging purposes.

      Important: Even if this StateObject is decorated by another one, the decorator will not be used to print out a string representation of this one.

      Parameters:
      writer - The writer used to print out the string representation
      See Also: