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
Nested Classes -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected HashMapprotected MapUsed only in case listOrderField != null in the mapping.protected HashMapContains 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 booleanprotected booleanprotected booleanprotected booleanprotected intprotected intprotected booleanIndicates whether IndirectList's order has been repaired.protected HashMapFields inherited from class org.eclipse.persistence.internal.sessions.DeferrableChangeRecord
isDeferred, latestCollection, originalCollectionFields inherited from class org.eclipse.persistence.internal.sessions.ChangeRecord
attribute, mapping, owner -
Constructor Summary
ConstructorsConstructorDescriptionThis default constructor.This constructor returns a changeRecord representing the DirectCollection mapping. -
Method Summary
Modifier and TypeMethodDescriptionvoidaddAdditionChange(Object key, Integer count) This method takes a single addition value and records it.voidaddAdditionChange(HashMap additions, HashMap databaseCount) This method takes a map of primitive objects and adds them to the add list.voidaddRemoveChange(Object key, Integer count) This method takes a single remove change and integrates it with this changeset.voidaddRemoveChange(HashMap additions, HashMap databaseCount) This method takes a hashtable of primitive objects and adds them to the remove list.voidClears info about added / removed objects set by change tracker.voiddecrementDatabaseCount(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.intintADVANCED: This method returns the list of removed objects.This method returns the collection of objects that were removed from the collection.booleanReturns true if the change set has changes.voidincrementDatabaseCount(Object object) Increment the count for objectvoidinternalRecreateOriginalCollection(Object currentCollection, AbstractSession session) Recreates the original state of the collection.booleanbooleanvoidmergeRecord(ChangeRecord mergeFromRecord, UnitOfWorkChangeSet mergeToChangeSet, UnitOfWorkChangeSet mergeFromChangeSet) This method will be used to merge one record into another.booleanvoidsetChangedIndexes(Map changedIndexes) voidsetCommitAddition(Hashtable additions) This method takes a hashtable of primitives and adds them to the commit list.voidsetFirstToAddAlreadyInCollection(boolean flag) voidsetFirstToRemoveAlreadyOutCollection(boolean flag) voidsetNewSize(int size) voidsetOldSize(int size) voidsetOrderHasBeenRepaired(boolean hasBeenRepaired) voidstoreDatabaseCounts(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.voidupdateReferences(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, setOriginalCollectionMethods inherited from class org.eclipse.persistence.internal.sessions.ChangeRecord
getAttribute, getMapping, getOwner, prepareForSynchronization, setAttribute, setMapping, setOwner, toString, updateChangeRecordWithNewValueMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods 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:
getAddObjectListin 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:
getRemoveObjectListin 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:
mergeRecordin classChangeRecord
-
updateReferences
public void updateReferences(UnitOfWorkChangeSet mergeToChangeSet, UnitOfWorkChangeSet mergeFromChangeSet) This method will be used to update the objectsChangeSets references- Specified by:
updateReferencesin 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:
internalRecreateOriginalCollectionin 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:
clearChangesin classDeferrableChangeRecord
-