2 * Copyright (C) 2017 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.navigation
.navigator
.operation
;
11 import java
.util
.UUID
;
13 import javax
.inject
.Inject
;
15 import org
.apache
.log4j
.Logger
;
16 import org
.eclipse
.core
.runtime
.Assert
;
17 import org
.eclipse
.core
.runtime
.IAdaptable
;
18 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
19 import org
.eclipse
.core
.runtime
.IStatus
;
20 import org
.eclipse
.core
.runtime
.Status
;
21 import org
.eclipse
.core
.runtime
.jobs
.Job
;
22 import org
.eclipse
.e4
.ui
.di
.UISynchronize
;
23 import org
.eclipse
.e4
.ui
.model
.application
.MApplication
;
24 import org
.eclipse
.e4
.ui
.model
.application
.ui
.basic
.MPart
;
25 import org
.eclipse
.e4
.ui
.workbench
.modeling
.EModelService
;
26 import org
.eclipse
.e4
.ui
.workbench
.modeling
.EPartService
;
27 import org
.eclipse
.swt
.widgets
.Display
;
28 import org
.eclipse
.ui
.progress
.IProgressConstants
;
30 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationException
;
31 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationState
;
32 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
33 import eu
.etaxonomy
.cdm
.api
.service
.UpdateResult
;
34 import eu
.etaxonomy
.cdm
.api
.service
.config
.SecundumForSubtreeConfigurator
;
35 import eu
.etaxonomy
.cdm
.common
.monitor
.IRemotingProgressMonitor
;
36 import eu
.etaxonomy
.taxeditor
.model
.AbstractUtility
;
37 import eu
.etaxonomy
.taxeditor
.navigation
.l10n
.Messages
;
38 import eu
.etaxonomy
.taxeditor
.operation
.IPostMoniteredOperationEnabled
;
45 public class SetSecundumForSubtreeOperation
extends UpdateSubtreeOperation
implements IPostMoniteredOperationEnabled
{
47 private final static String LABEL
= Messages
.SetSecundumForSubtreeOperation_CHANGE_SEC_OP
;
48 private static final Logger logger
= Logger
49 .getLogger(SetSecundumForSubtreeOperation
.class);
55 public SetSecundumForSubtreeOperation(Object source
, boolean async
, UUID taxonNodeUuid
, EPartService partService
,
56 MPart activePart
, MApplication application
, EModelService modelService
, SecundumForSubtreeConfigurator config
) {
57 super(source
, async
, taxonNodeUuid
, partService
, activePart
, application
, modelService
, config
, LABEL
);
65 protected UpdateResult
doUpdateExecute(IProgressMonitor monitor
, IAdaptable info
) throws Exception
{
66 // runMoniteredOperation();
68 Job job
= createJob(monitor
);
70 job
.setProperty(IProgressConstants
.KEEP_PROPERTY
, true);
81 private Job
createJob(IProgressMonitor monitor
){
82 Assert
.isNotNull(config
, "Configuration may not be null");
84 final Display display
= Display
.getDefault();
86 Job job
= new Job(Messages
.SetSecundumForSubtreeOperation_SET_SEC_TASK
) {
88 protected IStatus
run(IProgressMonitor monitor
) {
89 if (config
instanceof SecundumForSubtreeConfigurator
){
90 updateResult
= taxonNodeService
.setSecundumForSubtree((SecundumForSubtreeConfigurator
)config
);
92 return Status
.CANCEL_STATUS
;
95 return Status
.OK_STATUS
;
103 public void runMoniteredOperation() {
104 ITaxonNodeService nodeService
;
106 nodeService
= CdmApplicationState
.getService(ITaxonNodeService
.class);
108 final UUID uuid
= nodeService
.monitSetSecundum((SecundumForSubtreeConfigurator
)config
);
109 Display
.getDefault().asyncExec(new Runnable() {
112 AbstractUtility
.executeMoniteredOperation("Set Secundum Reference for Subtree: ",
116 SetSecundumForSubtreeOperation
.this,
120 } catch (CdmApplicationException e
) {
121 // TODO Auto-generated catch block
133 public void postOperation(IRemotingProgressMonitor monitor
) {
134 // TODO Auto-generated method stub