Class AbstractSelectStatementStateObject
java.lang.Object
org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractSelectStatementStateObject
- All Implemented Interfaces:
StateObject
- Direct Known Subclasses:
SelectStatementStateObject,SimpleSelectStatementStateObject
This state object represents the select statement, which has at least a
SELECT
clause and a FROM clause.- Since:
- 2.4
- Version:
- 2.5
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringNotify the state object representing theGROUP BYclause has changed.static final StringNotify the state object representing theHAVINGclause has changed.static final StringNotify the state object representing theWHEREclause has changed. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCreates a newAbstractSelectStatementStateObject. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddChildren(List<StateObject> children) Adds the children of thisStateObjectto the given list.Adds a new collection declaration to theFROMclause.addCollectionDeclaration(String collectionValuedPath, String identificationVariable) Adds a new collection declaration to theFROMclause.Adds theGROUP BYclause.addGroupByClause(String jpqlFragment) Adds theGROUP BYclause and parses the given JPQL fragment.Adds theHAVINGclause.addHavingClause(String jpqlFragment) Adds theHAVINGclause and parses the given JPQL fragment.Adds a new range variable declaration to theFROMclause.addRangeDeclaration(String entityName, String identificationVariable) Adds to this select statement a new range variable declaration.addRangeDeclaration(IEntity entity, String identificationVariable) Adds to this select statement a new range variable declaration.Adds theWHEREclause.addWhereClause(String jpqlFragment) Adds theWHEREclause and parses the given JPQL fragment.protected abstract AbstractFromClauseStateObjectCreates the state object representing theFROMclause.protected abstract AbstractSelectClauseStateObjectCreates the state object representing theSELECTclause.ListIterable<? extends VariableDeclarationStateObject> Returns the list ofVariableDeclarationStateObjectdefining the variable declarations, which are mapping an entity to a variable or a collection-valued member to a variable.findIdentificationVariable(String identificationVariable) Returns theIdentificationVariableStateObjectrepresenting the given identification variable.Returns the declaration clause which defines the domain of the query by declaring identification variables.Returns the actual parsed object if thisStateObjectrepresentation of the JPQL query was created by parsing an existing JPQL query.Returns the state object representing theFROMclause.Returns the state object representing theGROUP BYclause.Returns the state object representing theHAVINGclause.Returns the state object representing theSELECTclause.Returns the state object representing theWHEREclause.booleanReturns the state object representing theGROUP BYclause.booleanReturns the state object representing theHAVINGclause.booleanReturns the state object representing theWHEREclause.Returns theIdentificationVariableStateObjectsholding onto the identification variables, which are the variables defined in theFROMclause.protected voidInitializes this state object.booleanisEquivalent(StateObject stateObject) Determines whether the givenStateObjectis equivalent to this one, i.e.voidparseSelect(String jpqlFragment) Parses the given JPQL fragment and create the select item.voidRemoves theGROUP BYclause.voidRemoves theHAVINGclause.voidRemoves theWHEREclause.voidEither adds or removes the state object representing theGROUP BYclause.voidEither adds or removes the state object representing theHAVINGclause.voidEither adds or removes the state object representing theWHEREclause.protected voidtoTextInternal(Appendable writer) Prints out a string representation of thisStateObject, which should not be used to define atruestring representation of a JPQL query but should be used for debugging purposes.Methods inherited from class org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
acceptUnknownVisitor, acceptUnknownVisitor, addProblems, addPropertyChangeListener, areEquivalent, buildProblem, buildProblem, buildStateObject, buildStateObjects, checkParent, children, decorate, equals, firePropertyChanged, getChangeSupport, getDecorator, getGrammar, getManagedTypeProvider, getParent, getQueryBuilder, getRoot, getType, getType, getTypeHelper, getTypeRepository, hashCode, isDecorated, parent, parent, parent, removePropertyChangeListener, setExpression, setParent, toString, toString, toStringInternal, toStringItems, toTextMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.persistence.jpa.jpql.tools.model.query.StateObject
accept
-
Field Details
-
GROUP_BY_CLAUSE_PROPERTY
Notify the state object representing theGROUP BYclause has changed.- See Also:
-
HAVING_CLAUSE_PROPERTY
Notify the state object representing theHAVINGclause has changed.- See Also:
-
WHERE_CLAUSE_PROPERTY
Notify the state object representing theWHEREclause has changed.- See Also:
-
-
Constructor Details
-
AbstractSelectStatementStateObject
Creates a newAbstractSelectStatementStateObject.- Parameters:
parent- The parent of this state object, which cannot benull- Throws:
NullPointerException- The given parent cannot benull
-
-
Method Details
-
addChildren
Description copied from class:AbstractStateObjectAdds the children of thisStateObjectto the given list.- Overrides:
addChildrenin classAbstractStateObject- Parameters:
children- The list used to store the children
-
addCollectionDeclaration
Adds a new collection declaration to theFROMclause.- Returns:
- The
CollectionMemberDeclarationStateObjectrepresenting the collection declaration
-
addCollectionDeclaration
public CollectionMemberDeclarationStateObject addCollectionDeclaration(String collectionValuedPath, String identificationVariable) Adds a new collection declaration to theFROMclause.- Parameters:
collectionValuedPath- The collection-valued path expressionidentificationVariable- The variable defining the collection-valued path expression- Returns:
- The
CollectionMemberDeclarationStateObjectrepresenting the collection declaration
-
addGroupByClause
Adds theGROUP BYclause. The clause is not added if it's already present.- Returns:
- The
GroupByClauseStateObject
-
addGroupByClause
Adds theGROUP BYclause and parses the given JPQL fragment. The clause is not added if it's already present.- Parameters:
jpqlFragment- The fragment of the JPQL to parse that represents the group by items, the fragment cannot start withGROUP BY- Returns:
- The
GroupByClauseStateObject
-
addHavingClause
Adds theHAVINGclause. The clause is not added if it's already present.- Returns:
- The
GroupByClauseStateObject
-
addHavingClause
Adds theHAVINGclause and parses the given JPQL fragment. The clause is not added if it's already present.- Parameters:
jpqlFragment- The fragment of the JPQL to parse that represents the conditional expression, the fragment cannot start withHAVING- Returns:
- The
HavingClauseStateObject
-
addRangeDeclaration
Adds a new range variable declaration to theFROMclause.- Returns:
- The
StateObjectrepresenting the new range variable declaration
-
addRangeDeclaration
public IdentificationVariableDeclarationStateObject addRangeDeclaration(IEntity entity, String identificationVariable) Adds to this select statement a new range variable declaration.- Parameters:
entity- The external form of the entity to add to the declaration listidentificationVariable- The unique identifier identifying the givenIEntity- Returns:
- The
StateObjectrepresenting the new range variable declaration
-
addRangeDeclaration
public IdentificationVariableDeclarationStateObject addRangeDeclaration(String entityName, String identificationVariable) Adds to this select statement a new range variable declaration.- Parameters:
entityName- The name of the entityidentificationVariable- The unique identifier identifying the entity- Returns:
- The
StateObjectrepresenting the range variable declaration
-
addWhereClause
Adds theWHEREclause. The clause is not added if it's already present.- Returns:
- The
GroupByClauseStateObject
-
addWhereClause
Adds theWHEREclause and parses the given JPQL fragment. The clause is not added if it's already present.- Parameters:
jpqlFragment- The fragment of the JPQL to parse that represents the conditional expression, the fragment cannot start withWHERE- Returns:
- The
WhereClauseStateObject
-
buildFromClause
Creates the state object representing theFROMclause.- Returns:
- A concrete instance of
AbstractFromClauseStateObject
-
buildSelectClause
Creates the state object representing theSELECTclause.- Returns:
- A concrete instance of
AbstractSelectClauseStateObject
-
declarations
Returns the list ofVariableDeclarationStateObjectdefining the variable declarations, which are mapping an entity to a variable or a collection-valued member to a variable.Example:
Employee eIN (e.employees) AS emps
- Returns:
- The list of
VariableDeclarationStateObject
-
findIdentificationVariable
Description copied from interface:StateObjectReturns theIdentificationVariableStateObjectrepresenting the given identification variable.- Specified by:
findIdentificationVariablein interfaceStateObject- Overrides:
findIdentificationVariablein classAbstractStateObject- Parameters:
identificationVariable- The name of the identification variable to retrieve its state object- Returns:
- The
IdentificationVariableStateObjectdefining the given identification variable
-
getDeclaration
Description copied from interface:StateObjectReturns the declaration clause which defines the domain of the query by declaring identification variables.- Specified by:
getDeclarationin interfaceStateObject- Overrides:
getDeclarationin classAbstractStateObject- Returns:
- The declaration clause of which this
StateObjectis 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
-
getExpression
Description copied from interface:StateObjectReturns the actual parsed object if thisStateObjectrepresentation of the JPQL query was created by parsing an existing JPQL query.- Specified by:
getExpressionin interfaceStateObject- Overrides:
getExpressionin classAbstractStateObject- Returns:
- The parsed object when a JPQL query is parsed and converted into a
StateObjectornullwhen the JPQL query is manually created (i.e. not from a string)
-
getFromClause
Returns the state object representing theFROMclause.- Returns:
- The state object representing the
FROMclause, which is nevernull
-
getGroupByClause
Returns the state object representing theGROUP BYclause.- Returns:
- Either the actual state object representing the
GROUP BYclause ornullif it's not present
-
getHavingClause
Returns the state object representing theHAVINGclause.- Returns:
- Either the actual state object representing the
HAVINGclause ornullif it's not present
-
getSelectClause
Returns the state object representing theSELECTclause.- Returns:
- Either the actual state object representing the
SELECTclause, which is nevernull
-
getWhereClause
Returns the state object representing theWHEREclause.- Returns:
- Either the actual state object representing the
WHEREclause or thenullstate object sincenullis never returned
-
hasGroupByClause
public boolean hasGroupByClause()Returns the state object representing theGROUP BYclause.- Returns:
- Either the actual state object representing the
GROUP BYclause ornullif it's not present
-
hasHavingClause
public boolean hasHavingClause()Returns the state object representing theHAVINGclause.- Returns:
- Either the actual state object representing the
HAVINGclause ornullif it's not present
-
hasWhereClause
public boolean hasWhereClause()Returns the state object representing theWHEREclause.- Returns:
- Either the actual state object representing the
WHEREclause ornullif it's not present
-
identificationVariables
Returns theIdentificationVariableStateObjectsholding onto the identification variables, which are the variables defined in theFROMclause.Example:
Employee e; e is returnedIN (e.employees) AS emps; emps is returnedManager m JOIN m.employees emps; m and emps are returned
- Returns:
- The list of
IdentificationVariableStateObjects
-
initialize
protected void initialize()Description copied from class:AbstractStateObjectInitializes this state object.- Overrides:
initializein classAbstractStateObject
-
isEquivalent
Description copied from interface:StateObjectDetermines whether the givenStateObjectis equivalent to this one, i.e. the information of bothStateObjectis the same.- Specified by:
isEquivalentin interfaceStateObject- Overrides:
isEquivalentin classAbstractStateObject- Parameters:
stateObject- TheStateObjectto compare its content to this one- Returns:
trueif both object are equivalent;falseotherwise
-
parseSelect
Parses the given JPQL fragment and create the select item. For the top-level query, the fragment can contain several select items but for a subquery, it can represent only one.- Parameters:
jpqlFragment- The portion of the query representing one or several select items
-
removeGroupByClause
public void removeGroupByClause()Removes theGROUP BYclause. -
removeHavingClause
public void removeHavingClause()Removes theHAVINGclause. -
removeWhereClause
public void removeWhereClause()Removes theWHEREclause. -
toggleGroupByClause
public void toggleGroupByClause()Either adds or removes the state object representing theGROUP BYclause. -
toggleHavingClause
public void toggleHavingClause()Either adds or removes the state object representing theHAVINGclause. -
toggleWhereClause
public void toggleWhereClause()Either adds or removes the state object representing theWHEREclause. -
toTextInternal
Description copied from class:AbstractStateObjectPrints out a string representation of thisStateObject, which should not be used to define atruestring representation of a JPQL query but should be used for debugging purposes.- Specified by:
toTextInternalin classAbstractStateObject- Parameters:
writer- The writer used to print out the string representation- Throws:
IOException- This should never happens, it is only required becauseAppendableis used instead of any concrete class
-