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