Class UpdateClauseStateObject
- java.lang.Object
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.AbstractModifyClauseStateObject
-
- org.eclipse.persistence.jpa.jpql.tools.model.query.UpdateClauseStateObject
-
- All Implemented Interfaces:
DeclarationStateObject
,ListHolderStateObject<UpdateItemStateObject>
,StateObject
public class UpdateClauseStateObject extends AbstractModifyClauseStateObject implements ListHolderStateObject<UpdateItemStateObject>
This is theUPDATE
clause of theUPDATE
statement.An
UPDATE
statement provides bulk operations over sets of entities of a single entity class (together with its subclasses, if any). Only one entity abstract schema type may be specified in theUPDATE
clause.BNF:update_clause ::= UPDATE abstract_schema_name [[AS] identification_variable] SET update_item {, update_item}*
- Version:
- 2.5
- See Also:
UpdateClause
- Author:
- Pascal Filion
- Since:
- 2.4
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
UPDATE_ITEMS_LIST
Notify the list ofStateObjects
representing the update items.
-
Constructor Summary
Constructors Constructor Description UpdateClauseStateObject(UpdateStatementStateObject parent)
Creates a newUpdateClauseStateObject
.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
accept(StateObjectVisitor visitor)
Visits thisStateObject
by the givenvisitor
.protected void
addChildren(java.util.List<StateObject> children)
Adds the children of thisStateObject
to the given list.UpdateItemStateObject
addItem()
Adds a newUPDATE
item to this clause.UpdateItemStateObject
addItem(java.lang.String path)
Adds a newUPDATE
item to this clause.UpdateItemStateObject
addItem(java.lang.String[] paths, java.lang.String newValue)
Adds a newUPDATE
item to this clause.UpdateItemStateObject
addItem(java.lang.String[] paths, StateObject newValue)
Adds a newUPDATE
item to this clause.UpdateItemStateObject
addItem(java.lang.String path, java.lang.String newValue)
Adds a newUPDATE
item to this clause.UpdateItemStateObject
addItem(java.lang.String path, StateObject newValue)
Adds a newUPDATE
item to this clause.UpdateItemStateObject
addItem(java.util.ListIterator<java.lang.String> paths, java.lang.String newValue)
Adds a newUPDATE
item to this clause.UpdateItemStateObject
addItem(java.util.ListIterator<java.lang.String> paths, StateObject newValue)
Adds a newUPDATE
item to this clause.UpdateItemStateObject
addItem(UpdateItemStateObject item)
Adds the givenStateObject
as a child of this one.void
addItems(java.util.List<? extends UpdateItemStateObject> items)
Adds the given list ofStateObjects
as children of this one.void
addListChangeListener(java.lang.String listName, IListChangeListener<UpdateItemStateObject> listener)
Registers the givenIListChangeListener
for the specified list.protected boolean
areChildrenEquivalent(UpdateClauseStateObject stateObject)
Determines whether the children of thisStateObject
are equivalent to the children of the given one, i.e. the information of theStateObjects
is the same.boolean
canMoveDown(UpdateItemStateObject item)
Determines whether the givenStateObject
can be moved down by one position in the list owned by its parent.boolean
canMoveUp(UpdateItemStateObject item)
Determines whether the givenStateObject
can be moved up by one position in the list owned by its parent.UpdateClause
getExpression()
Returns the actual parsed object if thisStateObject
representation of the JPQL query was created by parsing an existing JPQL query.java.lang.String
getIdentifier()
Returns the JPQL identifier of this clause.UpdateItemStateObject
getItem(int index)
Returns theStateObject
at the given positions from the listUpdateStatementStateObject
getParent()
Returns the parent of thisStateObject
.boolean
hasItems()
Determines whether thisStateObject
has any children.protected void
initialize()
Initializes this state object.boolean
isEquivalent(StateObject stateObject)
Determines whether the givenStateObject
is equivalent to this one, i.e. the information of bothStateObject
is the same.boolean
isIdentificationVariableDefined()
Determines whether the identification variable has been defined.ListIterable<UpdateItemStateObject>
items()
Returns anListIterable
over the children.int
itemsSize()
Returns the number of children this list holder has.UpdateItemStateObject
moveDown(UpdateItemStateObject item)
Moves the givenStateObject
down by one position in the list owned by its parent.UpdateItemStateObject
moveUp(UpdateItemStateObject item)
Moves the givenStateObject
up by one position in the list owned by its parent.void
parse(java.lang.String jpqlFragment)
Parses the given fragment, which represents a single update item, and creates theStateObject
equivalent.void
removeItem(UpdateItemStateObject stateObject)
Removes the givenStateObject
from the list of children.void
removeItems(java.util.Collection<UpdateItemStateObject> items)
Removes the givenStateObject
from the list of children.void
removeListChangeListener(java.lang.String listName, IListChangeListener<UpdateItemStateObject> listener)
Unregisters the givenIListChangeListener
that was registered for the specified list.void
setExpression(UpdateClause 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
.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.AbstractModifyClauseStateObject
declarations, findManagedType, getAbstractSchemaName, getAbstractSchemaNameStateObject, getDeclaration, getEntity, getIdentificationVariable, getIdentificationVariableStateObject, getManagedType, getRangeVariableDeclaration, hasIdentificationVariable, setDeclaration, setDeclaration, setDeclaration, setDeclaration, setEntity, setEntityName, setIdentificationVariable
-
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, getDecorator, getGrammar, getManagedTypeProvider, 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
addPropertyChangeListener, children, decorate, findIdentificationVariable, getDeclaration, getDecorator, getGrammar, getManagedTypeProvider, getQueryBuilder, getRoot, isDecorated, removePropertyChangeListener, setParent, toString, toText
-
-
-
-
Field Detail
-
UPDATE_ITEMS_LIST
public static final java.lang.String UPDATE_ITEMS_LIST
Notify the list ofStateObjects
representing the update items.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
UpdateClauseStateObject
public UpdateClauseStateObject(UpdateStatementStateObject parent)
Creates a newUpdateClauseStateObject
.- Parameters:
parent
- The parent of this state object, which cannot benull
- Throws:
java.lang.NullPointerException
- The given parent cannot benull
-
-
Method Detail
-
accept
public void accept(StateObjectVisitor visitor)
Visits thisStateObject
by the givenvisitor
.- Specified by:
accept
in interfaceStateObject
- Parameters:
visitor
- Thevisitor
to visit this object
-
addChildren
protected void addChildren(java.util.List<StateObject> children)
Adds the children of thisStateObject
to the given list.- Overrides:
addChildren
in classAbstractModifyClauseStateObject
- Parameters:
children
- The list used to store the children
-
addItem
public UpdateItemStateObject addItem()
Adds a newUPDATE
item to this clause.- Returns:
- The newly added
UpdateItemStateObject
-
addItem
public UpdateItemStateObject addItem(java.util.ListIterator<java.lang.String> paths, StateObject newValue)
Adds a newUPDATE
item to this clause.- Parameters:
paths
- The paths of the value to updatenewValue
- TheStateObject
representing the new value- Returns:
- The newly added
UpdateItemStateObject
-
addItem
public UpdateItemStateObject addItem(java.util.ListIterator<java.lang.String> paths, java.lang.String newValue)
Adds a newUPDATE
item to this clause.- Parameters:
paths
- The paths of the value to updatenewValue
- The string representation of the new value to parse and to convert into aStateObject
representation- Returns:
- The newly added
UpdateItemStateObject
-
addItem
public UpdateItemStateObject addItem(java.lang.String path)
Adds a newUPDATE
item to this clause.- Parameters:
path
- The path of the value to update- Returns:
- The newly added
UpdateItemStateObject
-
addItem
public UpdateItemStateObject addItem(java.lang.String path, StateObject newValue)
Adds a newUPDATE
item to this clause.- Parameters:
path
- The path of the value to updatenewValue
- TheStateObject
representing the new value- Returns:
- The newly added
UpdateItemStateObject
-
addItem
public UpdateItemStateObject addItem(java.lang.String path, java.lang.String newValue)
Adds a newUPDATE
item to this clause.- Parameters:
path
- The path of the value to updatenewValue
- The string representation of the new value to parse and to convert into aStateObject
representation- Returns:
- The newly added
UpdateItemStateObject
-
addItem
public UpdateItemStateObject addItem(java.lang.String[] paths, StateObject newValue)
Adds a newUPDATE
item to this clause.- Parameters:
paths
- The paths of the value to updatenewValue
- TheStateObject
representing the new value- Returns:
- The newly added
UpdateItemStateObject
-
addItem
public UpdateItemStateObject addItem(java.lang.String[] paths, java.lang.String newValue)
Adds a newUPDATE
item to this clause.- Parameters:
paths
- The paths of the value to updatenewValue
- The string representation of the new value to parse and to convert into aStateObject
representation- Returns:
- The newly added
UpdateItemStateObject
-
addItem
public UpdateItemStateObject addItem(UpdateItemStateObject item)
Adds the givenStateObject
as a child of this one.- Specified by:
addItem
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
item
- The childStateObject
to become a child of this one return The given item
-
addItems
public void addItems(java.util.List<? extends UpdateItemStateObject> items)
Adds the given list ofStateObjects
as children of this one.- Specified by:
addItems
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
items
- TheStateObjects
to become children of this one
-
addListChangeListener
public void addListChangeListener(java.lang.String listName, IListChangeListener<UpdateItemStateObject> listener)
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<UpdateItemStateObject>
- 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
-
areChildrenEquivalent
protected boolean areChildrenEquivalent(UpdateClauseStateObject stateObject)
Determines whether the children of thisStateObject
are equivalent to the children of the given one, i.e. the information of theStateObjects
is the same.- Parameters:
stateObject
- TheStateObject
to compare its children to this one's children- Returns:
true
if both have equivalent children;false
otherwise
-
canMoveDown
public boolean canMoveDown(UpdateItemStateObject item)
Determines whether the givenStateObject
can be moved down by one position in the list owned by its parent.- Specified by:
canMoveDown
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
item
- TheStateObject
that could potentially be moved down- Returns:
true
if the object can be moved down by one unit;false
otherwise
-
canMoveUp
public boolean canMoveUp(UpdateItemStateObject item)
Determines whether the givenStateObject
can be moved up by one position in the list owned by its parent.- Specified by:
canMoveUp
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
item
- TheStateObject
that could potentially be moved up- Returns:
true
if the object can be moved up by one unit;false
otherwise
-
getExpression
public UpdateClause 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)
-
getIdentifier
public java.lang.String getIdentifier()
Returns the JPQL identifier of this clause.- Specified by:
getIdentifier
in classAbstractModifyClauseStateObject
- Returns:
- The JPQL identifier
-
getItem
public UpdateItemStateObject getItem(int index)
Returns theStateObject
at the given positions from the list- Specified by:
getItem
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
index
- The position of theStateObject
to retrieve- Returns:
- The
StateObject
at the given position
-
getParent
public UpdateStatementStateObject getParent()
Returns the parent of thisStateObject
.- Specified by:
getParent
in interfaceStateObject
- Overrides:
getParent
in classAbstractModifyClauseStateObject
- Returns:
- Returns the parent of this
StateObject
, which isnull
only when this is the root of the hierarchy
-
hasItems
public boolean hasItems()
Determines whether thisStateObject
has any children.- Specified by:
hasItems
in interfaceListHolderStateObject<UpdateItemStateObject>
- Returns:
true
if thisStateObject
has children;false
otherwise
-
initialize
protected void initialize()
Initializes this state object.- Overrides:
initialize
in classAbstractModifyClauseStateObject
-
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 classAbstractModifyClauseStateObject
- Parameters:
stateObject
- TheStateObject
to compare its content to this one- Returns:
true
if both object are equivalent;false
otherwise
-
isIdentificationVariableDefined
public boolean isIdentificationVariableDefined()
Determines whether the identification variable has been defined.- Returns:
true
if the identification variable has been specified;false
otherwise, which means it has been generated based on the abstract schema name
-
items
public ListIterable<UpdateItemStateObject> items()
Returns anListIterable
over the children.- Specified by:
items
in interfaceListHolderStateObject<UpdateItemStateObject>
- Returns:
- An
ListIterable
that is iterating over the children
-
itemsSize
public int itemsSize()
Returns the number of children this list holder has.- Specified by:
itemsSize
in interfaceListHolderStateObject<UpdateItemStateObject>
- Returns:
- The count of
StateObjects
that are children of this one
-
moveDown
public UpdateItemStateObject moveDown(UpdateItemStateObject item)
Moves the givenStateObject
down by one position in the list owned by its parent.- Specified by:
moveDown
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
item
- TheStateObject
to move down in the list- Returns:
- The given item
-
moveUp
public UpdateItemStateObject moveUp(UpdateItemStateObject item)
Moves the givenStateObject
up by one position in the list owned by its parent.- Specified by:
moveUp
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
item
- TheStateObject
to move up in the list- Returns:
- The given item
-
parse
public void parse(java.lang.String jpqlFragment)
Parses the given fragment, which represents a single update item, and creates theStateObject
equivalent.- Parameters:
jpqlFragment
- The portion of the query representing a single update item
-
removeItem
public void removeItem(UpdateItemStateObject stateObject)
Removes the givenStateObject
from the list of children.- Specified by:
removeItem
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
stateObject
- The childStateObject
to not longer be a child
-
removeItems
public void removeItems(java.util.Collection<UpdateItemStateObject> items)
Removes the givenStateObject
from the list of children.- Specified by:
removeItems
in interfaceListHolderStateObject<UpdateItemStateObject>
- Parameters:
items
- TheStateObjects
to remove from this one
-
removeListChangeListener
public void removeListChangeListener(java.lang.String listName, IListChangeListener<UpdateItemStateObject> listener)
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<UpdateItemStateObject>
- Parameters:
listName
- The name of the list for which the listener was registeredlistener
- The listener to unregister
-
setExpression
public void setExpression(UpdateClause 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 anUPDATE
clause
-
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 classAbstractModifyClauseStateObject
- 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
-
-