EclipseLink 2.4.2, build 'v20130514-5956486' API Reference

org.eclipse.persistence.jpa.jpql.model.query
Class AbstractPathExpressionStateObject

java.lang.Object
  extended by org.eclipse.persistence.jpa.jpql.model.query.AbstractStateObject
      extended by org.eclipse.persistence.jpa.jpql.model.query.AbstractPathExpressionStateObject
All Implemented Interfaces:
ListHolderStateObject<java.lang.String>, StateObject
Direct Known Subclasses:
CollectionValuedPathExpressionStateObject, StateFieldPathExpressionStateObject

public abstract class AbstractPathExpressionStateObject
extends AbstractStateObject
implements ListHolderStateObject<java.lang.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.

Version:
2.4
See Also:
AbstractPathExpression
Author:
Pascal Filion
Since:
2.4

Field Summary
static java.lang.String IDENTIFICATION_VARIABLE_PROPERTY
          Notifies the identification variable property has changed.
static java.lang.String PATHS_LIST
          Notifies the content of the paths list has changed.
 
Constructor Summary
protected AbstractPathExpressionStateObject(StateObject parent)
          Creates a new AbstractPathExpressionStateObject.
protected AbstractPathExpressionStateObject(StateObject parent, java.lang.String path)
          Creates a new AbstractPathExpressionStateObject.
 
Method Summary
protected  void addChildren(java.util.List<StateObject> children)
          Adds the children of this StateObject to the given list.
 java.lang.String addItem(java.lang.String item)
          Adds the given StateObject as a child of this one.
 void addItems(java.util.List<? extends java.lang.String> items)
          Adds the given list of StateObjects as children of this one.
 void addListChangeListener(java.lang.String listName, IListChangeListener<java.lang.String> listener)
          Registers the given IListChangeListener for the specified list.
 void append(java.lang.String text)
          Appends the given sequence of characters to the path expression.
 boolean canMoveDown(java.lang.String item)
          Determines whether the given StateObject can be moved down by one position in the list owned by its parent.
 boolean canMoveUp(java.lang.String item)
          Determines whether the given StateObject can be moved up by one position in the list owned by its parent.
protected  void clearResolvedObjects()
          Clears the values related to the managed type and type.
 AbstractPathExpression getExpression()
          Returns the actual parsed object if this StateObject representation of the JPQL query was created by parsing an existing JPQL query.
 StateObject getIdentificationVariable()
          Returns the StateObject 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.
 java.lang.String getItem(int index)
          Returns the StateObject at the given positions from the list
 IManagedType getManagedType()
          Returns
 IMapping getMapping()
          Returns
 IMapping getMapping(int index)
          Retrieves the IMapping for the path at the given position.
 java.lang.String getPath()
          Returns the string representation of the path expression.
 IType getType()
          Returns the IType of the field handled by this object.
 ITypeDeclaration getTypeDeclaration()
          Returns the ITypeDeclaration of the field handled by this object.
 boolean hasIdentificationVariable()
          Determines whether the identification variable is present.
 boolean hasItems()
          Determines whether this StateObject has any children.
protected  void initialize()
          Initializes this state object.
 boolean isEquivalent(StateObject stateObject)
          Determines whether the given StateObject is equivalent to this one, i.e. the information of both StateObject is the same.
 IterableListIterator<java.lang.String> items()
          Returns an IterableListIterator over the children.
 int itemsSize()
          Returns the number of children this list holder has.
 java.lang.String moveDown(java.lang.String item)
          Moves the given StateObject down by one position in the list owned by its parent.
 java.lang.String moveUp(java.lang.String item)
          Moves the given StateObject 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(java.lang.String item)
          Removes the given StateObject from the list of children.
 void removeItems(java.util.Collection<java.lang.String> items)
          Removes the given StateObject from the list of children.
 void removeListChangeListener(java.lang.String listName, IListChangeListener<java.lang.String> listener)
          Unregisters the given IListChangeListener that was registered for the specified list.
protected abstract  IManagedType resolveManagedType()
          Resolves
protected  void resolveMappings()
          Resolves the IMapping objects that constitutes the path expression.
protected abstract  IType resolveType()
          Resolves the IType of the property handled by this object.
protected  ITypeDeclaration resolveTypeDeclaration()
          Resolves the ITypeDeclaration of the property handled by this object.
 void setIdentificationVariable(StateObject identificationVariable)
          Sets the StateObject 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 the StateObject 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 setPath(java.lang.CharSequence path)
          Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.
 void setPath(int index, java.lang.String path)
          Replaces the existing path segment to become the given one.
 void setPaths(java.util.List<java.lang.String> paths)
          Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.
 void setPaths(java.util.ListIterator<java.lang.String> paths)
          Changes the path expression with the list of segments, the identification variable will also be updated with the first segment.
 void setPaths(java.lang.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(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.
 
Methods inherited from class org.eclipse.persistence.jpa.jpql.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.model.query.StateObject
accept, addPropertyChangeListener, children, decorate, findIdentificationVariable, getDeclaration, getDecorator, getGrammar, getManagedTypeProvider, getParent, getQueryBuilder, getRoot, isDecorated, removePropertyChangeListener, setParent, toString, toText
 

Field Detail

IDENTIFICATION_VARIABLE_PROPERTY

public static final java.lang.String IDENTIFICATION_VARIABLE_PROPERTY
Notifies the identification variable property has changed.

See Also:
Constant Field Values

PATHS_LIST

public static final java.lang.String PATHS_LIST
Notifies the content of the paths list has changed.

See Also:
Constant Field Values
Constructor Detail

AbstractPathExpressionStateObject

protected AbstractPathExpressionStateObject(StateObject parent)
Creates a new AbstractPathExpressionStateObject.

Parameters:
parent - The parent of this state object, which cannot be null
Throws:
java.lang.NullPointerException - The given parent cannot be null

AbstractPathExpressionStateObject

protected AbstractPathExpressionStateObject(StateObject parent,
                                            java.lang.String path)
Creates a new AbstractPathExpressionStateObject.

Parameters:
parent - The parent of this state object, which cannot be null
path - The path expression
Throws:
java.lang.NullPointerException - The given parent cannot be null
Method Detail

addChildren

protected void addChildren(java.util.List<StateObject> children)
Adds the children of this StateObject to the given list.

Overrides:
addChildren in class AbstractStateObject
Parameters:
children - The list used to store the children

addItem

public java.lang.String addItem(java.lang.String item)
Adds the given StateObject as a child of this one.

Specified by:
addItem in interface ListHolderStateObject<java.lang.String>
Parameters:
item - The child StateObject to become a child of this one return The given item

addItems

public void addItems(java.util.List<? extends java.lang.String> items)
Adds the given list of StateObjects as children of this one.

Specified by:
addItems in interface ListHolderStateObject<java.lang.String>
Parameters:
items - The StateObjects to become children of this one

addListChangeListener

public void addListChangeListener(java.lang.String listName,
                                  IListChangeListener<java.lang.String> listener)
Registers the given IListChangeListener for the specified list. The listener will be notified only when items are added, removed, moved from the list.

Specified by:
addListChangeListener in interface ListHolderStateObject<java.lang.String>
Parameters:
listName - The name of the list for which the listener will be notified when the content of the list has changed
listener - The listener to be notified upon changes

append

public void append(java.lang.String text)
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

public boolean canMoveDown(java.lang.String item)
Determines whether the given StateObject can be moved down by one position in the list owned by its parent.

Specified by:
canMoveDown in interface ListHolderStateObject<java.lang.String>
Parameters:
item - The StateObject that could potentially be moved down
Returns:
true if the object can be moved down by one unit; false otherwise

canMoveUp

public boolean canMoveUp(java.lang.String item)
Determines whether the given StateObject can be moved up by one position in the list owned by its parent.

Specified by:
canMoveUp in interface ListHolderStateObject<java.lang.String>
Parameters:
item - The StateObject 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

public AbstractPathExpression getExpression()
Returns the actual parsed object if this StateObject representation of the JPQL query was created by parsing an existing JPQL query.

Specified by:
getExpression in interface StateObject
Overrides:
getExpression in class AbstractStateObject
Returns:
The parsed object when a JPQL query is parsed and converted into a StateObject or null when the JPQL query is manually created (i.e. not from a string)

getIdentificationVariable

public StateObject getIdentificationVariable()
Returns the StateObject 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

public java.lang.String getItem(int index)
Returns the StateObject at the given positions from the list

Specified by:
getItem in interface ListHolderStateObject<java.lang.String>
Parameters:
index - The position of the StateObject to retrieve
Returns:
The StateObject at the given position

getManagedType

public IManagedType getManagedType()
Returns

Returns:

getMapping

public IMapping getMapping()
Returns

Returns:

getMapping

public IMapping getMapping(int index)
Retrieves the IMapping for the path at the given position.

Parameters:
index - The index of the path for which its IMapping should be retrieved, which should start at 1 to skip the identification variable

getPath

public java.lang.String 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

public IType getType()
Returns the IType of the field handled by this object.

Returns:
Either the IType that was resolved by this state object or the IType for IType.UNRESOLVABLE_TYPE if it could not be resolved

getTypeDeclaration

public ITypeDeclaration getTypeDeclaration()
Returns the ITypeDeclaration of the field handled by this object.

Returns:
Either the ITypeDeclaration that was resolved by this object or the ITypeDeclaration for IType.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()
Determines whether this StateObject has any children.

Specified by:
hasItems in interface ListHolderStateObject<java.lang.String>
Returns:
true if this StateObject has children; false otherwise

initialize

protected void initialize()
Initializes this state object.

Overrides:
initialize in class AbstractStateObject

isEquivalent

public boolean isEquivalent(StateObject stateObject)
Determines whether the given StateObject is equivalent to this one, i.e. the information of both StateObject is the same.

Specified by:
isEquivalent in interface StateObject
Overrides:
isEquivalent in class AbstractStateObject
Parameters:
stateObject - The StateObject to compare its content to this one
Returns:
true if both object are equivalent; false otherwise

items

public IterableListIterator<java.lang.String> items()
Returns an IterableListIterator over the children.

Specified by:
items in interface ListHolderStateObject<java.lang.String>
Returns:
An IterableListIterator that is iterating over the children

itemsSize

public int itemsSize()
Returns the number of children this list holder has.

Specified by:
itemsSize in interface ListHolderStateObject<java.lang.String>
Returns:
The count of StateObjects that are children of this one

moveDown

public java.lang.String moveDown(java.lang.String item)
Moves the given StateObject down by one position in the list owned by its parent.

Specified by:
moveDown in interface ListHolderStateObject<java.lang.String>
Parameters:
item - The StateObject to move down in the list
Returns:
The given item

moveUp

public java.lang.String moveUp(java.lang.String item)
Moves the given StateObject up by one position in the list owned by its parent.

Specified by:
moveUp in interface ListHolderStateObject<java.lang.String>
Parameters:
item - The StateObject 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

public void removeItem(java.lang.String item)
Removes the given StateObject from the list of children.

Specified by:
removeItem in interface ListHolderStateObject<java.lang.String>
Parameters:
item - The child StateObject to not longer be a child

removeItems

public void removeItems(java.util.Collection<java.lang.String> items)
Removes the given StateObject from the list of children.

Specified by:
removeItems in interface ListHolderStateObject<java.lang.String>
Parameters:
items - The StateObjects to remove from this one

removeListChangeListener

public void removeListChangeListener(java.lang.String listName,
                                     IListChangeListener<java.lang.String> listener)
Unregisters the given IListChangeListener 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 interface ListHolderStateObject<java.lang.String>
Parameters:
listName - The name of the list for which the listener was registered
listener - The listener to unregister

resolveManagedType

protected abstract IManagedType resolveManagedType()
Resolves

Returns:

resolveMappings

protected void resolveMappings()
Resolves the IMapping objects that constitutes the path expression.


resolveType

protected abstract IType resolveType()
Resolves the IType of the property handled by this object.

Returns:
Either the IType that was resolved by this object or the IType for IType.UNRESOLVABLE_TYPE if it could not be resolved

resolveTypeDeclaration

protected ITypeDeclaration resolveTypeDeclaration()
Resolves the ITypeDeclaration of the property handled by this object.

Returns:
Either the ITypeDeclaration that was resolved by this object or the ITypeDeclaration for IType.UNRESOLVABLE_TYPE if it could not be resolved

setIdentificationVariable

public void setIdentificationVariable(StateObject identificationVariable)
Sets the StateObject 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

protected void setIdentificationVariableInternally(StateObject identificationVariable)
Sets the StateObject 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

public void setPath(java.lang.CharSequence path)
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

public void setPath(int index,
                    java.lang.String path)
Replaces the existing path segment to become the given one.

Parameters:
index - The position of the path segment to replace
path - The replacement

setPaths

public void setPaths(java.util.List<java.lang.String> paths)
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

public void setPaths(java.util.ListIterator<java.lang.String> paths)
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

public void setPaths(java.lang.String... paths)
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

protected void toTextInternal(java.lang.Appendable writer)
                       throws java.io.IOException
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.

Specified by:
toTextInternal in class AbstractStateObject
Parameters:
writer - The writer used to print out the string representation
Throws:
java.io.IOException - This should never happens, it is only required because Appendable is used instead of any concrete class

EclipseLink 2.4.2, build 'v20130514-5956486' API Reference