org.granite.client.tide.data.impl
Class DirtyCheckContextImpl

java.lang.Object
  extended by org.granite.client.tide.data.impl.DirtyCheckContextImpl
All Implemented Interfaces:
DirtyCheckContext

public class DirtyCheckContextImpl
extends Object
implements DirtyCheckContext

Author:
William DRAI

Nested Class Summary
static class DirtyCheckContextImpl.Change
           
 
Constructor Summary
DirtyCheckContextImpl(DataManager dataManager, TrackingContext trackingContext)
           
 
Method Summary
 void addUnsaved(Identifiable entity)
           
 boolean checkAndMarkNotDirty(MergeContext mergeContext, Object entity, Object source, Object parent)
           
 void clear(boolean notify)
           
 void entityCollectionChangeHandler(Object owner, String propName, Collection<?> coll, DataManager.ChangeKind kind, Integer location, Object[] items)
           
 void entityMapChangeHandler(Object owner, String propName, Map<?,?> map, DataManager.ChangeKind kind, Object[] items)
           
 void entityPropertyChangeHandler(Object entity, Object object, String propName, Object oldValue, Object newValue)
           
 void fixRemovalsAndPersists(MergeContext mergeContext, List<Object> removals, List<Object> persists)
           
 Map<String,Object> getSavedProperties(Object entity)
           
 boolean isDirty()
           
 boolean isEmpty(Object val)
           
 boolean isEntityChanged(Object entity)
           
 boolean isEntityChanged(Object entity, Object embedded, String propName, Object value)
          Check if entity has changed since last save point
 boolean isEntityDeepChanged(Object entity)
           
 boolean isEntityPropertyChanged(Identifiable entity, String propertyName, Object value)
          Check if entity property has been changed since last remote call
 boolean isSaved(Object entity)
           
 boolean isUnsaved(Object object)
          Check if the object is marked as new in the context
 void markNotDirty(Object object, Identifiable entity)
           
 void notifyDirtyChange(boolean oldDirty)
           
 boolean notifyEntityDirtyChange(Object entity, boolean oldDirtyEntity)
           
 void resetAllEntities(MergeContext mergeContext, Set<Object> cache)
           
 void resetEntity(MergeContext mergeContext, Object entity, Identifiable parent, Set<Object> cache)
           
 void setTrackingContext(TrackingContext trackingContext)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DirtyCheckContextImpl

public DirtyCheckContextImpl(DataManager dataManager,
                             TrackingContext trackingContext)
Method Detail

setTrackingContext

public void setTrackingContext(TrackingContext trackingContext)
Specified by:
setTrackingContext in interface DirtyCheckContext

isDirty

public boolean isDirty()

notifyDirtyChange

public void notifyDirtyChange(boolean oldDirty)

notifyEntityDirtyChange

public boolean notifyEntityDirtyChange(Object entity,
                                       boolean oldDirtyEntity)

getSavedProperties

public Map<String,Object> getSavedProperties(Object entity)
Specified by:
getSavedProperties in interface DirtyCheckContext

isSaved

public boolean isSaved(Object entity)

isUnsaved

public boolean isUnsaved(Object object)
Check if the object is marked as new in the context

Specified by:
isUnsaved in interface DirtyCheckContext
Parameters:
object - object to check
Returns:
true if the object has been newly attached

addUnsaved

public void addUnsaved(Identifiable entity)
Specified by:
addUnsaved in interface DirtyCheckContext

clear

public void clear(boolean notify)
Specified by:
clear in interface DirtyCheckContext

isEntityPropertyChanged

public boolean isEntityPropertyChanged(Identifiable entity,
                                       String propertyName,
                                       Object value)
Check if entity property has been changed since last remote call

Parameters:
entity - entity to check
propertyName - property to check
value - current value to compare with saved value
Returns:
true is value has been changed

isEntityChanged

public boolean isEntityChanged(Object entity)
Specified by:
isEntityChanged in interface DirtyCheckContext

isEntityChanged

public boolean isEntityChanged(Object entity,
                               Object embedded,
                               String propName,
                               Object value)
Check if entity has changed since last save point

Parameters:
entity - entity to check
propName - property name
value -
Returns:
entity is dirty

isEntityDeepChanged

public boolean isEntityDeepChanged(Object entity)
Specified by:
isEntityDeepChanged in interface DirtyCheckContext

entityPropertyChangeHandler

public void entityPropertyChangeHandler(Object entity,
                                        Object object,
                                        String propName,
                                        Object oldValue,
                                        Object newValue)
Specified by:
entityPropertyChangeHandler in interface DirtyCheckContext
Parameters:
entity - entity to intercept
propName - property name
oldValue - old value
newValue - new value

entityCollectionChangeHandler

public void entityCollectionChangeHandler(Object owner,
                                          String propName,
                                          Collection<?> coll,
                                          DataManager.ChangeKind kind,
                                          Integer location,
                                          Object[] items)
Specified by:
entityCollectionChangeHandler in interface DirtyCheckContext
Parameters:
owner - owner entity of the collection
propName - property name of the collection
event - collection event

entityMapChangeHandler

public void entityMapChangeHandler(Object owner,
                                   String propName,
                                   Map<?,?> map,
                                   DataManager.ChangeKind kind,
                                   Object[] items)
Specified by:
entityMapChangeHandler in interface DirtyCheckContext
Parameters:
owner - owner entity of the collection
propName - property name of the collection
event - map event

markNotDirty

public void markNotDirty(Object object,
                         Identifiable entity)
Specified by:
markNotDirty in interface DirtyCheckContext
Parameters:
object - merged object

checkAndMarkNotDirty

public boolean checkAndMarkNotDirty(MergeContext mergeContext,
                                    Object entity,
                                    Object source,
                                    Object parent)
Specified by:
checkAndMarkNotDirty in interface DirtyCheckContext
Parameters:
entity - merged entity
source - source entity
owner - owner entity for embedded objects
Returns:
true if the entity is still dirty after comparing with incoming object

fixRemovalsAndPersists

public void fixRemovalsAndPersists(MergeContext mergeContext,
                                   List<Object> removals,
                                   List<Object> persists)
Specified by:
fixRemovalsAndPersists in interface DirtyCheckContext

resetEntity

public void resetEntity(MergeContext mergeContext,
                        Object entity,
                        Identifiable parent,
                        Set<Object> cache)
Specified by:
resetEntity in interface DirtyCheckContext

resetAllEntities

public void resetAllEntities(MergeContext mergeContext,
                             Set<Object> cache)
Specified by:
resetAllEntities in interface DirtyCheckContext

isEmpty

public boolean isEmpty(Object val)
Returns:
value is empty