Class SelectStatementStateObject
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractSelectStatementStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.SelectStatementStateObject
-
- All Implemented Interfaces:
StateObject
public class SelectStatementStateObject extends AbstractSelectStatementStateObject
This state object represents a select statement, which has at least aSELECTclause and aFROMclause. The other clauses are optional.BNF: select_statement ::= select_clause from_clause [where_clause] [groupby_clause] [having_clause] [orderby_clause]- Version:
- 2.4
- See Also:
FromClauseStateObject,GroupByClauseStateObject,HavingClauseStateObject,OrderByClauseStateObject,SelectClauseStateObject,WhereClauseStateObject,SelectStatement- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringORDER_BY_CLAUSE_PROPERTYNotify the state object representing theORDER BYclause has changed.-
Fields inherited from class org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractSelectStatementStateObject
GROUP_BY_CLAUSE_PROPERTY, HAVING_CLAUSE_PROPERTY, WHERE_CLAUSE_PROPERTY
-
-
Constructor Summary
Constructors Constructor Description SelectStatementStateObject(JPQLQueryStateObject parent)Creates a newSelectStatementStateObject.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaccept(StateObjectVisitor visitor)Visits thisStateObjectby the givenvisitor.protected voidaddChildren(java.util.List<StateObject> children)Adds the children of thisStateObjectto the given list.OrderByClauseStateObjectaddOrderByClause()Adds theORDER BYclause.OrderByClauseStateObjectaddOrderByClause(java.lang.String jpqlFragment)Adds theORDER BYclause and parses the given JPQL fragment, which should represent one or many ordering items.StateObjectaddSelectItem(java.lang.String path)Adds the given path as a select item, which can either be an identification variable or a state-field path expression.ResultVariableStateObjectaddSelectItem(java.lang.String jpqlFragment, java.lang.String resultVariable)Adds the given expression as a select item.voidaddSelectItem(StateObject stateObject)Adds the givenStateObjectas a select item.ResultVariableStateObjectaddSelectItem(StateObject stateObject, java.lang.String resultVariable)Adds the givenStateObjectas a select item.ResultVariableStateObjectaddSelectItemAs(java.lang.String jpqlFragment, java.lang.String resultVariable)Adds the given expression as a select item.ResultVariableStateObjectaddSelectItemAs(StateObject stateObject, java.lang.String resultVariable)Adds the givenStateObjectas a select item.protected AbstractFromClauseStateObjectbuildFromClause()Creates the state object representing theFROMclause.protected AbstractSelectClauseStateObjectbuildSelectClause()Creates the state object representing theSELECTclause.SelectStatementgetExpression()Returns the actual parsed object if thisStateObjectrepresentation of the JPQL query was created by parsing an existing JPQL query.FromClauseStateObjectgetFromClause()Returns the state object representing theFROMclause.OrderByClauseStateObjectgetOrderByClause()Returns the state object representing theORDER BYclause.JPQLQueryStateObjectgetParent()Returns the parent of thisStateObject.ISelectExpressionStateObjectBuildergetSelectBuilder()Creates and returns a newISelectExpressionStateObjectBuilderthat can be used to programmatically create a single select expression and once the expression is complete,ISelectExpressionStateObjectBuilder.commit()will push theStateObjectrepresentation of that expression as this clause's select expression.SelectClauseStateObjectgetSelectClause()Returns the state object representing theSELECTclause.booleanhasOrderByClause()Returns the state object representing theORDER BYclause.booleanisEquivalent(StateObject stateObject)Determines whether the givenStateObjectis equivalent to this one, i.e. the information of bothStateObjectis the same.voidremoveOrderByClause()Removes theORDER BYclause.voidsetExpression(SelectStatement expression)Keeps a reference of theparsed objectobject, which should only be done when this object is instantiated during the conversion of a parsed JPQL query intoStateObjects.voidtoggleOrderByClause()Either adds or removes theORDER BYclause.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.AbstractSelectStatementStateObject
addCollectionDeclaration, addCollectionDeclaration, addGroupByClause, addGroupByClause, addHavingClause, addHavingClause, addRangeDeclaration, addRangeDeclaration, addRangeDeclaration, addWhereClause, addWhereClause, declarations, findIdentificationVariable, getDeclaration, getGroupByClause, getHavingClause, getWhereClause, hasGroupByClause, hasHavingClause, hasWhereClause, identificationVariables, initialize, parseSelect, removeGroupByClause, removeHavingClause, removeWhereClause, toggleGroupByClause, toggleHavingClause, toggleWhereClause
-
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, getQueryBuilder, getRoot, getType, getType, getTypeHelper, getTypeRepository, hashCode, isDecorated, parent, parent, parent, removePropertyChangeListener, setExpression, setParent, toString, toString, toStringInternal, toStringItems, toText
-
-
-
-
Field Detail
-
ORDER_BY_CLAUSE_PROPERTY
public static final java.lang.String ORDER_BY_CLAUSE_PROPERTY
Notify the state object representing theORDER BYclause has changed.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SelectStatementStateObject
public SelectStatementStateObject(JPQLQueryStateObject parent)
Creates a newSelectStatementStateObject.- Parameters:
parent- The parent of this state object, which cannot benull- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
-
Method Detail
-
accept
public void accept(StateObjectVisitor visitor)
Visits thisStateObjectby the givenvisitor.- Parameters:
visitor- Thevisitorto visit this object
-
addChildren
protected void addChildren(java.util.List<StateObject> children)
Adds the children of thisStateObjectto the given list.- Overrides:
addChildrenin classAbstractSelectStatementStateObject- Parameters:
children- The list used to store the children
-
addOrderByClause
public OrderByClauseStateObject addOrderByClause()
Adds theORDER BYclause. The clause is not added if it's already present.- Returns:
- The state object representing the
ORDER BYclause
-
addOrderByClause
public OrderByClauseStateObject addOrderByClause(java.lang.String jpqlFragment)
Adds theORDER BYclause and parses the given JPQL fragment, which should represent one or many ordering items. The clause is not added if it's already present.- Parameters:
jpqlFragment- The fragment of the JPQL to parse that represents the ordering items, the fragment cannot start withORDER BY- Returns:
- The
OrderByClauseStateObject
-
addSelectItem
public void addSelectItem(StateObject stateObject)
Adds the givenStateObjectas a select item.- Parameters:
stateObject- TheStateObjectrepresenting a select expression
-
addSelectItem
public ResultVariableStateObject addSelectItem(StateObject stateObject, java.lang.String resultVariable)
Adds the givenStateObjectas a select item.- Parameters:
stateObject- TheStateObjectrepresenting the select expressionresultVariable- The result variable identifying the select expression- Returns:
- The newly created
ResultVariableStateObject
-
addSelectItem
public StateObject addSelectItem(java.lang.String path)
Adds the given path as a select item, which can either be an identification variable or a state-field path expression.- Parameters:
path- The select expression to parse as a select item- Returns:
- The
StateObjectencapsulating the given path
-
addSelectItem
public ResultVariableStateObject addSelectItem(java.lang.String jpqlFragment, java.lang.String resultVariable)
Adds the given expression as a select item.- Parameters:
jpqlFragment- The select expression to parse as a select itemresultVariable- The result variable identifying the select expression- Returns:
- The newly created
ResultVariableStateObject
-
addSelectItemAs
public ResultVariableStateObject addSelectItemAs(StateObject stateObject, java.lang.String resultVariable)
Adds the givenStateObjectas a select item.- Parameters:
stateObject- TheStateObjectrepresenting the select expressionresultVariable- The result variable identifying the select expression- Returns:
- The newly created
ResultVariableStateObject
-
addSelectItemAs
public ResultVariableStateObject addSelectItemAs(java.lang.String jpqlFragment, java.lang.String resultVariable)
Adds the given expression as a select item.- Parameters:
jpqlFragment- The portion of a JPQL query that represents a select expressionresultVariable- The result variable identifying the select expression- Returns:
- The newly created
ResultVariableStateObject
-
buildFromClause
protected AbstractFromClauseStateObject buildFromClause()
Creates the state object representing theFROMclause.- Specified by:
buildFromClausein classAbstractSelectStatementStateObject- Returns:
- A concrete instance of
AbstractFromClauseStateObject
-
buildSelectClause
protected AbstractSelectClauseStateObject buildSelectClause()
Creates the state object representing theSELECTclause.- Specified by:
buildSelectClausein classAbstractSelectStatementStateObject- Returns:
- A concrete instance of
AbstractSelectClauseStateObject
-
getExpression
public SelectStatement 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 classAbstractSelectStatementStateObject- 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 FromClauseStateObject getFromClause()
Returns the state object representing theFROMclause.- Overrides:
getFromClausein classAbstractSelectStatementStateObject- Returns:
- The state object representing the
FROMclause, which is nevernull
-
getOrderByClause
public OrderByClauseStateObject getOrderByClause()
Returns the state object representing theORDER BYclause.- Returns:
- Either the actual state object representing the
ORDER BYclause ornullif it's not present
-
getParent
public JPQLQueryStateObject getParent()
Returns the parent of thisStateObject.- Specified by:
getParentin interfaceStateObject- Overrides:
getParentin classAbstractStateObject- Returns:
- Returns the parent of this
StateObject, which isnullonly when this is the root of the hierarchy
-
getSelectBuilder
public ISelectExpressionStateObjectBuilder getSelectBuilder()
Creates and returns a newISelectExpressionStateObjectBuilderthat can be used to programmatically create a single select expression and once the expression is complete,ISelectExpressionStateObjectBuilder.commit()will push theStateObjectrepresentation of that expression as this clause's select expression.- Returns:
- A new builder that can be used to quickly create a select expression
-
getSelectClause
public SelectClauseStateObject getSelectClause()
Returns the state object representing theSELECTclause.- Overrides:
getSelectClausein classAbstractSelectStatementStateObject- Returns:
- Either the actual state object representing the
SELECTclause, which is nevernull
-
hasOrderByClause
public boolean hasOrderByClause()
Returns the state object representing theORDER BYclause.- Returns:
trueif theORDER BYclause is present;falseotherwise
-
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 classAbstractSelectStatementStateObject- Parameters:
stateObject- TheStateObjectto compare its content to this one- Returns:
trueif both object are equivalent;falseotherwise
-
removeOrderByClause
public void removeOrderByClause()
Removes theORDER BYclause.
-
setExpression
public void setExpression(SelectStatement expression)
Keeps a reference of theparsed objectobject, which should only be done when this object is instantiated during the conversion of a parsed JPQL query intoStateObjects.- Parameters:
expression- Theparsed objectrepresenting aSELECTstatement
-
toggleOrderByClause
public void toggleOrderByClause()
Either adds or removes theORDER BYclause.
-
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.- Overrides:
toTextInternalin classAbstractSelectStatementStateObject- 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
-
-