Module org.eclipse.persistence.core
Class DirectCollectionChangeRecord
java.lang.Object
org.eclipse.persistence.internal.sessions.ChangeRecord
org.eclipse.persistence.internal.sessions.DeferrableChangeRecord
org.eclipse.persistence.internal.sessions.DirectCollectionChangeRecord
- All Implemented Interfaces:
Serializable
,ChangeRecord
,DirectCollectionChangeRecord
public class DirectCollectionChangeRecord
extends DeferrableChangeRecord
implements DirectCollectionChangeRecord
Purpose: This class holds the record of the changes made to a collection attribute of an object.
Description: Collections must be compared to each other and added and removed objects must be recorded separately.
- See Also:
-
Nested Class Summary
-
Field Summary
Modifier and TypeFieldDescriptionprotected HashMap
protected Map
Used only in case listOrderField != null in the mapping.protected HashMap
Contains the number of objects that must be inserted to once the value is removed in the database as a delete where value = "value" will remove all instances of that value in the database not just one.protected boolean
protected boolean
protected boolean
protected boolean
protected int
protected int
protected boolean
Indicates whether IndirectList's order has been repaired.protected HashMap
Fields inherited from class org.eclipse.persistence.internal.sessions.DeferrableChangeRecord
isDeferred, latestCollection, originalCollection
Fields inherited from class org.eclipse.persistence.internal.sessions.ChangeRecord
attribute, mapping, owner
-
Constructor Summary
ConstructorDescriptionThis default constructor.This constructor returns a changeRecord representing the DirectCollection mapping. -
Method Summary
Modifier and TypeMethodDescriptionvoid
addAdditionChange
(Object key, Integer count) This method takes a single addition value and records it.void
addAdditionChange
(HashMap additions, HashMap databaseCount) This method takes a map of primitive objects and adds them to the add list.void
addRemoveChange
(Object key, Integer count) This method takes a single remove change and integrates it with this changeset.void
addRemoveChange
(HashMap additions, HashMap databaseCount) This method takes a hashtable of primitive objects and adds them to the remove list.void
Clears info about added / removed objects set by change tracker.void
decrementDatabaseCount
(Object object) Decrement the count for objectADVANCED: This method returns the list of added objects.This method returns the collection of objects that were added to the collection.This method returns the collection of objects that were added to the collection.int
int
ADVANCED: This method returns the list of removed objects.This method returns the collection of objects that were removed from the collection.boolean
Returns true if the change set has changes.void
incrementDatabaseCount
(Object object) Increment the count for objectvoid
internalRecreateOriginalCollection
(Object currentCollection, AbstractSession session) Recreates the original state of the collection.boolean
boolean
void
mergeRecord
(ChangeRecord mergeFromRecord, UnitOfWorkChangeSet mergeToChangeSet, UnitOfWorkChangeSet mergeFromChangeSet) This method will be used to merge one record into another.boolean
void
setChangedIndexes
(Map changedIndexes) void
setCommitAddition
(Hashtable additions) This method takes a hashtable of primitives and adds them to the commit list.void
setFirstToAddAlreadyInCollection
(boolean flag) void
setFirstToRemoveAlreadyOutCollection
(boolean flag) void
setNewSize
(int size) void
setOldSize
(int size) void
setOrderHasBeenRepaired
(boolean hasBeenRepaired) void
storeDatabaseCounts
(Object collection, ContainerPolicy containerPolicy, AbstractSession session) This method will iterate over the collection and store the database counts for the objects within the collection, this is used for minimal updates.void
updateReferences
(UnitOfWorkChangeSet mergeToChangeSet, UnitOfWorkChangeSet mergeFromChangeSet) This method will be used to update the objectsChangeSets referencesMethods inherited from class org.eclipse.persistence.internal.sessions.DeferrableChangeRecord
getLatestCollection, getOldValue, getOldValue, getOriginalCollection, isDeferred, recreateOriginalCollection, setIsDeferred, setLatestCollection, setOriginalCollection
Methods inherited from class org.eclipse.persistence.internal.sessions.ChangeRecord
getAttribute, getMapping, getOwner, prepareForSynchronization, setAttribute, setMapping, setOwner, toString, updateChangeRecordWithNewValue
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.persistence.sessions.changesets.ChangeRecord
getAttribute, getOldValue, getOwner
-
Field Details
-
addObjectMap
-
removeObjectMap
-
commitAddMap
Contains the number of objects that must be inserted to once the value is removed in the database as a delete where value = "value" will remove all instances of that value in the database not just one. -
changedIndexes
Used only in case listOrderField != null in the mapping. Maps each object which has been added or removed or which order in the list has changed to an array of two (non-intersecting) sets of indexes - old and new. -
oldSize
protected int oldSize -
newSize
protected int newSize -
isFirstToAddAlreadyInCollection
protected boolean isFirstToAddAlreadyInCollection -
isFirstToRemoveAlreadyOutCollection
protected boolean isFirstToRemoveAlreadyOutCollection -
isFirstToAdd
protected boolean isFirstToAdd -
isFirstToRemove
protected boolean isFirstToRemove -
orderHasBeenRepaired
protected boolean orderHasBeenRepairedIndicates whether IndirectList's order has been repaired.
-
-
Constructor Details
-
DirectCollectionChangeRecord
public DirectCollectionChangeRecord()This default constructor. -
DirectCollectionChangeRecord
This constructor returns a changeRecord representing the DirectCollection mapping.
-
-
Method Details
-
addAdditionChange
This method takes a map of primitive objects and adds them to the add list. The map stores the number of times the object is in the list. -
addAdditionChange
This method takes a single addition value and records it. -
addRemoveChange
This method takes a hashtable of primitive objects and adds them to the remove list. Each reference in the hashtable lists the number of this object that needs to be removed from the collection. -
addRemoveChange
This method takes a single remove change and integrates it with this changeset. -
setCommitAddition
This method takes a hashtable of primitives and adds them to the commit list. This count value provided is the number of instances that will need to be inserted into the database once a remove has occurred. This is only set once for each object type. -
storeDatabaseCounts
public void storeDatabaseCounts(Object collection, ContainerPolicy containerPolicy, AbstractSession session) This method will iterate over the collection and store the database counts for the objects within the collection, this is used for minimal updates. -
incrementDatabaseCount
Increment the count for object -
decrementDatabaseCount
Decrement the count for object -
getAddObjectList
ADVANCED: This method returns the list of added objects.- Specified by:
getAddObjectList
in interfaceDirectCollectionChangeRecord
- Returns:
- java.util.Vector
-
getAddObjectMap
This method returns the collection of objects that were added to the collection. -
getCommitAddMap
This method returns the collection of objects that were added to the collection. -
getRemoveObjectList
ADVANCED: This method returns the list of removed objects.- Specified by:
getRemoveObjectList
in interfaceDirectCollectionChangeRecord
- Returns:
- java.util.Vector
-
getRemoveObjectMap
This method returns the collection of objects that were removed from the collection. -
hasChanges
public boolean hasChanges()Returns true if the change set has changes. -
mergeRecord
public void mergeRecord(ChangeRecord mergeFromRecord, UnitOfWorkChangeSet mergeToChangeSet, UnitOfWorkChangeSet mergeFromChangeSet) This method will be used to merge one record into another.- Specified by:
mergeRecord
in classChangeRecord
-
updateReferences
public void updateReferences(UnitOfWorkChangeSet mergeToChangeSet, UnitOfWorkChangeSet mergeFromChangeSet) This method will be used to update the objectsChangeSets references- Specified by:
updateReferences
in classChangeRecord
-
setFirstToAddAlreadyInCollection
public void setFirstToAddAlreadyInCollection(boolean flag) -
isFirstToAddAlreadyInCollection
public boolean isFirstToAddAlreadyInCollection() -
setFirstToRemoveAlreadyOutCollection
public void setFirstToRemoveAlreadyOutCollection(boolean flag) -
isFirstToRemoveAlreadyOutCollection
public boolean isFirstToRemoveAlreadyOutCollection() -
setChangedIndexes
-
getChangedIndexes
-
setOldSize
public void setOldSize(int size) -
getOldSize
public int getOldSize() -
setNewSize
public void setNewSize(int size) -
getNewSize
public int getNewSize() -
internalRecreateOriginalCollection
Recreates the original state of the collection.- Specified by:
internalRecreateOriginalCollection
in classDeferrableChangeRecord
-
setOrderHasBeenRepaired
public void setOrderHasBeenRepaired(boolean hasBeenRepaired) -
orderHasBeenRepaired
public boolean orderHasBeenRepaired() -
clearChanges
public void clearChanges()Clears info about added / removed objects set by change tracker.- Specified by:
clearChanges
in classDeferrableChangeRecord
-