org.granite.client.tide.data
Interface EntityManager

All Known Implementing Classes:
EntityManagerImpl

public interface EntityManager

EntityManager is the interface for entity management (!) It is implemented by the Tide context

Author:
William DRAI

Nested Class Summary
static interface EntityManager.Function
           
static interface EntityManager.Propagation
           
static interface EntityManager.PropagationPolicy
           
static class EntityManager.Update
           
static class EntityManager.UpdateKind
           
 
Method Summary
 void acceptConflict(Conflict conflict, boolean acceptClient)
          Accept values for conflict
 void addListener(DataConflictListener listener)
           
 void addReference(Object entity, Object parent, String propName, org.granite.tide.Expression expr)
          Register a reference to the provided object with either a parent or res
 void clear()
          Clear the current context Destroys all components/context variables
 void clearCache()
          Clear entity cache
 Object getCachedObject(Object object, boolean nullIfAbsent)
           
 DataManager getDataManager()
           
 Object getEntityProperty(Identifiable entity, String propName, Object value)
          Intercept a property getter
 String getId()
          Return the entity manager id
 Object[] getOwnerEntity(Object object)
           
 org.granite.tide.Expression getReference(Object entity, boolean recurse, Set<Object> cache)
          Retrieves context expression path for the specified entity (internal implementation)
 Map<String,Object> getSavedProperties(Object entity)
          Current map of saved properties for the specified entity
 void handleUpdates(MergeContext mergeContext, String sourceSessionId, List<EntityManager.Update> updates)
           
 boolean initializeObject(ServerSession serverSession, Object object)
          Trigger remote initialization of lazy-loaded objects
 MergeContext initMerge()
           
 boolean isActive()
          Return the entity manager state
 boolean isDeepDirtyEntity(Object entity)
          Entity is deep dirty when any element in its object graph has been modified
 boolean isDirty()
          Entity manager is dirty when any entity/collection/map has been modified
 boolean isSaved(Object entity)
          Indicates if the entity is persisted on the server (id/version not null/NaN)
 boolean isUninitializeAllowed()
           
 Object mergeExternal(MergeContext mergeContext, Object obj, Object previous, org.granite.tide.Expression expr, Object parent, String propertyName, String setter, boolean forceUpdate)
           
 Object mergeExternalData(Object obj)
          Merge an object coming from a remote location (in general from a service) in the local context
 Object mergeExternalData(Object obj, Object prev, String externalDataSessionId, List<Object> removals, List<Object> persists)
          Merge an object coming from a remote location (in general from a service) in the local context
 Object mergeExternalData(ServerSession serverSession, Object obj)
          Merge an object coming from a remote location (in general from a service) in the local context
 Object mergeExternalData(ServerSession serverSession, Object obj, Object prev, String externalDataSessionId, List<Object> removals, List<Object> persists)
          Merge an object coming from a remote location (in general from a service) in the local context
 Object mergeFromEntityManager(EntityManager sourceEntityManager, Object obj, String externalDataSessionId, boolean uninitializing)
           
 void mergeInEntityManager(EntityManager entityManager)
          Merge conversation entity manager context variables in global entity manager Only applicable to conversation contexts
 EntityManager newTemporaryEntityManager()
          Create a new temporary entity manager
 void raiseUpdateEvents(Context context, List<EntityManager.Update> updates)
           
 void removeListener(DataConflictListener listener)
           
 boolean removeReference(Object entity, Object parent, String propName, org.granite.tide.Expression exp)
          Remove a reference on the provided object
 void resetAllEntities()
          Discard changes of all cached entities from last version received from the server
 void resetEntity(Identifiable entity)
          Discard changes of entity from last version received from the server
 void setEntityManagerPropagation(EntityManager.Propagation propagation)
          Setter for the propagation manager
 void setEntityProperty(Identifiable entity, String propName, Object oldValue, Object newValue)
          Intercept a property setter
 void setRemoteInitializer(RemoteInitializer remoteInitializer)
          Setter for the remote initializer implementation
 void setRemoteValidator(RemoteValidator remoteValidator)
          Setter for the remote validator implementation
 void setUninitializeAllowed(boolean allowed)
          Allow uninitialize of persistent collections
 boolean validateObject(Object object, String property, Object value)
          Trigger remote validation of objects
 

Method Detail

getId

String getId()
Return the entity manager id

Returns:
the entity manager id

isActive

boolean isActive()
Return the entity manager state

Returns:
the entity manager state

clearCache

void clearCache()
Clear entity cache


clear

void clear()
Clear the current context Destroys all components/context variables


getDataManager

DataManager getDataManager()

setUninitializeAllowed

void setUninitializeAllowed(boolean allowed)
Allow uninitialize of persistent collections

Parameters:
allowed - allow uninitialize of collections

isUninitializeAllowed

boolean isUninitializeAllowed()
Returns:
allow uninitialize of collections

setEntityManagerPropagation

void setEntityManagerPropagation(EntityManager.Propagation propagation)
Setter for the propagation manager

Parameters:
propagation - propagation function that will visit child entity managers

setRemoteInitializer

void setRemoteInitializer(RemoteInitializer remoteInitializer)
Setter for the remote initializer implementation

Parameters:
remoteInitializer - instance of IRemoteInitializer

setRemoteValidator

void setRemoteValidator(RemoteValidator remoteValidator)
Setter for the remote validator implementation

Parameters:
remoteValidator - instance of IRemoteValidator

newTemporaryEntityManager

EntityManager newTemporaryEntityManager()
Create a new temporary entity manager

Returns:
a temporary entity manager

getEntityProperty

Object getEntityProperty(Identifiable entity,
                         String propName,
                         Object value)
Intercept a property getter

Parameters:
entity - intercepted entity
propName - intercepted property name
value - current value

setEntityProperty

void setEntityProperty(Identifiable entity,
                       String propName,
                       Object oldValue,
                       Object newValue)
Intercept a property setter

Parameters:
entity - intercepted entity
propName - intercepted property name
oldValue - old value
newValue - new value

addReference

void addReference(Object entity,
                  Object parent,
                  String propName,
                  org.granite.tide.Expression expr)
Register a reference to the provided object with either a parent or res

Parameters:
entity - an entity
parent - the parent entity
propName - name of the parent entity property that references the entity
res - the context expression

removeReference

boolean removeReference(Object entity,
                        Object parent,
                        String propName,
                        org.granite.tide.Expression exp)
Remove a reference on the provided object

Parameters:
obj - an entity
parent - the parent entity to dereference
propName - name of the parent entity property that references the entity
res - expression to remove

getReference

org.granite.tide.Expression getReference(Object entity,
                                         boolean recurse,
                                         Set<Object> cache)
Retrieves context expression path for the specified entity (internal implementation)

Parameters:
obj - an entity
recurse - should recurse until 'real' context path, otherwise object reference can be returned
cache - graph visitor cache
Returns:
the path from the entity context (or null is no path found)

isDirty

boolean isDirty()
Entity manager is dirty when any entity/collection/map has been modified

Returns:
is dirty

isDeepDirtyEntity

boolean isDeepDirtyEntity(Object entity)
Entity is deep dirty when any element in its object graph has been modified

Parameters:
entity - root of the entity graph
Returns:
is dirty

isSaved

boolean isSaved(Object entity)
Indicates if the entity is persisted on the server (id/version not null/NaN)

Parameters:
entity - an entity
Returns:
true if saved

getCachedObject

Object getCachedObject(Object object,
                       boolean nullIfAbsent)
Parameters:
object - an entity
nullIfAbsent - return null if entity not cached in context

getOwnerEntity

Object[] getOwnerEntity(Object object)

initMerge

MergeContext initMerge()

mergeExternal

Object mergeExternal(MergeContext mergeContext,
                     Object obj,
                     Object previous,
                     org.granite.tide.Expression expr,
                     Object parent,
                     String propertyName,
                     String setter,
                     boolean forceUpdate)

mergeExternalData

Object mergeExternalData(Object obj,
                         Object prev,
                         String externalDataSessionId,
                         List<Object> removals,
                         List<Object> persists)
Merge an object coming from a remote location (in general from a service) in the local context

Parameters:
obj - external object
prev - existing local object to merge with
externalDataSessionId - sessionId from which the data is coming (other user/server), null if local or current user session
removals - array of entities to remove from the entity manager cache
Returns:
merged object (should === previous when previous not null)

mergeExternalData

Object mergeExternalData(ServerSession serverSession,
                         Object obj)
Merge an object coming from a remote location (in general from a service) in the local context

Parameters:
obj - external object
Returns:
merged object

mergeExternalData

Object mergeExternalData(ServerSession serverSession,
                         Object obj,
                         Object prev,
                         String externalDataSessionId,
                         List<Object> removals,
                         List<Object> persists)
Merge an object coming from a remote location (in general from a service) in the local context

Parameters:
obj - external object
prev - existing local object to merge with
externalDataSessionId - sessionId from which the data is coming (other user/server), null if local or current user session
removals - array of entities to remove from the entity manager cache
Returns:
merged object (should === previous when previous not null)

mergeExternalData

Object mergeExternalData(Object obj)
Merge an object coming from a remote location (in general from a service) in the local context

Parameters:
obj - external object
Returns:
merged object

mergeFromEntityManager

Object mergeFromEntityManager(EntityManager sourceEntityManager,
                              Object obj,
                              String externalDataSessionId,
                              boolean uninitializing)
Parameters:
sourceEntityManager - source context of incoming data
obj - external object
externalDataSessionId - is merge from external data
Returns:
merged object (should === previous when previous not null)

mergeInEntityManager

void mergeInEntityManager(EntityManager entityManager)
Merge conversation entity manager context variables in global entity manager Only applicable to conversation contexts

Parameters:
entityManager - conversation entity manager

resetEntity

void resetEntity(Identifiable entity)
Discard changes of entity from last version received from the server

Parameters:
entity - entity to restore
cache - reset cache

resetAllEntities

void resetAllEntities()
Discard changes of all cached entities from last version received from the server

Parameters:
cache - reset cache

getSavedProperties

Map<String,Object> getSavedProperties(Object entity)
Current map of saved properties for the specified entity

Parameters:
entity - an entity
Returns:
saved properties for this entity

handleUpdates

void handleUpdates(MergeContext mergeContext,
                   String sourceSessionId,
                   List<EntityManager.Update> updates)
Parameters:
sourceSessionId - sessionId from which data updates come (null when from current session)
updates - list of data updates

raiseUpdateEvents

void raiseUpdateEvents(Context context,
                       List<EntityManager.Update> updates)

addListener

void addListener(DataConflictListener listener)

removeListener

void removeListener(DataConflictListener listener)

acceptConflict

void acceptConflict(Conflict conflict,
                    boolean acceptClient)
Accept values for conflict

Parameters:
conflict - conflict
acceptClient - true: keep client changes, false: override with server changes

initializeObject

boolean initializeObject(ServerSession serverSession,
                         Object object)
Trigger remote initialization of lazy-loaded objects

Parameters:
object - a lazy-loaded object
Returns:
true if initialization triggered

validateObject

boolean validateObject(Object object,
                       String property,
                       Object value)
Trigger remote validation of objects

Parameters:
object - a lazy-loaded object
Returns:
true if validation triggered