ref #6190 removing svn property place holder in first line of code - java files
[taxeditor.git] / eu.etaxonomy.taxeditor.cdmlib / src / main / java / eu / etaxonomy / taxeditor / remoting / cache / CacheLoader.java
index ba31ba338cd0478f7148b4e04272517e1e17c5d7..e8e5180a19c54ea99291a874ab75a27ed0472f2c 100644 (file)
@@ -1,4 +1,3 @@
-// $Id$
 /**
  * Copyright (C) 2015 EDIT
  * European Distributed Institute of Taxonomy
@@ -22,8 +21,10 @@ import net.sf.ehcache.Element;
 import org.apache.log4j.Logger;
 import org.springframework.util.ReflectionUtils;
 
+import eu.etaxonomy.cdm.api.service.pager.Pager;
 import eu.etaxonomy.cdm.model.ICdmCacher;
 import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
 
 /**
  * @author cmathew
@@ -68,6 +69,11 @@ public class CacheLoader {
             return (T) load((Map<T,T>)obj, recursive, update);
         } else if (obj instanceof Collection) {
             return (T) load((Collection<T>)obj, recursive, update);
+        } else if(obj instanceof Pager) {
+               load(((Pager)obj).getRecords(), recursive, update);
+            return obj;
+        } else if(obj instanceof MergeResult) {
+            return (T) load((MergeResult<CdmBase>)obj, recursive, update);
         }
 
         return obj;
@@ -84,6 +90,8 @@ public class CacheLoader {
             return (T) load((Map<T,T>)obj, alreadyVisitedEntities, update);
         } else if (obj instanceof Collection) {
             return (T) load((Collection<T>)obj, alreadyVisitedEntities, update);
+        } else if (obj instanceof MergeResult) {
+            return (T) loadRecursive((MergeResult)obj, alreadyVisitedEntities, update);
         }
 
 
@@ -144,7 +152,7 @@ public class CacheLoader {
         return map;
     }
 
-    public <T extends Object> Collection<T> load(Collection<T> collection, boolean recursive, boolean update){
+    public <T extends Object> Collection<T> load(Collection<T> collection,  boolean recursive, boolean update){
 
         Collection<T> loadedCollection;
         if(isRecursiveEnabled && recursive) {
@@ -195,6 +203,18 @@ public class CacheLoader {
     }
 
 
+    public MergeResult<CdmBase> load(MergeResult<CdmBase> mergeResult, boolean recursive, boolean update) {
+        CdmBase cdmBase = load(mergeResult.getMergedEntity(), recursive, update);
+        load(mergeResult.getNewEntities(), recursive, update);
+        return new MergeResult(cdmBase, mergeResult.getNewEntities());
+    }
+
+    public MergeResult<CdmBase> loadRecursive(MergeResult<CdmBase> mergeResult,List<Object> alreadyVisitedEntities, boolean update) {
+        CdmBase cdmBase = loadRecursive(mergeResult.getMergedEntity(), alreadyVisitedEntities, update);
+        loadRecursive(mergeResult.getNewEntities(), alreadyVisitedEntities, update);
+        return new MergeResult(cdmBase, mergeResult.getNewEntities());
+    }
+
     /**
      * Puts the (Key,Value) pair of ({@link java.util.UUID}, {@link eu.etaxonomy.cdm.model.common.CdmBase}),
      * in the cache corresponding to the given cache id