fix #7065: update the nameEditors also after update publish flag
authorKatja Luther <k.luther@bgbm.org>
Wed, 10 Jan 2018 09:49:47 +0000 (10:49 +0100)
committerKatja Luther <k.luther@bgbm.org>
Wed, 10 Jan 2018 09:52:05 +0000 (10:52 +0100)
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/e4/handler/SetPublishFlagForSubtreeHandlerE4.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/SetPublishForSubtreeOperation.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/SetSecundumForSubtreeOperation.java
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/UpdateSubtreeOperation.java [new file with mode: 0644]

index 6cab818a803efc59088e681a17699b8542f012b5..402a75ce0366ae25d48abaf46379d5786f01e0c2 100755 (executable)
@@ -9,15 +9,19 @@
 */
 package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
 
+import java.util.UUID;
+
 import javax.inject.Named;
 
 import org.eclipse.core.commands.operations.AbstractOperation;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.ui.model.application.MApplication;
 import org.eclipse.e4.ui.model.application.ui.basic.MPart;
 import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
 import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.window.Window;
@@ -118,6 +122,9 @@ public class SetPublishFlagForSubtreeHandlerE4 extends RemotingCdmHandlerE4 {
                 new SetPublishForSubtreeOperation(getTrigger(),
                         false,
                         taxonNode.getUuid(),
+                        partService,
+                        activePart,
+                        application,
                         configurator);
 
         return operation;
index 3b3b2af3a5f9cc0d56a6e3a2bea31e0d507a22e7..dbcf26e6d36771817f5c884188f18f69d3233039 100755 (executable)
@@ -18,6 +18,9 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.progress.IProgressConstants;
 
@@ -26,6 +29,7 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
+import eu.etaxonomy.cdm.api.service.config.ForSubtreeConfiguratorBase;
 import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
 import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
 import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
@@ -35,13 +39,12 @@ import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
  * @date 11.10.2017
  *
  */
-public class SetPublishForSubtreeOperation extends RemotingCdmUpdateOperation {
+public class SetPublishForSubtreeOperation extends UpdateSubtreeOperation {
 
     private final static String LABEL = Messages.SetPublishForSubtreeOperation_CHANGE_PUBLISH_OP;
     private static final Logger logger = Logger
             .getLogger(SetPublishForSubtreeOperation.class);
-    UUID parentUuid;
-    PublishForSubtreeConfigurator config;
+   
 
     /**
      * @param label
@@ -52,27 +55,14 @@ public class SetPublishForSubtreeOperation extends RemotingCdmUpdateOperation {
     public SetPublishForSubtreeOperation(Object source,
             boolean async,
             UUID taxonNodeUuid,
+            EPartService partService,
+            MPart activePart,
+            MApplication application,
             PublishForSubtreeConfigurator config) {
-        super(LABEL, Action.Update, source, async);
-        parentUuid = taxonNodeUuid;
-        this.config = config;
-        this.updateResult = new UpdateResult();
+        super(source, async, taxonNodeUuid, partService, activePart, application, config, LABEL);
+        
     }
-
-
-//    /* (non-Javadoc)
-//     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation#doUpdateExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
-//     */
-//    @Override
-//    protected UpdateResult doUpdateExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
-//        ITaxonNodeService taxonService = CdmApplicationState.getService(ITaxonNodeService.class);
-////      taxonService.setSecundumForSubtree(config.getSubtreeUuid(), config.getNewSecundum(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isOverwriteExistingAccepted(), config.isOverwriteExistingSynonyms(), config.isIncludeSharedTaxa(), config.isEmptySecundumDetail(), null);
-//        eu.etaxonomy.cdm.common.monitor.IProgressMonitor cdmMonitor =  CdmProgressMonitorAdapter.CreateMonitor(monitor);
-//        updateResult = taxonService.setPublishForSubtree(config.getSubtreeUuid(), config.isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
-//        return updateResult;
-//    }
-
-    @Override
+  @Override
     protected UpdateResult doUpdateExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
 //        runMoniteredOperation();
 
@@ -94,7 +84,7 @@ public class SetPublishForSubtreeOperation extends RemotingCdmUpdateOperation {
 
         final Display display = Display.getDefault();
 
-        Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
+        Job job = new Job(Messages.SetPublishFlagForSubtreeOperation_SET_SEC_TASK) {
 
 
             @Override
@@ -102,8 +92,13 @@ public class SetPublishForSubtreeOperation extends RemotingCdmUpdateOperation {
 
                 try {
                     ITaxonNodeService taxonService = CdmApplicationState.getService(ITaxonNodeService.class);
-                    updateResult =  taxonService.setPublishForSubtree(config.getSubtreeUuid(), config.isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
-
+                    
+                    if (config instanceof PublishForSubtreeConfigurator){
+                       updateResult =  taxonService.setPublishForSubtree(config.getSubtreeUuid(), ((PublishForSubtreeConfigurator)config).isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
+                    }else {
+                       return Status.CANCEL_STATUS;
+                    }
+                    updateNameEditors();
                 } catch (CdmApplicationException e) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
index d65d1cd972d278f1e56283a3ab044f9cd5151f0f..9e03e011e0ee943152f398a7c587939378d327aa 100755 (executable)
@@ -33,6 +33,7 @@ import eu.etaxonomy.cdm.api.application.CdmApplicationState;
 import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
+import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
 import eu.etaxonomy.cdm.api.service.config.SecundumForSubtreeConfigurator;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
@@ -47,48 +48,29 @@ import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
 import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
 import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
+import eu.etaxonomy.taxeditor.ui.dialog.configurator.SetSecundumForSubtreeConfigurationWizard;
 
 /**
  * @author k.luther
  * @date 10.02.2017
  *
  */
-public class SetSecundumForSubtreeOperation extends RemotingCdmUpdateOperation implements IPostMoniteredOperationEnabled{
-
-    private final static String LABEL = Messages.SetSecundumForSubtreeOperation_CHANGE_SEC_OP;
+public class SetSecundumForSubtreeOperation extends UpdateSubtreeOperation implements IPostMoniteredOperationEnabled{
+       
+       private final static String LABEL = Messages.SetSecundumForSubtreeOperation_CHANGE_SEC_OP;
     private static final Logger logger = Logger
             .getLogger(SetSecundumForSubtreeOperation.class);
-    UUID parentUuid;
-    SecundumForSubtreeConfigurator config;
-    EPartService partService;
-    MPart activePart;
-    MApplication application;
-    
+
     @Inject 
     UISynchronize sync;
 
-    /**
-     * @param label
-     * @param action
-     * @param source
-     * @param async
-     */
-    public SetSecundumForSubtreeOperation(Object source,
-            boolean async,
-            UUID taxonNodeUuid,
-            EPartService partService,
-            MPart activePart,
-            MApplication application,
-            SecundumForSubtreeConfigurator config) {
-        super(LABEL, Action.Update, source, async);
-        parentUuid = taxonNodeUuid;
-        this.config = config;
-        this.updateResult = new UpdateResult();
-        this.partService= partService;
-        this.activePart = activePart;
-        this.application = application;
-    }
-   
+       
+    public SetSecundumForSubtreeOperation(Object source, boolean async, UUID taxonNodeUuid, EPartService partService,
+                       MPart activePart, MApplication application, SecundumForSubtreeConfigurator config) {
+               super(source, async, taxonNodeUuid, partService, activePart, application, config, LABEL);
+               
+       }
     /**
      * {@inheritDoc}
      */
@@ -117,47 +99,13 @@ public class SetSecundumForSubtreeOperation extends RemotingCdmUpdateOperation i
         Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
             @Override
             protected IStatus run(IProgressMonitor monitor) {
-
-               try {
-                                       ITaxonNodeService taxonNodeService = CdmApplicationState.getService(ITaxonNodeService.class);
-                                       TaxonNode subtreeNode = taxonNodeService.load(config.getSubtreeUuid());
-                                       updateResult = taxonNodeService.setSecundumForSubtree(config);
-                                       
-                                       for (CdmBase object: updateResult.getUpdatedObjects()){
-                                               Taxon taxon = null;
-                                               TaxonNode node = null;
-                                               if (object instanceof Taxon){
-                                                       taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
-                                                       node = taxon.getTaxonNode(subtreeNode.getClassification());
-                                                       
-                                               }else if (object instanceof Synonym){
-                                                       Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
-                                                       taxon = syn.getAcceptedTaxon();
-                                                       node = taxon.getTaxonNode(subtreeNode.getClassification());
-                                               }
-                                               
-                                               Display.getDefault().asyncExec(new Runnable() {
-                                                   public void run() {
-                                                       for (MPart part : partService.getParts()){
-                                                                       Object object = part.getObject();
-                                                                       if (object instanceof TaxonNameEditorE4){
-                                                                               Set<TaxonNode> nodes = ((TaxonNameEditorE4)object).getTaxon().getTaxonNodes();
-                                                                               for (TaxonNode node: nodes){
-                                                                                       if (node.treeIndex().startsWith(subtreeNode.treeIndex())){
-                                                                                               EditorUtil.updateEditor(node, partService, application);                                                                                   
-                                                                                       }
-                                                                                               
-                                                                               }
-                                                                       }
-                                                               } 
-                                                   }
-                                               });
-                                       }
-                       } catch (CdmApplicationException e) {
-                                       // TODO Auto-generated catch block
-                                       e.printStackTrace();
+               if (config instanceof SecundumForSubtreeConfigurator){
+                                       updateResult = taxonNodeService.setSecundumForSubtree((SecundumForSubtreeConfigurator)config);
+                               }else{
+                                       return Status.CANCEL_STATUS;
                                }
-               return Status.OK_STATUS;
+               updateNameEditors();
+                               return Status.OK_STATUS;
 
             }
         };
@@ -170,7 +118,7 @@ public class SetSecundumForSubtreeOperation extends RemotingCdmUpdateOperation i
         try {
             nodeService = CdmApplicationState.getService(ITaxonNodeService.class);
 
-            final UUID uuid = nodeService.monitSetSecundum(config);
+            final UUID uuid = nodeService.monitSetSecundum((SecundumForSubtreeConfigurator)config);
             Display.getDefault().asyncExec(new Runnable() {
             @Override
             public void run() {
diff --git a/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/UpdateSubtreeOperation.java b/eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/UpdateSubtreeOperation.java
new file mode 100644 (file)
index 0000000..9fdba5e
--- /dev/null
@@ -0,0 +1,97 @@
+package eu.etaxonomy.taxeditor.navigation.navigator.operation;
+
+import java.util.Set;
+import java.util.UUID;
+
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.swt.widgets.Display;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationException;
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
+import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
+import eu.etaxonomy.cdm.api.service.config.ForSubtreeConfiguratorBase;
+import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+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.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
+import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
+import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
+
+public abstract class UpdateSubtreeOperation extends RemotingCdmUpdateOperation {
+       
+       ForSubtreeConfiguratorBase config;
+       
+       UUID parentUuid;
+        EPartService partService;
+        MPart activePart;
+        MApplication application;
+        TaxonNode subtreeNode; 
+        ITaxonNodeService taxonNodeService;
+        
+        public UpdateSubtreeOperation(Object source,
+                   boolean async,
+                   UUID taxonNodeUuid,
+                   EPartService partService,
+                   MPart activePart,
+                   MApplication application,
+                   ForSubtreeConfiguratorBase config,
+                   String label) {
+               super(label, Action.Update, source, async);
+               parentUuid = taxonNodeUuid;
+               this.config = config;
+               this.updateResult = new UpdateResult();
+               this.partService= partService;
+               this.activePart = activePart;
+               this.application = application;
+               try {
+                               taxonNodeService = CdmApplicationState.getService(ITaxonNodeService.class);
+                       } catch (CdmApplicationException e) {
+                               // TODO Auto-generated catch block
+                               e.printStackTrace();
+                       }
+               subtreeNode = taxonNodeService.load(config.getSubtreeUuid());
+           }
+        
+        public void updateNameEditors(){
+                for (CdmBase object: updateResult.getUpdatedObjects()){
+                               Taxon taxon = null;
+                               TaxonNode node = null;
+                               if (object instanceof Taxon){
+                                       taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
+                                       node = taxon.getTaxonNode(subtreeNode.getClassification());
+                                       
+                               }else if (object instanceof Synonym){
+                                       Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
+                                       taxon = syn.getAcceptedTaxon();
+                                       node = taxon.getTaxonNode(subtreeNode.getClassification());
+                               }
+                               
+                               Display.getDefault().asyncExec(new Runnable() {
+                                   public void run() {
+                                       for (MPart part : partService.getParts()){
+                                                       Object object = part.getObject();
+                                                       if (object instanceof TaxonNameEditorE4){
+                                                               Set<TaxonNode> nodes = ((TaxonNameEditorE4)object).getTaxon().getTaxonNodes();
+                                                               for (TaxonNode node: nodes){
+                                                                       if (node.treeIndex().startsWith(subtreeNode.treeIndex())){
+                                                                               EditorUtil.updateEditor(node, partService, application);                                                                                   
+                                                                       }
+                                                                               
+                                                               }
+                                                       }
+                                               } 
+                                   }
+                               });
+                }
+        }
+}