org.hibernate.envers.synchronization.work
Class PersistentCollectionChangeWorkUnit

java.lang.Object
  extended by org.hibernate.envers.synchronization.work.AbstractAuditWorkUnit
      extended by org.hibernate.envers.synchronization.work.PersistentCollectionChangeWorkUnit
All Implemented Interfaces:
AuditWorkUnit, WorkUnitMergeDispatcher, WorkUnitMergeVisitor

public class PersistentCollectionChangeWorkUnit
extends AbstractAuditWorkUnit
implements AuditWorkUnit

Author:
Adam Warski (adam at warski dot org)

Nested Class Summary
static class PersistentCollectionChangeWorkUnit.PersistentCollectionChangeWorkUnitId
          A unique identifier for a collection work unit.
 
Field Summary
 
Fields inherited from class org.hibernate.envers.synchronization.work.AbstractAuditWorkUnit
auditStrategy, entityName, id, revisionType, sessionImplementor, verCfg
 
Constructor Summary
PersistentCollectionChangeWorkUnit(SessionImplementor sessionImplementor, String entityName, AuditConfiguration auditCfg, PersistentCollection collection, CollectionEntry collectionEntry, Serializable snapshot, Serializable id, String referencingPropertyName)
           
PersistentCollectionChangeWorkUnit(SessionImplementor sessionImplementor, String entityName, AuditConfiguration verCfg, Serializable id, List<PersistentCollectionChangeData> collectionChanges, String referencingPropertyName)
           
 
Method Summary
 boolean containsWork()
           
 AuditWorkUnit dispatch(WorkUnitMergeVisitor first)
          Shuold be invoked on the second work unit.
 Map<String,Object> generateData(Object revisionData)
           
 List<PersistentCollectionChangeData> getCollectionChanges()
           
 String getReferencingPropertyName()
           
 AuditWorkUnit merge(AddWorkUnit second)
           
 AuditWorkUnit merge(CollectionChangeWorkUnit second)
           
 AuditWorkUnit merge(DelWorkUnit second)
           
 AuditWorkUnit merge(FakeBidirectionalRelationWorkUnit second)
           
 AuditWorkUnit merge(ModWorkUnit second)
           
 void perform(Session session, Object revisionData)
          Perform this work unit in the given session.
 
Methods inherited from class org.hibernate.envers.synchronization.work.AbstractAuditWorkUnit
fillDataWithId, getEntityId, getEntityName, getRevisionType, isPerformed, setPerformed, undo
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.hibernate.envers.synchronization.work.AuditWorkUnit
getEntityId, getEntityName, getRevisionType, isPerformed, undo
 

Constructor Detail

PersistentCollectionChangeWorkUnit

public PersistentCollectionChangeWorkUnit(SessionImplementor sessionImplementor,
                                          String entityName,
                                          AuditConfiguration auditCfg,
                                          PersistentCollection collection,
                                          CollectionEntry collectionEntry,
                                          Serializable snapshot,
                                          Serializable id,
                                          String referencingPropertyName)

PersistentCollectionChangeWorkUnit

public PersistentCollectionChangeWorkUnit(SessionImplementor sessionImplementor,
                                          String entityName,
                                          AuditConfiguration verCfg,
                                          Serializable id,
                                          List<PersistentCollectionChangeData> collectionChanges,
                                          String referencingPropertyName)
Method Detail

containsWork

public boolean containsWork()
Specified by:
containsWork in interface AuditWorkUnit

generateData

public Map<String,Object> generateData(Object revisionData)
Specified by:
generateData in interface AuditWorkUnit
Parameters:
revisionData - The current revision data, which will be used to populate the work unit with the correct revision relation.
Returns:
Generates data that should be saved when performing this work unit.

perform

public void perform(Session session,
                    Object revisionData)
Description copied from interface: AuditWorkUnit
Perform this work unit in the given session.

Specified by:
perform in interface AuditWorkUnit
Overrides:
perform in class AbstractAuditWorkUnit
Parameters:
session - Session, in which the work unit should be performed.
revisionData - The current revision data, which will be used to populate the work unit with the correct revision relation.

getReferencingPropertyName

public String getReferencingPropertyName()

getCollectionChanges

public List<PersistentCollectionChangeData> getCollectionChanges()

merge

public AuditWorkUnit merge(AddWorkUnit second)
Specified by:
merge in interface WorkUnitMergeVisitor

merge

public AuditWorkUnit merge(ModWorkUnit second)
Specified by:
merge in interface WorkUnitMergeVisitor

merge

public AuditWorkUnit merge(DelWorkUnit second)
Specified by:
merge in interface WorkUnitMergeVisitor

merge

public AuditWorkUnit merge(CollectionChangeWorkUnit second)
Specified by:
merge in interface WorkUnitMergeVisitor

merge

public AuditWorkUnit merge(FakeBidirectionalRelationWorkUnit second)
Specified by:
merge in interface WorkUnitMergeVisitor

dispatch

public AuditWorkUnit dispatch(WorkUnitMergeVisitor first)
Description copied from interface: WorkUnitMergeDispatcher
Shuold be invoked on the second work unit.

Specified by:
dispatch in interface WorkUnitMergeDispatcher
Parameters:
first - First work unit (that is, the one added earlier).
Returns:
The work unit that is the result of the merge.


Copyright © 2001-2010 Red Hat, Inc. All Rights Reserved.