public class JPQLQueryStateObject extends AbstractStateObject
StateObject hierarchy that represents a JPQL query. The only
child of this state object is one of the three possible query statements.DeleteStatementStateObject,
SelectStatementStateObject,
UpdateStatementStateObject,
JPQLExpression| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
QUERY_STATEMENT_PROPERTY
Notifies the query statement has changed.
|
| Constructor and Description |
|---|
JPQLQueryStateObject(IJPQLQueryBuilder queryBuilder,
IManagedTypeProvider provider)
Creates a new
JPQLQueryStateObject. |
| Modifier and Type | Method and Description |
|---|---|
void |
accept(StateObjectVisitor visitor)
Visits this
StateObject by the given visitor. |
protected void |
addChildren(java.util.List<StateObject> children)
Adds the children of this
StateObject to the given list. |
DeleteStatementStateObject |
addDeleteStatement()
Changes the query statement to be a
DELETE statement. |
SelectStatementStateObject |
addDistinctSelectStatement()
Changes the query statement to be a
SELECT statement. |
SelectStatementStateObject |
addSelectStatement()
Changes the query statement to be a
SELECT statement. |
SelectStatementStateObject |
addSelectStatement(java.lang.String jpqlFragment)
Changes the query statement to be a
SELECT statement. |
UpdateStatementStateObject |
addUpdateStatement()
Changes the query statement to be a
UPDATE statement. |
UpdateStatementStateObject |
addUpdateStatement(java.lang.String jpqlFragment)
Changes the query statement to be a
UPDATE statement. |
protected StateObject |
checkParent(StateObject parent)
Checks whether the given parent is
null or not. |
DeclarationStateObject |
getDeclaration()
Returns the declaration clause which defines the domain of the query by declaring
identification variables.
|
JPQLExpression |
getExpression()
Returns the actual parsed object if this
StateObject representation of the JPQL query
was created by parsing an existing JPQL query. |
JPQLGrammar |
getGrammar()
Returns the grammar that defines how to parse a JPQL query.
|
IManagedTypeProvider |
getManagedTypeProvider()
Returns the provider of managed types.
|
StateObject |
getParent()
Returns the parent of this
StateObject. |
IJPQLQueryBuilder |
getQueryBuilder()
Returns the
IJPQLQueryBuilder that is responsible to create various part of the StateObject hierarchy. |
StateObject |
getQueryStatement()
Returns the only child of this state object, which represents one of the three query statement.
|
JPQLQueryStateObject |
getRoot()
Returns the root of the
StateObject hierarchy. |
boolean |
hasQueryStatement()
Determines whether a query statement has been defined.
|
protected void |
initialize(IJPQLQueryBuilder queryBuilder,
IManagedTypeProvider provider)
Initializes this
JPQLQueryStateObject. |
boolean |
isEquivalent(StateObject stateObject)
Determines whether the given
StateObject is equivalent to this one, i.e. the
information of both StateObject is the same. |
void |
parse(java.lang.CharSequence jpqlFragment,
java.lang.String queryBNFId)
Parses the given JPQL fragment as this state object's query statement.
|
void |
setExpression(JPQLExpression expression)
Keeps a reference of the
parsed object object, which should only be
done when this object is instantiated during the conversion of a parsed JPQL query into
StateObjects. |
void |
setQueryStatement(StateObject queryStatement)
Sets the only child of this state object, which represents one of the three query statement.
|
protected void |
toTextInternal(java.lang.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. |
acceptUnknownVisitor, acceptUnknownVisitor, addProblems, addPropertyChangeListener, areEquivalent, buildProblem, buildProblem, buildStateObject, buildStateObjects, children, decorate, equals, findIdentificationVariable, firePropertyChanged, getChangeSupport, getDecorator, getType, getType, getTypeHelper, getTypeRepository, hashCode, initialize, isDecorated, parent, parent, parent, removePropertyChangeListener, setExpression, setParent, toString, toString, toStringInternal, toStringItems, toTextpublic static final java.lang.String QUERY_STATEMENT_PROPERTY
public JPQLQueryStateObject(IJPQLQueryBuilder queryBuilder, IManagedTypeProvider provider)
JPQLQueryStateObject.queryBuilder - The builder that can create any StateObject for any given JPQL
fragment when using a parse methodprovider - The external form of a provider that gives access to the JPA metadatajava.lang.NullPointerException - If one of the given arguments is nullpublic void accept(StateObjectVisitor visitor)
StateObject by the given visitor.visitor - The visitor to visit this objectprotected void addChildren(java.util.List<StateObject> children)
StateObject to the given list.addChildren in class AbstractStateObjectchildren - The list used to store the childrenpublic DeleteStatementStateObject addDeleteStatement()
DELETE statement.DELETE statementpublic SelectStatementStateObject addDistinctSelectStatement()
SELECT statement. The SELECT
clause will have the DISTINCT identifier set.SELECT statementpublic SelectStatementStateObject addSelectStatement()
SELECT statement.SELECT statementpublic SelectStatementStateObject addSelectStatement(java.lang.String jpqlFragment)
SELECT statement.jpqlFragment - The portion of the query representing the select items, excluding the
SELECT identifierSELECT statementpublic UpdateStatementStateObject addUpdateStatement()
UPDATE statement.UPDTE statementpublic UpdateStatementStateObject addUpdateStatement(java.lang.String jpqlFragment)
UPDATE statement.jpqlFragment - The portion of the query representing the select items, excluding the
UPDATE identifierUPDATE statementprotected StateObject checkParent(StateObject parent)
null or not. If it's null then
throw a NullPointerException.checkParent in class AbstractStateObjectparent - The parent of this state objectpublic DeclarationStateObject getDeclaration()
getDeclaration in interface StateObjectgetDeclaration in class AbstractStateObjectStateObject 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 subquerypublic JPQLExpression getExpression()
StateObject representation of the JPQL query
was created by parsing an existing JPQL query.getExpression in interface StateObjectgetExpression in class AbstractStateObjectStateObject
or null when the JPQL query is manually created (i.e. not from a string)public JPQLGrammar getGrammar()
getGrammar in interface StateObjectgetGrammar in class AbstractStateObjectpublic IManagedTypeProvider getManagedTypeProvider()
getManagedTypeProvider in interface StateObjectgetManagedTypeProvider in class AbstractStateObjectpublic StateObject getParent()
StateObject.getParent in interface StateObjectgetParent in class AbstractStateObjectStateObject, which is null only when
this is the root of the hierarchypublic IJPQLQueryBuilder getQueryBuilder()
IJPQLQueryBuilder that is responsible to create various part of the StateObject hierarchy.getQueryBuilder in interface StateObjectgetQueryBuilder in class AbstractStateObjectStateObject from a JPQL query or that gives
access to various sub-builderspublic StateObject getQueryStatement()
public JPQLQueryStateObject getRoot()
StateObject hierarchy.getRoot in interface StateObjectgetRoot in class AbstractStateObjectpublic boolean hasQueryStatement()
true if there is a query statement defined; false otherwiseprotected void initialize(IJPQLQueryBuilder queryBuilder, IManagedTypeProvider provider)
JPQLQueryStateObject.queryBuilder - The builder that can create any StateObject for any given JPQL fragmentprovider - The external form that gives access to the JPA metadatajava.lang.NullPointerException - If one of the given arguments is nullpublic boolean isEquivalent(StateObject stateObject)
StateObject is equivalent to this one, i.e. the
information of both StateObject is the same.isEquivalent in interface StateObjectisEquivalent in class AbstractStateObjectstateObject - The StateObject to compare its content to this onetrue if both object are equivalent; false otherwisepublic void parse(java.lang.CharSequence jpqlFragment,
java.lang.String queryBNFId)
jpqlFragment - The portion of the query to parsequeryBNFId - The unique identifier of the BNF that determines how to parse the fragmentpublic void setExpression(JPQLExpression expression)
parsed object object, which should only be
done when this object is instantiated during the conversion of a parsed JPQL query into
StateObjects.expression - The parsed object representing the JPQL querypublic void setQueryStatement(StateObject queryStatement)
queryStatement - The state object representing the query statement, which was created
based on the query typeprotected void toTextInternal(java.lang.Appendable writer)
throws java.io.IOException
StateObject, which should not be used to
define a true string representation of a JPQL query but should be used for
debugging purposes.toTextInternal in class AbstractStateObjectwriter - The writer used to print out the string representationjava.io.IOException - This should never happens, it is only required because Appendable
is used instead of any concrete class