Merge branch 'release/5.19.0'
[taxeditor.git] / eu.etaxonomy.taxeditor.navigation / src / main / java / eu / etaxonomy / taxeditor / navigation / navigator / operation / SetSecundumForSubtreeOperation.java
index 96c68e75f1cef68d7ba62bba019ea1cf4ba894b2..a267d8d6ec02641a42e3a07a5e7e121c65642f7a 100755 (executable)
@@ -10,124 +10,107 @@ package eu.etaxonomy.taxeditor.navigation.navigator.operation;
 
 import java.util.UUID;
 
+import javax.inject.Inject;
+
 import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IAdaptable;
 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.di.UISynchronize;
+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.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
 import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.progress.IProgressConstants;
 
-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.ITaxonService;
 import eu.etaxonomy.cdm.api.service.UpdateResult;
+import eu.etaxonomy.cdm.api.service.config.SecundumForSubtreeConfigurator;
 import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
-import eu.etaxonomy.cdm.api.service.config.SetSecundumForSubtreeConfigurator;
-import eu.etaxonomy.cdm.io.service.IIOService;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
 import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
 import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
-import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
 
 /**
  * @author k.luther
  * @date 10.02.2017
  *
  */
-public class SetSecundumForSubtreeOperation extends RemotingCdmUpdateOperation implements IPostMoniteredOperationEnabled{
-
-    private final static String LABEL = Messages.SetSecundumForSubtreeOperation_CHANGE_SEC_OP;
-    private static final Logger logger = Logger
-            .getLogger(SetSecundumForSubtreeOperation.class);
-    UUID parentUuid;
-    SetSecundumForSubtreeConfigurator config;
-    UpdateResult updateResult = new UpdateResult();
-
-    /**
-     * @param label
-     * @param action
-     * @param source
-     * @param async
-     */
-    public SetSecundumForSubtreeOperation(Object source,
-            boolean async,
-            UUID taxonNodeUuid,
-            SetSecundumForSubtreeConfigurator config) {
-        super(LABEL, Action.Update, source, async);
-        parentUuid = taxonNodeUuid;
-        this.config = config;
-    }
+public class SetSecundumForSubtreeOperation extends UpdateSubtreeOperation implements IPostMoniteredOperationEnabled{
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected UpdateResult doUpdateExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
-        Job job = createJob(monitor);
-        // configure the job
-        job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
-        job.setUser(true);
-        // schedule job
-        job.schedule();
+       private final static String LABEL = Messages.SetSecundumForSubtreeOperation_CHANGE_SEC_OP;
+    @SuppressWarnings("unused")
+       private static final Logger logger = Logger.getLogger(SetSecundumForSubtreeOperation.class);
 
-        return updateResult;
+    @Inject
+    private UISynchronize sync;
 
 
-    }
+    public SetSecundumForSubtreeOperation(Object source, boolean async, UUID taxonNodeUuid, EPartService partService,
+                       MPart activePart, MApplication application, EModelService modelService, SecundumForSubtreeConfigurator config) {
+               super(source, async, taxonNodeUuid, partService, activePart, application, modelService, config, LABEL);
 
+       }
 
-    private Job createJob(IProgressMonitor monitor){
-        Assert.isNotNull(config, "Configuration may not be null");
+    @Override
+    protected UpdateResult doUpdateExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
+        EditorUtil.checkForChanges(null, partService);
+
+//        runMoniteredOperation();
+        runMoniteredOperation();
+//        updateNameEditors();
+//        Job job = createJob(monitor);
+//        // configure the job
+//        job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+//        job.setUser(true);
+//        // schedule job
+//        job.schedule();
+
+        return updateResult;
 
-        final Display display = Display.getDefault();
 
-        Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
+    }
 
 
+//    private Job createJob(IProgressMonitor monitor){
+//        Assert.isNotNull(config, "Configuration may not be null");
+//
+//        final Display display = Display.getDefault();
+//
+//        Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
+//            @Override
+//            protected IStatus run(IProgressMonitor monitor) {
+//             if (config instanceof SecundumForSubtreeConfigurator){
+//                                     updateResult = taxonNodeService.setSecundumForSubtree((SecundumForSubtreeConfigurator)config);
+//                             }else{
+//                                     return Status.CANCEL_STATUS;
+//                             }
+//
+//                             return Status.OK_STATUS;
+//
+//            }
+//        };
+//        return job;
+//    }
+
+
+    public void runMoniteredOperation() {
+        ITaxonNodeService nodeService;
+        final UUID uuid = longRunningTaskService.monitLongRunningTask(config);
+        Display.getDefault().asyncExec(new Runnable() {
             @Override
-            protected IStatus run(IProgressMonitor monitor) {
-                   
-               try {
-                       eu.etaxonomy.cdm.common.monitor.IProgressMonitor cdmMonitor =  CdmProgressMonitorAdapter.CreateMonitor(monitor);
-                                       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);
-                                       final UUID uuid = taxonService.monitSetSecundum(config);
-                                       Display.getDefault().asyncExec(new Runnable() {
-                          @Override
-                          public void run() {
-                              AbstractUtility.executeMoniteredOperation("Update: " + config.getClass().getSimpleName(),
-                                      uuid,
-                                      1000,
-                                      false,
-                                      SetSecundumForSubtreeOperation.this,
-                                      null);
-                          }
-                       });
-               } catch (CdmApplicationException e) {
-                                       // TODO Auto-generated catch block
-                                       e.printStackTrace();
-                               }
-//             
-               return Status.OK_STATUS;
+            public void run() {
+                EditorUtil.executeMoniteredOperation("Set Secundum Reference for Subtree: ",
+                        uuid,
+                        1000,
+                        false,
+                        SetSecundumForSubtreeOperation.this,
+                        null,
+                        true);
 
             }
-        };
-        return job;
+        });
     }
 
-
-
-
-
-    /**
-     * {@inheritDoc}
-     */
     @Override
     public void postOperation(IRemotingProgressMonitor monitor) {
         // TODO Auto-generated method stub