Class IdentificationVariableStateObject
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.SimpleStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.IdentificationVariableStateObject
-
- All Implemented Interfaces:
StateObject
public class IdentificationVariableStateObject extends SimpleStateObject
This state object represents a single identification variable, which is identifying TODO.- Version:
- 2.4
- See Also:
IdentificationVariable
- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
DEFINED_PROPERTY
Notify a change in the defined property.-
Fields inherited from class org.eclipse.persistence.jpa.jpql.tools.model.query.SimpleStateObject
TEXT_PROPERTY
-
-
Constructor Summary
Constructors Constructor Description IdentificationVariableStateObject(StateObject parent)
Creates a newIdentificationVariableStateObject
.IdentificationVariableStateObject(StateObject parent, java.lang.String variable)
Creates a newIdentificationVariableStateObject
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accept(StateObjectVisitor visitor)
Visits thisStateObject
by the givenvisitor
.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.protected void
checkIntegrity(java.lang.String text)
Makes sure the current identification variable and the given one are the same.protected void
clearResolvedObjects()
Clears the values related to the managed type and type.IdentificationVariable
getExpression()
Returns the actual parsed object if thisStateObject
representation of the JPQL query was created by parsing an existing JPQL query.IManagedType
getManagedType()
Returns theIManagedType
associated with the field handled by this object.IMapping
getMapping()
ReturnsIType
getType()
Returns theIType
of the field handled by this object.ITypeDeclaration
getTypeDeclaration()
Returns theITypeDeclaration
of the field handled by this object.boolean
isEquivalent(StateObject stateObject)
Determines whether the givenStateObject
is equivalent to this one, i.e. the information of bothStateObject
is the same.boolean
isVirtual()
Determines whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability.protected IManagedType
resolveManagedType()
Retrieves theIManagedType
that is mapped to the identification variable, if and only if the identification variable is used to declare an entity.protected IMapping
resolveMapping()
Resolvesprotected IType
resolveType()
Resolves theIType
of the property handled by this object.protected ITypeDeclaration
resolveTypeDeclaration()
Resolves theITypeDeclaration
of the property handled by this object.void
setExpression(IdentificationVariable expression)
Keeps a reference of theparsed object
object, which should only be done when this object is instantiated during the conversion of a parsed JPQL query intoStateObjects
.void
setText(java.lang.String text)
Sets the text held by this state object.void
setVirtual(boolean virtual)
Sets whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability.protected void
toTextInternal(java.lang.Appendable writer)
Prints out a string representation of thisStateObject
, which should not be used to define atrue
string representation of a JPQL query but should be used for debugging purposes.-
Methods inherited from class org.eclipse.persistence.jpa.jpql.tools.model.query.SimpleStateObject
getText, hasText, setTextInternally
-
Methods inherited from class org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
acceptUnknownVisitor, acceptUnknownVisitor, addChildren, 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, initialize, isDecorated, parent, parent, parent, removePropertyChangeListener, setExpression, setParent, toString, toString, toStringInternal, toStringItems, toText
-
-
-
-
Field Detail
-
DEFINED_PROPERTY
public static final java.lang.String DEFINED_PROPERTY
Notify a change in the defined property.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
IdentificationVariableStateObject
public IdentificationVariableStateObject(StateObject parent)
Creates a newIdentificationVariableStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
- Throws:
java.lang.NullPointerException
- The given parent cannot benull
-
IdentificationVariableStateObject
public IdentificationVariableStateObject(StateObject parent, java.lang.String variable)
Creates a newIdentificationVariableStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
variable
- The name of the identification variable- Throws:
java.lang.NullPointerException
- The given parent cannot benull
-
-
Method Detail
-
accept
public void accept(StateObjectVisitor visitor)
Visits thisStateObject
by the givenvisitor
.- Parameters:
visitor
- Thevisitor
to visit this object
-
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:
addProblems
in classAbstractStateObject
- Parameters:
problems
- The list to which the problems are added
-
checkIntegrity
protected void checkIntegrity(java.lang.String text)
Makes sure the current identification variable and the given one are the same. If they are not, then clears the cached values related to the type.- Parameters:
text
- The new identification variable
-
clearResolvedObjects
protected void clearResolvedObjects()
Clears the values related to the managed type and type.
-
getExpression
public IdentificationVariable getExpression()
Returns the actual parsed object if thisStateObject
representation of the JPQL query was created by parsing an existing JPQL query.- Specified by:
getExpression
in interfaceStateObject
- Overrides:
getExpression
in classAbstractStateObject
- Returns:
- The parsed object when a JPQL query is parsed and converted into a
StateObject
ornull
when the JPQL query is manually created (i.e. not from a string)
-
getManagedType
public IManagedType getManagedType()
Returns theIManagedType
associated with the field handled by this object. If this object does not handle a field that has aIManagedType
, thennull
should be returned.For example: "
SELECT e FROM Employee e
", the object for e would be returning theIManagedType
for Employee.- Returns:
- Either the
IManagedType
, if it could be resolved;null
otherwise
-
getMapping
public IMapping getMapping()
Returns- Returns:
-
getType
public IType getType()
Returns theIType
of the field handled by this object.- Returns:
- Either the
IType
that was resolved by this state object or theIType
forIType.UNRESOLVABLE_TYPE
if it could not be resolved
-
getTypeDeclaration
public ITypeDeclaration getTypeDeclaration()
Returns theITypeDeclaration
of the field handled by this object.- Returns:
- Either the
ITypeDeclaration
that was resolved by this object or theITypeDeclaration
forIType.UNRESOLVABLE_TYPE
if it could not be resolved
-
isEquivalent
public boolean isEquivalent(StateObject stateObject)
Determines whether the givenStateObject
is equivalent to this one, i.e. the information of bothStateObject
is the same.- Specified by:
isEquivalent
in interfaceStateObject
- Overrides:
isEquivalent
in classSimpleStateObject
- Parameters:
stateObject
- TheStateObject
to compare its content to this one- Returns:
true
if both object are equivalent;false
otherwise
-
isVirtual
public boolean isVirtual()
Determines whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability.- Returns:
true
if this identification variable was virtually created to fully qualify path expression;false
if it was parsed
-
resolveManagedType
protected IManagedType resolveManagedType()
Retrieves theIManagedType
that is mapped to the identification variable, if and only if the identification variable is used to declare an entity.- Returns:
- Either the
IManagedType
declared by the identification variable ornull
if it could not be resolved
-
resolveMapping
protected IMapping resolveMapping()
Resolves- Returns:
-
resolveType
protected IType resolveType()
Resolves theIType
of the property handled by this object.- Returns:
- Either the
IType
that was resolved by this object or theIType
forIType.UNRESOLVABLE_TYPE
if it could not be resolved
-
resolveTypeDeclaration
protected ITypeDeclaration resolveTypeDeclaration()
Resolves theITypeDeclaration
of the property handled by this object.- Returns:
- Either the
ITypeDeclaration
that was resolved by this object or theITypeDeclaration
forIType.UNRESOLVABLE_TYPE
if it could not be resolved
-
setExpression
public void setExpression(IdentificationVariable expression)
Keeps a reference of theparsed object
object, which should only be done when this object is instantiated during the conversion of a parsed JPQL query intoStateObjects
.- Parameters:
expression
- Theparsed object
representing an identification variable
-
setText
public void setText(java.lang.String text)
Sets the text held by this state object.- Overrides:
setText
in classSimpleStateObject
- Parameters:
text
- This model's text value
-
setVirtual
public void setVirtual(boolean virtual)
Sets whether this identification variable is virtual, meaning it's not part of the query but is required for proper navigability.- Parameters:
virtual
-true
if this identification variable was virtually created to fully qualify path expression;false
if it was parsed
-
toTextInternal
protected void toTextInternal(java.lang.Appendable writer) throws java.io.IOException
Prints out a string representation of thisStateObject
, which should not be used to define atrue
string representation of a JPQL query but should be used for debugging purposes.- Overrides:
toTextInternal
in classSimpleStateObject
- Parameters:
writer
- The writer used to print out the string representation- Throws:
java.io.IOException
- This should never happens, it is only required becauseAppendable
is used instead of any concrete class
-
-