ref #7428: updateEditors method in AbstractUtility class
authorKatja Luther <k.luther@bgbm.org>
Thu, 14 Mar 2019 12:37:04 +0000 (13:37 +0100)
committerKatja Luther <k.luther@bgbm.org>
Thu, 14 Mar 2019 12:37:48 +0000 (13:37 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/model/AbstractUtility.java

index 4d98c2df8e0ce55aae7916dcb103a6665eb8ee7d..75373ad6ca6fe4c62aa6a2ed66871a8addb979c8 100644 (file)
@@ -61,11 +61,17 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.service.IProgressMonitorService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
 import eu.etaxonomy.cdm.io.common.ExportDataWrapper;
 import eu.etaxonomy.cdm.io.common.ExportResult;
 import eu.etaxonomy.cdm.io.common.ExportResultType;
 import eu.etaxonomy.cdm.io.common.ExportType;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
 import eu.etaxonomy.taxeditor.event.EventUtility;
 import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
 import eu.etaxonomy.taxeditor.operation.IFeedbackGenerator;
@@ -635,7 +641,7 @@ public abstract class AbstractUtility {
                     // collect reports
 //                         for(String report : remotingMonitor.getResult()) {
                     createResult(label, showResult, remotingMonitor);
-
+                    updateNameEditors(remotingMonitor);
                     return Status.OK_STATUS;
                 }
 
@@ -665,7 +671,7 @@ public abstract class AbstractUtility {
         }
 
 
-    private static void createResult(final String label, final boolean showResult,
+    public static void createResult(String label, boolean showResult,
             IRemotingProgressMonitor remotingMonitor) {
         final StringBuilder reportSb = new StringBuilder();
         if (remotingMonitor.getResult() instanceof ExportResult) {
@@ -789,4 +795,44 @@ public abstract class AbstractUtility {
             }
         }
     }
+    public static void updateNameEditors(IRemotingProgressMonitor remotingMonitor){
+        List<Taxon> taxaToUpdate = new ArrayList();
+        for (CdmBase object: ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects()){
+            Taxon taxon = null;
+            TaxonNode node = null;
+            if (object instanceof Taxon){
+                taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
+
+
+            }else if (object instanceof Synonym){
+                Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
+                taxon = syn.getAcceptedTaxon();
+            }
+            taxaToUpdate.add(taxon);
+        }
+
+        Display.getDefault().asyncExec(new Runnable() {
+              @Override
+              public void run() {
+                  EPartService partService = TaxeditorStorePlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EPartService.class);
+                  for (MPart part : partService.getParts()){
+                      Object object = part.getObject();
+                      boolean setFocus = false;
+//                      if (part == activePart){
+//                          setFocus = true;
+//                      }
+                      if (object instanceof ITaxonEditor){
+                          if (object != null ){
+                             ((ITaxonEditor)object).update();
+
+                          }
+                      }
+
+                  }
+              }
+        });
+
+    }
+
+
 }