#5256 Add missing recursive load for MergeResult lists, Add setting of dirty flag...
authorCherian Mathew <c.mathew@bgbm.org>
Wed, 21 Oct 2015 14:55:48 +0000 (16:55 +0200)
committerCherian Mathew <c.mathew@bgbm.org>
Wed, 21 Oct 2015 14:58:18 +0000 (16:58 +0200)
eu.etaxonomy.taxeditor.cdmlib/src/main/java/eu/etaxonomy/taxeditor/remoting/cache/CacheLoader.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveViewPart.java

index 79e4adc30c2595397a0fb07f3f723bde63a9126a..c99ce01b646bc73feed2bcbf36485ad9210d103b 100644 (file)
@@ -91,6 +91,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);
         }
 
 
@@ -208,6 +210,11 @@ public class CacheLoader {
         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}),
index 52fedd9b04960d13ab6ffd527757f956339ce945..3494cd6869b14468e21f31f0d6b6c660c3882db2 100644 (file)
@@ -66,6 +66,7 @@ import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
 import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
 import eu.etaxonomy.taxeditor.model.ImageResources;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.store.CdmStore;
 import eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart;
 import eu.etaxonomy.taxeditor.view.detail.DetailsViewPart;
 import eu.etaxonomy.taxeditor.view.supplementaldata.SupplementalDataViewPart;
@@ -339,8 +340,13 @@ public class DescriptiveViewPart extends AbstractCdmEditorViewPart implements IP
                }
                if(part instanceof BulkEditor && !(object instanceof SpecimenOrObservationBase<?>)){
                    ((BulkEditor) part).forceDirty();
+                   if(CdmStore.getCurrentSessionManager().isRemoting()) {
+                       IStructuredSelection selection = (IStructuredSelection) ((BulkEditor) part).getSelectionProvider().getSelection();
+                       ((BulkEditor) part).changed(selection.getFirstElement());
+                   }
                }
 
+
                super.changed(object);
        }