|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.granite.client.tide.data.impl.EntityManagerImpl
public class EntityManagerImpl
| Nested Class Summary | |
|---|---|
class |
EntityManagerImpl.DefaultTrackingHandler
|
| Nested classes/interfaces inherited from interface org.granite.client.tide.data.EntityManager |
|---|
EntityManager.Function, EntityManager.Propagation, EntityManager.PropagationPolicy, EntityManager.Update, EntityManager.UpdateKind |
| Constructor Summary | |
|---|---|
EntityManagerImpl(String id,
DataManager dataManager,
TrackingContext trackingContext,
ExpressionEvaluator expressionEvaluator)
|
|
| Method Summary | |
|---|---|
void |
acceptConflict(Conflict conflict,
boolean client)
|
void |
addListener(DataConflictListener listener)
|
void |
addReference(Object obj,
Object parent,
String propName,
org.granite.tide.Expression res)
Registers a reference to the provided object with either a parent or res |
void |
attachEntity(Identifiable entity)
|
void |
attachEntity(Identifiable entity,
boolean putInCache)
|
void |
clear()
Clear the current context Destroys all components/context variables |
void |
clearCache()
Clears entity cache |
void |
defaultMerge(MergeContext mergeContext,
Object obj,
Object dest,
org.granite.tide.Expression expr,
Object parent,
String propertyName)
Default implementation of entity merge for simple ActionScript beans with public properties Can be used to implement Tide managed entities with simple objects |
void |
detach(Object object,
IdentityHashMap<Object,Object> cache,
boolean forceRemove)
|
void |
detachEntity(Identifiable entity,
boolean removeFromCache,
boolean forceRemove)
|
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 |
List<Object[]> |
getOwnerEntities(Object object)
|
Object[] |
getOwnerEntity(Object object)
|
org.granite.tide.Expression |
getReference(Object obj,
boolean recurse,
Set<Object> cache)
|
Map<String,Object> |
getSavedProperties(Object entity)
Current map of saved properties for the specified entity |
void |
handleMergeConflicts(MergeContext mergeContext)
Dispatch an event when last merge generated conflicts |
void |
handleRemovalsAndPersists(MergeContext mergeContext,
List<Object> removals,
List<Object> persists)
Remove elements from cache and managed collections |
void |
handleUpdates(MergeContext mergeContext,
String sourceSessionId,
List<EntityManager.Update> updates)
|
boolean |
initializeObject(ServerSession serverSession,
Object object)
|
MergeContext |
initMerge()
|
Object |
internalMergeExternalData(MergeContext mergeContext,
Object obj,
Object prev,
List<Object> removals,
List<Object> persists)
|
boolean |
isActive()
|
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 |
isEntityChanged(Identifiable entity)
|
boolean |
isEntityDeepChanged(Identifiable entity)
|
boolean |
isSaved(Identifiable entity)
|
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)
Merge an object coming from the server in the context |
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 |
protected Object |
mergePersistentCollection(MergeContext mergeContext,
LazyableCollection coll,
Object previous,
org.granite.tide.Expression expr,
Identifiable parent,
String propertyName)
|
EntityManager |
newTemporaryEntityManager()
Create a new temporary entity manager |
void |
raiseUpdateEvents(Context context,
List<EntityManager.Update> updates)
|
void |
removeListener(DataConflictListener listener)
|
boolean |
removeReference(Object obj,
Object parent,
String propName,
org.granite.tide.Expression res)
Removes 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 |
resolveMergeConflicts(MergeContext mergeContext,
Object modifiedEntity,
Object localEntity,
boolean resolving)
Resolve merge conflicts |
void |
setActive(boolean active)
Setter for active flag When EntityManager is not active, dirty checking is disabled |
void |
setCustomMergers(DataMerger[] customMergers)
Setter for the array of custom mergers |
void |
setDirtyCheckContext(DirtyCheckContext dirtyCheckContext)
Setter for dirty check context implementation |
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 uninitializeAllowed)
Allow uninitialize of persistent collections |
boolean |
validateObject(Object object,
String property,
Object value)
Trigger remote validation of objects |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public EntityManagerImpl(String id,
DataManager dataManager,
TrackingContext trackingContext,
ExpressionEvaluator expressionEvaluator)
| Method Detail |
|---|
public String getId()
getId in interface EntityManagerpublic boolean isActive()
isActive in interface EntityManagerpublic void clear()
clear in interface EntityManagerpublic void clearCache()
clearCache in interface EntityManagerpublic DataManager getDataManager()
getDataManager in interface EntityManagerpublic void setCustomMergers(DataMerger[] customMergers)
customMergers - array of mergerspublic void setUninitializeAllowed(boolean uninitializeAllowed)
EntityManager
setUninitializeAllowed in interface EntityManageruninitializeAllowed - allow uninitialize of collectionspublic boolean isUninitializeAllowed()
isUninitializeAllowed in interface EntityManagerpublic void setEntityManagerPropagation(EntityManager.Propagation propagation)
setEntityManagerPropagation in interface EntityManagerpropagation - propagation function that will visit child entity managerspublic void setActive(boolean active)
active - statepublic void setDirtyCheckContext(DirtyCheckContext dirtyCheckContext)
dirtyCheckContext - dirty check context implementationpublic EntityManager newTemporaryEntityManager()
newTemporaryEntityManager in interface EntityManagerpublic void attachEntity(Identifiable entity)
entity - an entity
public void attachEntity(Identifiable entity,
boolean putInCache)
entity - an entityputInCache - put entity in cache
public void detachEntity(Identifiable entity,
boolean removeFromCache,
boolean forceRemove)
entity - an entityremoveFromCache - remove entity from cachepublic boolean isSaved(Identifiable entity)
public void detach(Object object,
IdentityHashMap<Object,Object> cache,
boolean forceRemove)
object - objectcache - internal cache to avoid graph loops
public Object getCachedObject(Object object,
boolean nullIfAbsent)
getCachedObject in interface EntityManagerobject - an entitynullIfAbsent - return null if entity not cached in contextpublic Object[] getOwnerEntity(Object object)
getOwnerEntity in interface EntityManagerobject - an entitypublic List<Object[]> getOwnerEntities(Object object)
object - an entity
public org.granite.tide.Expression getReference(Object obj,
boolean recurse,
Set<Object> cache)
getReference in interface EntityManagerrecurse - should recurse until 'real' context path, otherwise object reference can be returnedcache - graph visitor cache
public void addReference(Object obj,
Object parent,
String propName,
org.granite.tide.Expression res)
addReference in interface EntityManagerobj - an entityparent - the parent entitypropName - name of the parent entity property that references the entityres - the context expression
public boolean removeReference(Object obj,
Object parent,
String propName,
org.granite.tide.Expression res)
removeReference in interface EntityManagerobj - an entityparent - the parent entity to dereferencepropName - name of the parent entity property that references the entityres - expression to removepublic MergeContext initMerge()
initMerge in interface EntityManager
public Object mergeExternal(MergeContext mergeContext,
Object obj,
Object previous,
org.granite.tide.Expression expr,
Object parent,
String propertyName,
String setter,
boolean forceUpdate)
mergeExternal in interface EntityManagerobj - external objectprevious - previously existing object in the context (null if no existing object)expr - current path from the contextparent - parent object for collectionspropertyName - property name of the current object in the parent objectsetter - setter function to update the private propertyforceUpdate - force update of property (used for externalized properties)
protected Object mergePersistentCollection(MergeContext mergeContext,
LazyableCollection coll,
Object previous,
org.granite.tide.Expression expr,
Identifiable parent,
String propertyName)
coll - the collection to wrapprevious - the previous existing collectionexpr - the path expression from the contextparent - the owner objectpropertyName - owner property
public Object mergeFromEntityManager(EntityManager sourceEntityManager,
Object obj,
String externalDataSessionId,
boolean uninitializing)
mergeFromEntityManager in interface EntityManagersourceEntityManager - source context of incoming dataobj - external objectexternalDataSessionId - is merge from external datauninitializing - true to force folding of loaded lazy associations
public Object mergeExternalData(Object obj)
EntityManager
mergeExternalData in interface EntityManagerobj - external object
public Object mergeExternalData(ServerSession serverSession,
Object obj)
EntityManager
mergeExternalData in interface EntityManagerobj - external object
public Object mergeExternalData(Object obj,
Object prev,
String externalDataSessionId,
List<Object> removals,
List<Object> persists)
EntityManager
mergeExternalData in interface EntityManagerobj - external objectprev - existing local object to merge withexternalDataSessionId - sessionId from which the data is coming (other user/server), null if local or current user sessionremovals - array of entities to remove from the entity manager cache
public Object mergeExternalData(ServerSession serverSession,
Object obj,
Object prev,
String externalDataSessionId,
List<Object> removals,
List<Object> persists)
EntityManager
mergeExternalData in interface EntityManagerobj - external objectprev - existing local object to merge withexternalDataSessionId - sessionId from which the data is coming (other user/server), null if local or current user sessionremovals - array of entities to remove from the entity manager cache
public Object internalMergeExternalData(MergeContext mergeContext,
Object obj,
Object prev,
List<Object> removals,
List<Object> persists)
obj - external objectprev - existing local object to merge withexternalDataSessionId - sessionId from which the data is coming (other user/server), null if local or current user sessionremovals - array of entities to remove from the entity manager cache
public void mergeInEntityManager(EntityManager entityManager)
mergeInEntityManager in interface EntityManagerentityManager - conversation entity managerpublic boolean isDirty()
EntityManager
isDirty in interface EntityManagerpublic boolean isDeepDirtyEntity(Object entity)
EntityManager
isDeepDirtyEntity in interface EntityManagerentity - root of the entity graph
public boolean isSaved(Object entity)
EntityManager
isSaved in interface EntityManagerentity - an entity
public void handleRemovalsAndPersists(MergeContext mergeContext,
List<Object> removals,
List<Object> persists)
removals - array of entity instances to remove from the entity manager cachepublic void addListener(DataConflictListener listener)
addListener in interface EntityManagerpublic void removeListener(DataConflictListener listener)
removeListener in interface EntityManagerpublic void handleMergeConflicts(MergeContext mergeContext)
public void resolveMergeConflicts(MergeContext mergeContext,
Object modifiedEntity,
Object localEntity,
boolean resolving)
modifiedEntity - the received entitylocalEntity - the locally cached entityresolving - true to keep client statepublic Map<String,Object> getSavedProperties(Object entity)
getSavedProperties in interface EntityManagerentity - an entity
public void defaultMerge(MergeContext mergeContext,
Object obj,
Object dest,
org.granite.tide.Expression expr,
Object parent,
String propertyName)
em - the contextobj - source objectdest - destination objectexpr - current path of the entity in the context (mostly for internal use)parent - owning objectpropertyName - property name of the owning objectpublic boolean isEntityChanged(Identifiable entity)
public boolean isEntityDeepChanged(Identifiable entity)
public void resetEntity(Identifiable entity)
resetEntity in interface EntityManagerentity - entity to restorepublic void resetAllEntities()
resetAllEntities in interface EntityManagercache - reset cache
public void acceptConflict(Conflict conflict,
boolean client)
acceptConflict in interface EntityManagerconflict - conflictclient - true: keep client changes, false: override with server changespublic void setRemoteInitializer(RemoteInitializer remoteInitializer)
EntityManager
setRemoteInitializer in interface EntityManagerremoteInitializer - instance of IRemoteInitializer
public boolean initializeObject(ServerSession serverSession,
Object object)
initializeObject in interface EntityManagerobject - a lazy-loaded object
public void setEntityProperty(Identifiable entity,
String propName,
Object oldValue,
Object newValue)
EntityManager
setEntityProperty in interface EntityManagerentity - entity to interceptpropName - property nameoldValue - old valuenewValue - new value
public Object getEntityProperty(Identifiable entity,
String propName,
Object value)
EntityManager
getEntityProperty in interface EntityManagerentity - entity to interceptpropName - property namevalue - value
public void handleUpdates(MergeContext mergeContext,
String sourceSessionId,
List<EntityManager.Update> updates)
handleUpdates in interface EntityManagersourceSessionId - sessionId from which data updates come (null when from current session)updates - list of data updates
public void raiseUpdateEvents(Context context,
List<EntityManager.Update> updates)
raiseUpdateEvents in interface EntityManagerpublic void setRemoteValidator(RemoteValidator remoteValidator)
EntityManager
setRemoteValidator in interface EntityManagerremoteValidator - instance of IRemoteValidator
public boolean validateObject(Object object,
String property,
Object value)
EntityManager
validateObject in interface EntityManagerobject - a lazy-loaded object
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||