Class AbstractRangeVariableDeclarationStateObject
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractRangeVariableDeclarationStateObject
-
- All Implemented Interfaces:
StateObject,VariableDeclarationStateObject
- Direct Known Subclasses:
DerivedPathVariableDeclarationStateObject,RangeVariableDeclarationStateObject
public abstract class AbstractRangeVariableDeclarationStateObject extends AbstractStateObject implements VariableDeclarationStateObject
- Version:
- 2.5
- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringAS_PROPERTYNotifies the visibility of theASidentifier has changed.static java.lang.StringIDENTIFICATION_VARIABLE_PROPERTYNotifies the identification variable property has changed.
-
Constructor Summary
Constructors Constructor Description AbstractRangeVariableDeclarationStateObject(AbstractIdentificationVariableDeclarationStateObject parent)Creates a newRangeVariableDeclarationStateObject.AbstractRangeVariableDeclarationStateObject(AbstractIdentificationVariableDeclarationStateObject parent, java.lang.String root)Creates a newRangeVariableDeclarationStateObject.AbstractRangeVariableDeclarationStateObject(AbstractModifyClauseStateObject parent)Creates a newAbstractRangeVariableDeclarationStateObject.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description AbstractRangeVariableDeclarationStateObjectaddAs()Makes sure theASidentifier is specified.protected voidaddChildren(java.util.List<StateObject> children)Adds the children of thisStateObjectto the given list.protected voidaddProblems(java.util.List<Problem> problems)Adds to the given list the problems that were found with the current state of thisStateObject, which means there are validation issues.protected abstract StateObjectbuildRootStateObject()RangeVariableDeclarationgetExpression()Returns the actual parsed object if thisStateObjectrepresentation of the JPQL query was created by parsing an existing JPQL query.java.lang.StringgetIdentificationVariable()Returns the identification variable name that is ranging over the abstract schema type.IdentificationVariableStateObjectgetIdentificationVariableStateObject()Returns theIdentificationVariableStateObjectholding onto the identification variable.abstract java.lang.StringgetRootPath()Returns the "root" object for objects which may not be reachable by navigation.StateObjectgetRootStateObject()Returns theStateObjectholding onto the abstract schema name.booleanhasAs()Determines whether theASidentifier is used or not.booleanhasIdentificationVariable()Determines whether an identification variable was defined.ListIterable<IdentificationVariableStateObject>identificationVariables()Returns theIdentificationVariableStateObjectthat are used by this state object.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.booleanisIdentificationVariableOptional()Determines whether the identification variable is optional or not.booleanisIdentificationVariableVirtual()Determines whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability.voidsetAs(boolean as)Sets whether theASidentifier is used or not.voidsetExpression(RangeVariableDeclaration 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.voidsetIdentificationVariable(java.lang.String identificationVariable)Sets the new identification variable that will range over the "root" object.protected voidsetIdentificationVariableOptional(boolean identificationVariableOptional)Sets whether the identification variable is optional or not.abstract voidsetRootPath(java.lang.String root)Sets the "root" object for objects which may not be reachable by navigation.voidtoggleAs()Toggles the usage of theASidentifier.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, addPropertyChangeListener, areEquivalent, buildProblem, buildProblem, buildStateObject, buildStateObjects, checkParent, children, decorate, equals, findIdentificationVariable, firePropertyChanged, getChangeSupport, getDeclaration, 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, addPropertyChangeListener, children, decorate, findIdentificationVariable, getDeclaration, getDecorator, getGrammar, getManagedTypeProvider, getParent, getQueryBuilder, getRoot, isDecorated, removePropertyChangeListener, setParent, toString, toText
-
Methods inherited from interface org.eclipse.persistence.jpa.jpql.tools.model.query.VariableDeclarationStateObject
getManagedType
-
-
-
-
Field Detail
-
AS_PROPERTY
public static final java.lang.String AS_PROPERTY
Notifies the visibility of theASidentifier has changed.- See Also:
- Constant Field Values
-
IDENTIFICATION_VARIABLE_PROPERTY
public static final java.lang.String IDENTIFICATION_VARIABLE_PROPERTY
Notifies the identification variable property has changed.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractRangeVariableDeclarationStateObject
public AbstractRangeVariableDeclarationStateObject(AbstractIdentificationVariableDeclarationStateObject parent)
Creates a newRangeVariableDeclarationStateObject.- Parameters:
parent- The parent of this state object, which cannot benull- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
AbstractRangeVariableDeclarationStateObject
public AbstractRangeVariableDeclarationStateObject(AbstractIdentificationVariableDeclarationStateObject parent, java.lang.String root)
Creates a newRangeVariableDeclarationStateObject.- Parameters:
parent- The parent of this state object, which cannot benull- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
AbstractRangeVariableDeclarationStateObject
public AbstractRangeVariableDeclarationStateObject(AbstractModifyClauseStateObject parent)
Creates a newAbstractRangeVariableDeclarationStateObject.- Parameters:
parent- The parent of this state object, which cannot benull- Throws:
java.lang.NullPointerException- The given parent cannot benull
-
-
Method Detail
-
addAs
public AbstractRangeVariableDeclarationStateObject addAs()
Makes sure theASidentifier is specified.- Returns:
- This object
-
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
-
addProblems
protected void addProblems(java.util.List<Problem> problems)
Adds to the given list the problems that were found with the current state of thisStateObject, which means there are validation issues.- Overrides:
addProblemsin classAbstractStateObject- Parameters:
problems- The list to which the problems are added
-
buildRootStateObject
protected abstract StateObject buildRootStateObject()
-
getExpression
public RangeVariableDeclaration 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)
-
getIdentificationVariable
public java.lang.String getIdentificationVariable()
Returns the identification variable name that is ranging over the abstract schema type.- Returns:
- The identification variable name
-
getIdentificationVariableStateObject
public IdentificationVariableStateObject getIdentificationVariableStateObject()
Returns theIdentificationVariableStateObjectholding onto the identification variable.- Returns:
- The
IdentificationVariableStateObject, which is nevernull
-
getRootPath
public abstract java.lang.String getRootPath()
Returns the "root" object for objects which may not be reachable by navigation.- Returns:
- The "root" object
-
getRootStateObject
public StateObject getRootStateObject()
Returns theStateObjectholding onto the abstract schema name.- Returns:
- The
StateObject, which is nevernull
-
hasAs
public boolean hasAs()
Determines whether theASidentifier is used or not.- Returns:
trueif theASidentifier is part of the expression;falseotherwise
-
hasIdentificationVariable
public boolean hasIdentificationVariable()
Determines whether an identification variable was defined.- Returns:
trueif an identification variable is defined;falseotherwise
-
identificationVariables
public ListIterable<IdentificationVariableStateObject> identificationVariables()
Returns theIdentificationVariableStateObjectthat are used by this state object. It is possible more than one declaration exists, like a range variable declaration has also joins and join fetches.- Specified by:
identificationVariablesin interfaceVariableDeclarationStateObject- Returns:
- The list of
IdentificationVariableStateObject
-
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
-
isIdentificationVariableOptional
public boolean isIdentificationVariableOptional()
Determines whether the identification variable is optional or not. The only time it is optional is when this model is used in a modify clause (DELETEorUPDATE).- Returns:
trueif an identification variable is not required;falseif it is required
-
isIdentificationVariableVirtual
public boolean isIdentificationVariableVirtual()
Determines whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability.- Returns:
trueif this identification variable was virtually created to fully qualify path expression;falseif it was parsed
-
setAs
public void setAs(boolean as)
Sets whether theASidentifier is used or not.- Parameters:
as-trueif theASidentifier is part of the expression;falseotherwise
-
setExpression
public void setExpression(RangeVariableDeclaration 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 a range variable declaration
-
setIdentificationVariable
public void setIdentificationVariable(java.lang.String identificationVariable)
Sets the new identification variable that will range over the "root" object.- Parameters:
identificationVariable- The new identification variable
-
setIdentificationVariableOptional
protected void setIdentificationVariableOptional(boolean identificationVariableOptional)
Sets whether the identification variable is optional or not. The only time it is optional is when this model is used in a modify clause (DELETEorUPDATE).- Parameters:
identificationVariableOptional-trueif an identification variable is not required;falseif it is required
-
setRootPath
public abstract void setRootPath(java.lang.String root)
Sets the "root" object for objects which may not be reachable by navigation.- Parameters:
root- The "root" object
-
toggleAs
public void toggleAs()
Toggles the usage of theASidentifier.
-
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
-
-