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
public abstract class AbstractSelectStatementStateObject extends AbstractStateObject
This state object represents the select statement, which has at least aSELECTclause and aFROMclause.- Version:
- 2.5
- See Also:
SelectStatementStateObject,FromClauseStateObject,GroupByClauseStateObject,HavingClauseStateObject,SelectClauseStateObject,WhereClauseStateObject,AbstractSelectStatement- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringGROUP_BY_CLAUSE_PROPERTYNotify the state object representing theGROUP BYclause has changed.static java.lang.StringHAVING_CLAUSE_PROPERTYNotify the state object representing theHAVINGclause has changed.static java.lang.StringWHERE_CLAUSE_PROPERTYNotify the state object representing theWHEREclause has changed.
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractSelectStatementStateObject(StateObject parent)Creates a newAbstractSelectStatementStateObject.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected voidaddChildren(java.util.List<StateObject> children)Adds the children of thisStateObjectto the given list.CollectionMemberDeclarationStateObjectaddCollectionDeclaration()Adds a new collection declaration to theFROMclause.CollectionMemberDeclarationStateObjectaddCollectionDeclaration(java.lang.String collectionValuedPath, java.lang.String identificationVariable)Adds a new collection declaration to theFROMclause.GroupByClauseStateObjectaddGroupByClause()Adds theGROUP BYclause.GroupByClauseStateObjectaddGroupByClause(java.lang.String jpqlFragment)Adds theGROUP BYclause and parses the given JPQL fragment.HavingClauseStateObjectaddHavingClause()Adds theHAVINGclause.HavingClauseStateObjectaddHavingClause(java.lang.String jpqlFragment)Adds theHAVINGclause and parses the given JPQL fragment.IdentificationVariableDeclarationStateObjectaddRangeDeclaration()Adds a new range variable declaration to theFROMclause.IdentificationVariableDeclarationStateObjectaddRangeDeclaration(java.lang.String entityName, java.lang.String identificationVariable)Adds to this select statement a new range variable declaration.IdentificationVariableDeclarationStateObjectaddRangeDeclaration(IEntity entity, java.lang.String identificationVariable)Adds to this select statement a new range variable declaration.WhereClauseStateObjectaddWhereClause()Adds theWHEREclause.WhereClauseStateObjectaddWhereClause(java.lang.String jpqlFragment)Adds theWHEREclause and parses the given JPQL fragment.protected abstract AbstractFromClauseStateObjectbuildFromClause()Creates the state object representing theFROMclause.protected abstract AbstractSelectClauseStateObjectbuildSelectClause()Creates the state object representing theSELECTclause.ListIterable<? extends VariableDeclarationStateObject>declarations()Returns the list ofVariableDeclarationStateObjectdefining the variable declarations, which are mapping an entity to a variable or a collection-valued member to a variable.IdentificationVariableStateObjectfindIdentificationVariable(java.lang.String identificationVariable)Returns theIdentificationVariableStateObjectrepresenting the given identification variable.DeclarationStateObjectgetDeclaration()Returns the declaration clause which defines the domain of the query by declaring identification variables.AbstractSelectStatementgetExpression()Returns the actual parsed object if thisStateObjectrepresentation of the JPQL query was created by parsing an existing JPQL query.AbstractFromClauseStateObjectgetFromClause()Returns the state object representing theFROMclause.GroupByClauseStateObjectgetGroupByClause()Returns the state object representing theGROUP BYclause.HavingClauseStateObjectgetHavingClause()Returns the state object representing theHAVINGclause.AbstractSelectClauseStateObjectgetSelectClause()Returns the state object representing theSELECTclause.WhereClauseStateObjectgetWhereClause()Returns the state object representing theWHEREclause.booleanhasGroupByClause()Returns the state object representing theGROUP BYclause.booleanhasHavingClause()Returns the state object representing theHAVINGclause.booleanhasWhereClause()Returns the state object representing theWHEREclause.java.lang.Iterable<IdentificationVariableStateObject>identificationVariables()Returns theIdentificationVariableStateObjectsholding onto the identification variables, which are the variables defined in theFROMclause.protected voidinitialize()Initializes this state object.booleanisEquivalent(StateObject stateObject)Determines whether the givenStateObjectis equivalent to this one, i.e. the information of bothStateObjectis the same.voidparseSelect(java.lang.String jpqlFragment)Parses the given JPQL fragment and create the select item.voidremoveGroupByClause()Removes theGROUP BYclause.voidremoveHavingClause()Removes theHAVINGclause.voidremoveWhereClause()Removes theWHEREclause.voidtoggleGroupByClause()Either adds or removes the state object representing theGROUP BYclause.voidtoggleHavingClause()Either adds or removes the state object representing theHAVINGclause.voidtoggleWhereClause()Either adds or removes the state object representing theWHEREclause.protected voidtoTextInternal(java.lang.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, toText
-
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.persistence.jpa.jpql.tools.model.query.StateObject
accept
-
-
-
-
Field Detail
-
GROUP_BY_CLAUSE_PROPERTY
public static final java.lang.String GROUP_BY_CLAUSE_PROPERTY
Notify the state object representing theGROUP BYclause has changed.- See Also:
- Constant Field Values
-
HAVING_CLAUSE_PROPERTY
public static final java.lang.String HAVING_CLAUSE_PROPERTY
Notify the state object representing theHAVINGclause has changed.- See Also:
- Constant Field Values
-
WHERE_CLAUSE_PROPERTY
public static final java.lang.String WHERE_CLAUSE_PROPERTY
Notify the state object representing theWHEREclause has changed.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractSelectStatementStateObject
protected AbstractSelectStatementStateObject(StateObject parent)
Creates a newAbstractSelectStatementStateObject.- Parameters:
parent- The parent of this state object, which cannot benull- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
-
Method Detail
-
addChildren
protected void addChildren(java.util.List<StateObject> children)
Adds the children of thisStateObjectto the given list.- Overrides:
addChildrenin classAbstractStateObject- Parameters:
children- The list used to store the children
-
addCollectionDeclaration
public CollectionMemberDeclarationStateObject addCollectionDeclaration()
Adds a new collection declaration to theFROMclause.- Returns:
- The
CollectionMemberDeclarationStateObjectrepresenting the collection declaration
-
addCollectionDeclaration
public CollectionMemberDeclarationStateObject addCollectionDeclaration(java.lang.String collectionValuedPath, java.lang.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
public GroupByClauseStateObject addGroupByClause()
Adds theGROUP BYclause. The clause is not added if it's already present.- Returns:
- The
GroupByClauseStateObject
-
addGroupByClause
public GroupByClauseStateObject addGroupByClause(java.lang.String jpqlFragment)
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
public HavingClauseStateObject addHavingClause()
Adds theHAVINGclause. The clause is not added if it's already present.- Returns:
- The
GroupByClauseStateObject
-
addHavingClause
public HavingClauseStateObject addHavingClause(java.lang.String jpqlFragment)
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
public IdentificationVariableDeclarationStateObject addRangeDeclaration()
Adds a new range variable declaration to theFROMclause.- Returns:
- The
StateObjectrepresenting the new range variable declaration
-
addRangeDeclaration
public IdentificationVariableDeclarationStateObject addRangeDeclaration(IEntity entity, java.lang.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(java.lang.String entityName, java.lang.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
public WhereClauseStateObject addWhereClause()
Adds theWHEREclause. The clause is not added if it's already present.- Returns:
- The
GroupByClauseStateObject
-
addWhereClause
public WhereClauseStateObject addWhereClause(java.lang.String jpqlFragment)
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
protected abstract AbstractFromClauseStateObject buildFromClause()
Creates the state object representing theFROMclause.- Returns:
- A concrete instance of
AbstractFromClauseStateObject
-
buildSelectClause
protected abstract AbstractSelectClauseStateObject buildSelectClause()
Creates the state object representing theSELECTclause.- Returns:
- A concrete instance of
AbstractSelectClauseStateObject
-
declarations
public ListIterable<? extends VariableDeclarationStateObject> 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
public IdentificationVariableStateObject findIdentificationVariable(java.lang.String identificationVariable)
Returns 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
public DeclarationStateObject getDeclaration()
Returns 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
public AbstractSelectStatement getExpression()
Returns 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
public AbstractFromClauseStateObject getFromClause()
Returns the state object representing theFROMclause.- Returns:
- The state object representing the
FROMclause, which is nevernull
-
getGroupByClause
public GroupByClauseStateObject getGroupByClause()
Returns the state object representing theGROUP BYclause.- Returns:
- Either the actual state object representing the
GROUP BYclause ornullif it's not present
-
getHavingClause
public HavingClauseStateObject getHavingClause()
Returns the state object representing theHAVINGclause.- Returns:
- Either the actual state object representing the
HAVINGclause ornullif it's not present
-
getSelectClause
public AbstractSelectClauseStateObject getSelectClause()
Returns the state object representing theSELECTclause.- Returns:
- Either the actual state object representing the
SELECTclause, which is nevernull
-
getWhereClause
public WhereClauseStateObject 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
public java.lang.Iterable<IdentificationVariableStateObject> 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()
Initializes this state object.- Overrides:
initializein classAbstractStateObject
-
isEquivalent
public boolean isEquivalent(StateObject stateObject)
Determines 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
public void parseSelect(java.lang.String jpqlFragment)
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
protected void toTextInternal(java.lang.Appendable writer) throws java.io.IOExceptionPrints 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:
java.io.IOException- This should never happens, it is only required becauseAppendableis used instead of any concrete class
-
-