do the set publish flag in a separate job
authorKatja Luther <k.luther@bgbm.org>
Wed, 1 Nov 2017 11:34:13 +0000 (12:34 +0100)
committerKatja Luther <k.luther@bgbm.org>
Wed, 1 Nov 2017 11:34:13 +0000 (12:34 +0100)
eu.etaxonomy.taxeditor.navigation/src/main/java/eu/etaxonomy/taxeditor/navigation/navigator/operation/SetPublishForSubtreeOperation.java

index c6a6172e2aff419ddea2839eff12ad2dfcc9a018..3b3b2af3a5f9cc0d56a6e3a2bea31e0d507a22e7 100755 (executable)
@@ -12,15 +12,21 @@ package eu.etaxonomy.taxeditor.navigation.navigator.operation;
 import java.util.UUID;
 
 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.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.UpdateResult;
 import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
-import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
 import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
 import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
 
@@ -50,19 +56,64 @@ public class SetPublishForSubtreeOperation extends RemotingCdmUpdateOperation {
         super(LABEL, Action.Update, source, async);
         parentUuid = taxonNodeUuid;
         this.config = config;
+        this.updateResult = new UpdateResult();
     }
 
 
-    /* (non-Javadoc)
-     * @see eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation#doUpdateExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
-     */
+//    /* (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
     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);
+//        runMoniteredOperation();
+
+        Job job = createJob(monitor);
+        // configure the job
+        job.setProperty(IProgressConstants.KEEP_PROPERTY, true);
+        job.setUser(true);
+        // schedule job
+        job.schedule();
+
         return updateResult;
+
+
+    }
+
+
+    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) {
+
+                try {
+                    ITaxonNodeService taxonService = CdmApplicationState.getService(ITaxonNodeService.class);
+                    updateResult =  taxonService.setPublishForSubtree(config.getSubtreeUuid(), config.isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
+
+                } catch (CdmApplicationException e) {
+                    // TODO Auto-generated catch block
+                    e.printStackTrace();
+                }
+//
+                return Status.OK_STATUS;
+
+            }
+        };
+        return job;
     }
 
 }