Class AbstractPathExpressionStateObject
java.lang.Object
org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractPathExpressionStateObject
- All Implemented Interfaces:
ListHolderStateObject<String>
,StateObject
- Direct Known Subclasses:
CollectionValuedPathExpressionStateObject
,StateFieldPathExpressionStateObject
public abstract class AbstractPathExpressionStateObject
extends AbstractStateObject
implements ListHolderStateObject<String>
An identification variable followed by the navigation operator (.) and a state field or
association field is a path expression. The type of the path expression is the type computed as
the result of navigation; that is, the type of the state field or association field to which the
expression navigates.
- Since:
- 2.4
- Version:
- 2.5
- See Also:
-
Field Summary
-
Constructor Summary
ModifierConstructorDescriptionprotected
Creates a newAbstractPathExpressionStateObject
.protected
AbstractPathExpressionStateObject
(StateObject parent, String path) Creates a newAbstractPathExpressionStateObject
. -
Method Summary
Modifier and TypeMethodDescriptionprotected void
addChildren
(List<StateObject> children) Adds the children of thisStateObject
to the given list.<S extends String>
SaddItem
(S item) Adds the givenStateObject
as a child of this one.void
Adds the given list ofStateObjects
as children of this one.void
addListChangeListener
(String listName, IListChangeListener<String> listener) Registers the givenIListChangeListener
for the specified list.void
Appends the given sequence of characters to the path expression.boolean
canMoveDown
(String item) Determines whether the givenStateObject
can be moved down by one position in the list owned by its parent.boolean
Determines whether the givenStateObject
can be moved up by one position in the list owned by its parent.protected void
Clears the values related to the managed type and type.Returns the actual parsed object if thisStateObject
representation of the JPQL query was created by parsing an existing JPQL query.Returns theStateObject
representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.getItem
(int index) Returns theStateObject
at the given positions from the listReturnsReturnsgetMapping
(int index) Retrieves theIMapping
for the path at the given position.getPath()
Returns the string representation of the path expression.getType()
Returns theIType
of the field handled by this object.Returns theITypeDeclaration
of the field handled by this object.boolean
Determines whether the identification variable is present.boolean
hasItems()
Determines whether thisStateObject
has any children.protected void
Initializes this state object.boolean
isEquivalent
(StateObject stateObject) Determines whether the givenStateObject
is equivalent to this one, i.e.items()
Returns anListIterable
over the children.int
Returns the number of children this list holder has.Moves the givenStateObject
down by one position in the list owned by its parent.Moves the givenStateObject
up by one position in the list owned by its parent.void
removeItem
(int index) Removes the single path at the given index.void
removeItem
(String item) Removes the givenStateObject
from the list of children.void
removeItems
(Collection<String> items) Removes the givenStateObject
from the list of children.void
removeListChangeListener
(String listName, IListChangeListener<String> listener) Unregisters the givenIListChangeListener
that was registered for the specified list.protected abstract IManagedType
Resolvesprotected void
Resolves theIMapping
objects that constitutes the path expression.protected abstract IType
Resolves theIType
of the property handled by this object.protected ITypeDeclaration
Resolves theITypeDeclaration
of the property handled by this object.void
setIdentificationVariable
(StateObject identificationVariable) Sets theStateObject
representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.protected void
setIdentificationVariableInternally
(StateObject identificationVariable) Sets theStateObject
representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.void
Replaces the existing path segment to become the given one.void
setPath
(CharSequence path) Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.void
Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.void
Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.void
setPaths
(ListIterator<String> paths) Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.protected void
toTextInternal
(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.AbstractStateObject
acceptUnknownVisitor, acceptUnknownVisitor, addProblems, 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
-
Field Details
-
IDENTIFICATION_VARIABLE_PROPERTY
Notifies the identification variable property has changed.- See Also:
-
PATHS_LIST
Notifies the content of the paths list has changed.- See Also:
-
-
Constructor Details
-
AbstractPathExpressionStateObject
Creates a newAbstractPathExpressionStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
- Throws:
NullPointerException
- The given parent cannot benull
-
AbstractPathExpressionStateObject
Creates a newAbstractPathExpressionStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
path
- The path expression- Throws:
NullPointerException
- The given parent cannot benull
-
-
Method Details
-
addChildren
Description copied from class:AbstractStateObject
Adds the children of thisStateObject
to the given list.- Overrides:
addChildren
in classAbstractStateObject
- Parameters:
children
- The list used to store the children
-
addItem
Description copied from interface:ListHolderStateObject
Adds the givenStateObject
as a child of this one.- Specified by:
addItem
in interfaceListHolderStateObject<String>
- Parameters:
item
- The childStateObject
to become a child of this one return The given item
-
addItems
Description copied from interface:ListHolderStateObject
Adds the given list ofStateObjects
as children of this one.- Specified by:
addItems
in interfaceListHolderStateObject<String>
- Parameters:
items
- TheStateObjects
to become children of this one
-
addListChangeListener
Description copied from interface:ListHolderStateObject
Registers the givenIListChangeListener
for the specified list. The listener will be notified only when items are added, removed, moved from the list.- Specified by:
addListChangeListener
in interfaceListHolderStateObject<String>
- Parameters:
listName
- The name of the list for which the listener will be notified when the content of the list has changedlistener
- The listener to be notified upon changes
-
append
Appends the given sequence of characters to the path expression. If the sequence does not begin with a dot, then the first segment will be appended to the last segment and then new segments will be created.- Parameters:
text
- The sequence of characters to append to the path expression
-
canMoveDown
Description copied from interface:ListHolderStateObject
Determines whether the givenStateObject
can be moved down by one position in the list owned by its parent.- Specified by:
canMoveDown
in interfaceListHolderStateObject<String>
- Parameters:
item
- TheStateObject
that could potentially be moved down- Returns:
true
if the object can be moved down by one unit;false
otherwise
-
canMoveUp
Description copied from interface:ListHolderStateObject
Determines whether the givenStateObject
can be moved up by one position in the list owned by its parent.- Specified by:
canMoveUp
in interfaceListHolderStateObject<String>
- Parameters:
item
- TheStateObject
that could potentially be moved up- Returns:
true
if the object can be moved up by one unit;false
otherwise
-
clearResolvedObjects
protected void clearResolvedObjects()Clears the values related to the managed type and type. -
getExpression
Description copied from interface:StateObject
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)
-
getIdentificationVariable
Returns theStateObject
representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.- Returns:
- The root of the path expression
-
getItem
Description copied from interface:ListHolderStateObject
Returns theStateObject
at the given positions from the list- Specified by:
getItem
in interfaceListHolderStateObject<String>
- Parameters:
index
- The position of theStateObject
to retrieve- Returns:
- The
StateObject
at the given position
-
getManagedType
Returns -
getMapping
Returns -
getMapping
Retrieves theIMapping
for the path at the given position.- Parameters:
index
- The index of the path for which itsIMapping
should be retrieved, which should start at 1 to skip the identification variable
-
getPath
Returns the string representation of the path expression. If the identification variable is virtual, then it is not part of the result.- Returns:
- The path expression, which is never
null
-
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
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
-
hasIdentificationVariable
public boolean hasIdentificationVariable()Determines whether the identification variable is present.- Returns:
true
the identification variable is present;false
otherwise
-
hasItems
public boolean hasItems()Description copied from interface:ListHolderStateObject
Determines whether thisStateObject
has any children.- Specified by:
hasItems
in interfaceListHolderStateObject<String>
- Returns:
true
if thisStateObject
has children;false
otherwise
-
initialize
protected void initialize()Description copied from class:AbstractStateObject
Initializes this state object.- Overrides:
initialize
in classAbstractStateObject
-
isEquivalent
Description copied from interface: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 classAbstractStateObject
- Parameters:
stateObject
- TheStateObject
to compare its content to this one- Returns:
true
if both object are equivalent;false
otherwise
-
items
Description copied from interface:ListHolderStateObject
Returns anListIterable
over the children.- Specified by:
items
in interfaceListHolderStateObject<String>
- Returns:
- An
ListIterable
that is iterating over the children
-
itemsSize
public int itemsSize()Description copied from interface:ListHolderStateObject
Returns the number of children this list holder has.- Specified by:
itemsSize
in interfaceListHolderStateObject<String>
- Returns:
- The count of
StateObjects
that are children of this one
-
moveDown
Description copied from interface:ListHolderStateObject
Moves the givenStateObject
down by one position in the list owned by its parent.- Specified by:
moveDown
in interfaceListHolderStateObject<String>
- Parameters:
item
- TheStateObject
to move down in the list- Returns:
- The given item
-
moveUp
Description copied from interface:ListHolderStateObject
Moves the givenStateObject
up by one position in the list owned by its parent.- Specified by:
moveUp
in interfaceListHolderStateObject<String>
- Parameters:
item
- TheStateObject
to move up in the list- Returns:
- The given item
-
removeItem
public void removeItem(int index) Removes the single path at the given index.- Parameters:
index
- The position of the single path to remove. If the index is 0, then the identification variable is nullified
-
removeItem
Description copied from interface:ListHolderStateObject
Removes the givenStateObject
from the list of children.- Specified by:
removeItem
in interfaceListHolderStateObject<String>
- Parameters:
item
- The childStateObject
to not longer be a child
-
removeItems
Description copied from interface:ListHolderStateObject
Removes the givenStateObject
from the list of children.- Specified by:
removeItems
in interfaceListHolderStateObject<String>
- Parameters:
items
- TheStateObjects
to remove from this one
-
removeListChangeListener
Description copied from interface:ListHolderStateObject
Unregisters the givenIListChangeListener
that was registered for the specified list. The listener will no longer be notified only when items are added, removed, moved from the list.- Specified by:
removeListChangeListener
in interfaceListHolderStateObject<String>
- Parameters:
listName
- The name of the list for which the listener was registeredlistener
- The listener to unregister
-
resolveManagedType
Resolves -
resolveMappings
protected void resolveMappings()Resolves theIMapping
objects that constitutes the path expression. -
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
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
-
setIdentificationVariable
Sets theStateObject
representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.- Parameters:
identificationVariable
- The root of the path expression
-
setIdentificationVariableInternally
Sets theStateObject
representing the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression. This method does not replace the first path in the list of paths.- Parameters:
identificationVariable
- The root of the path expression
-
setPath
Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.- Parameters:
path
- The new path expression
-
setPath
Replaces the existing path segment to become the given one.- Parameters:
index
- The position of the path segment to replacepath
- The replacement
-
setPaths
Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.- Parameters:
paths
- The new path expression
-
setPaths
Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.- Parameters:
paths
- The new path expression
-
setPaths
Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.- Parameters:
paths
- The new path expression
-
toTextInternal
Description copied from class:AbstractStateObject
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.- Specified by:
toTextInternal
in classAbstractStateObject
- Parameters:
writer
- The writer used to print out the string representation- Throws:
IOException
- This should never happens, it is only required becauseAppendable
is used instead of any concrete class
-