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
Fields -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedCreates a newAbstractPathExpressionStateObject.protectedAbstractPathExpressionStateObject(StateObject parent, String path) Creates a newAbstractPathExpressionStateObject. -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddChildren(List<StateObject> children) Adds the children of thisStateObjectto the given list.<S extends String>
SaddItem(S item) Adds the givenStateObjectas a child of this one.voidAdds the given list ofStateObjectsas children of this one.voidaddListChangeListener(String listName, IListChangeListener<String> listener) Registers the givenIListChangeListenerfor the specified list.voidAppends the given sequence of characters to the path expression.booleancanMoveDown(String item) Determines whether the givenStateObjectcan be moved down by one position in the list owned by its parent.booleanDetermines whether the givenStateObjectcan be moved up by one position in the list owned by its parent.protected voidClears the values related to the managed type and type.Returns the actual parsed object if thisStateObjectrepresentation of the JPQL query was created by parsing an existing JPQL query.Returns theStateObjectrepresenting 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 theStateObjectat the given positions from the listReturnsReturnsgetMapping(int index) Retrieves theIMappingfor the path at the given position.getPath()Returns the string representation of the path expression.getType()Returns theITypeof the field handled by this object.Returns theITypeDeclarationof the field handled by this object.booleanDetermines whether the identification variable is present.booleanhasItems()Determines whether thisStateObjecthas any children.protected voidInitializes this state object.booleanisEquivalent(StateObject stateObject) Determines whether the givenStateObjectis equivalent to this one, i.e.items()Returns anListIterableover the children.intReturns the number of children this list holder has.Moves the givenStateObjectdown by one position in the list owned by its parent.Moves the givenStateObjectup by one position in the list owned by its parent.voidremoveItem(int index) Removes the single path at the given index.voidremoveItem(String item) Removes the givenStateObjectfrom the list of children.voidremoveItems(Collection<String> items) Removes the givenStateObjectfrom the list of children.voidremoveListChangeListener(String listName, IListChangeListener<String> listener) Unregisters the givenIListChangeListenerthat was registered for the specified list.protected abstract IManagedTypeResolvesprotected voidResolves theIMappingobjects that constitutes the path expression.protected abstract ITypeResolves theITypeof the property handled by this object.protected ITypeDeclarationResolves theITypeDeclarationof the property handled by this object.voidsetIdentificationVariable(StateObject identificationVariable) Sets theStateObjectrepresenting 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 voidsetIdentificationVariableInternally(StateObject identificationVariable) Sets theStateObjectrepresenting the identification variable that starts the path expression, which can be a sample identification variable, a map value, map key or map entry expression.voidReplaces the existing path segment to become the given one.voidsetPath(CharSequence path) Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.voidChanges the path expression with the list of segments, the identification variable will also be updated with the first segment.voidChanges the path expression with the list of segments, the identification variable will also be updated with the first segment.voidsetPaths(ListIterator<String> paths) Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.protected voidtoTextInternal(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, 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, toTextMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods 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 benullpath- The path expression- Throws:
NullPointerException- The given parent cannot benull
-
-
Method Details
-
addChildren
Description copied from class:AbstractStateObjectAdds the children of thisStateObjectto the given list.- Overrides:
addChildrenin classAbstractStateObject- Parameters:
children- The list used to store the children
-
addItem
Description copied from interface:ListHolderStateObjectAdds the givenStateObjectas a child of this one.- Specified by:
addItemin interfaceListHolderStateObject<String>- Parameters:
item- The childStateObjectto become a child of this one return The given item
-
addItems
Description copied from interface:ListHolderStateObjectAdds the given list ofStateObjectsas children of this one.- Specified by:
addItemsin interfaceListHolderStateObject<String>- Parameters:
items- TheStateObjectsto become children of this one
-
addListChangeListener
Description copied from interface:ListHolderStateObjectRegisters the givenIListChangeListenerfor the specified list. The listener will be notified only when items are added, removed, moved from the list.- Specified by:
addListChangeListenerin 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:ListHolderStateObjectDetermines whether the givenStateObjectcan be moved down by one position in the list owned by its parent.- Specified by:
canMoveDownin interfaceListHolderStateObject<String>- Parameters:
item- TheStateObjectthat could potentially be moved down- Returns:
trueif the object can be moved down by one unit;falseotherwise
-
canMoveUp
Description copied from interface:ListHolderStateObjectDetermines whether the givenStateObjectcan be moved up by one position in the list owned by its parent.- Specified by:
canMoveUpin interfaceListHolderStateObject<String>- Parameters:
item- TheStateObjectthat could potentially be moved up- Returns:
trueif the object can be moved up by one unit;falseotherwise
-
clearResolvedObjects
protected void clearResolvedObjects()Clears the values related to the managed type and type. -
getExpression
Description copied from interface:StateObjectReturns 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
Returns theStateObjectrepresenting 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:ListHolderStateObjectReturns theStateObjectat the given positions from the list- Specified by:
getItemin interfaceListHolderStateObject<String>- Parameters:
index- The position of theStateObjectto retrieve- Returns:
- The
StateObjectat the given position
-
getManagedType
Returns -
getMapping
Returns -
getMapping
Retrieves theIMappingfor the path at the given position.- Parameters:
index- The index of the path for which itsIMappingshould 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 theITypeof the field handled by this object.- Returns:
- Either the
ITypethat was resolved by this state object or theITypeforIType.UNRESOLVABLE_TYPEif it could not be resolved
-
getTypeDeclaration
Returns theITypeDeclarationof the field handled by this object.- Returns:
- Either the
ITypeDeclarationthat was resolved by this object or theITypeDeclarationforIType.UNRESOLVABLE_TYPEif it could not be resolved
-
hasIdentificationVariable
public boolean hasIdentificationVariable()Determines whether the identification variable is present.- Returns:
truethe identification variable is present;falseotherwise
-
hasItems
public boolean hasItems()Description copied from interface:ListHolderStateObjectDetermines whether thisStateObjecthas any children.- Specified by:
hasItemsin interfaceListHolderStateObject<String>- Returns:
trueif thisStateObjecthas children;falseotherwise
-
initialize
protected void initialize()Description copied from class:AbstractStateObjectInitializes this state object.- Overrides:
initializein classAbstractStateObject
-
isEquivalent
Description copied from interface:StateObjectDetermines 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
-
items
Description copied from interface:ListHolderStateObjectReturns anListIterableover the children.- Specified by:
itemsin interfaceListHolderStateObject<String>- Returns:
- An
ListIterablethat is iterating over the children
-
itemsSize
public int itemsSize()Description copied from interface:ListHolderStateObjectReturns the number of children this list holder has.- Specified by:
itemsSizein interfaceListHolderStateObject<String>- Returns:
- The count of
StateObjectsthat are children of this one
-
moveDown
Description copied from interface:ListHolderStateObjectMoves the givenStateObjectdown by one position in the list owned by its parent.- Specified by:
moveDownin interfaceListHolderStateObject<String>- Parameters:
item- TheStateObjectto move down in the list- Returns:
- The given item
-
moveUp
Description copied from interface:ListHolderStateObjectMoves the givenStateObjectup by one position in the list owned by its parent.- Specified by:
moveUpin interfaceListHolderStateObject<String>- Parameters:
item- TheStateObjectto 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:ListHolderStateObjectRemoves the givenStateObjectfrom the list of children.- Specified by:
removeItemin interfaceListHolderStateObject<String>- Parameters:
item- The childStateObjectto not longer be a child
-
removeItems
Description copied from interface:ListHolderStateObjectRemoves the givenStateObjectfrom the list of children.- Specified by:
removeItemsin interfaceListHolderStateObject<String>- Parameters:
items- TheStateObjectsto remove from this one
-
removeListChangeListener
Description copied from interface:ListHolderStateObjectUnregisters the givenIListChangeListenerthat 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:
removeListChangeListenerin 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 theIMappingobjects that constitutes the path expression. -
resolveType
Resolves theITypeof the property handled by this object.- Returns:
- Either the
ITypethat was resolved by this object or theITypeforIType.UNRESOLVABLE_TYPEif it could not be resolved
-
resolveTypeDeclaration
Resolves theITypeDeclarationof the property handled by this object.- Returns:
- Either the
ITypeDeclarationthat was resolved by this object or theITypeDeclarationforIType.UNRESOLVABLE_TYPEif it could not be resolved
-
setIdentificationVariable
Sets theStateObjectrepresenting 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 theStateObjectrepresenting 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:AbstractStateObjectPrints 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:
IOException- This should never happens, it is only required becauseAppendableis used instead of any concrete class
-