2 * Copyright (C) 2015 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
.HashSet
;
13 import java
.util
.UUID
;
15 import org
.eclipse
.core
.runtime
.IAdaptable
;
16 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
17 import org
.eclipse
.e4
.ui
.model
.application
.MApplication
;
18 import org
.eclipse
.e4
.ui
.model
.application
.ui
.basic
.MPart
;
19 import org
.eclipse
.e4
.ui
.workbench
.modeling
.EPartService
;
20 import org
.eclipse
.swt
.widgets
.Display
;
22 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationState
;
23 import eu
.etaxonomy
.cdm
.api
.application
.CdmChangeEvent
.Action
;
24 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
25 import eu
.etaxonomy
.cdm
.api
.service
.UpdateResult
;
26 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
27 import eu
.etaxonomy
.taxeditor
.editor
.EditorUtil
;
28 import eu
.etaxonomy
.taxeditor
.editor
.name
.e4
.TaxonNameEditorE4
;
29 import eu
.etaxonomy
.taxeditor
.navigation
.l10n
.Messages
;
30 import eu
.etaxonomy
.taxeditor
.operation
.RemotingCdmUpdateOperation
;
38 public class RemotingChangeAcceptedTaxonToSynonymOperation
extends RemotingCdmUpdateOperation
{
40 private Set
<UUID
> oldTaxonNodeUuids
= new HashSet();
41 private final UUID newAcceptedTaxonNodeUuid
;
42 private boolean setNameInSource
;
45 private final static String LABEL
= Messages
.RemotingChangeAcceptedTaxonToSynonymOperation_CHANGE_OP
;
50 public RemotingChangeAcceptedTaxonToSynonymOperation(Object source
,
52 Set
<UUID
> oldTaxonNodeUuids
,
53 UUID newAcceptedTaxonNodeUuid
,
54 EPartService partService
,
56 MApplication application
,
57 boolean setNameInSource
) {
58 super(LABEL
, Action
.Update
, source
, async
, partService
, activePart
, application
);
59 this.oldTaxonNodeUuids
.addAll(oldTaxonNodeUuids
);
60 this.newAcceptedTaxonNodeUuid
= newAcceptedTaxonNodeUuid
;
61 this.setNameInSource
= setNameInSource
;
68 public RemotingChangeAcceptedTaxonToSynonymOperation(Object source
,
70 UUID oldTaxonNodeUuid
,
71 UUID newAcceptedTaxonNodeUuid
,
72 EPartService partService
,
74 MApplication application
,
75 boolean setNameInSource
) {
76 super(LABEL
, Action
.Update
, source
, async
, partService
, activePart
, application
);
77 this.oldTaxonNodeUuids
.add(oldTaxonNodeUuid
);
78 this.newAcceptedTaxonNodeUuid
= newAcceptedTaxonNodeUuid
;
79 this.setNameInSource
= setNameInSource
;
85 public RemotingChangeAcceptedTaxonToSynonymOperation(Object source
,
87 UUID oldTaxonNodeUuid
,
88 UUID newAcceptedTaxonNodeUuid
,
89 boolean setNameInSource
) {
90 super(LABEL
, Action
.Update
, source
, async
);
91 this.oldTaxonNodeUuids
.add(oldTaxonNodeUuid
);
92 this.newAcceptedTaxonNodeUuid
= newAcceptedTaxonNodeUuid
;
93 this.setNameInSource
= setNameInSource
;
97 * @see eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation#doUpdateExecute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)
100 protected UpdateResult
doUpdateExecute(IProgressMonitor monitor
, IAdaptable info
) throws Exception
{
102 if (this.oldTaxonNodeUuids
.size() == 1){
103 updateResult
= CdmApplicationState
.getService(ITaxonNodeService
.class).makeTaxonNodeASynonymOfAnotherTaxonNode(oldTaxonNodeUuids
.iterator().next(),
104 newAcceptedTaxonNodeUuid
,
108 setNameInSource
);//TODO
110 updateResult
= CdmApplicationState
.getService(ITaxonNodeService
.class).makeTaxonNodeSynonymsOfAnotherTaxonNode(oldTaxonNodeUuids
,
111 newAcceptedTaxonNodeUuid
,
115 setNameInSource
);//TODO
122 private void updateNameEditor(){
123 if (partService
!= null){
124 Display
.getDefault().asyncExec(new Runnable() {
128 for (MPart part
: partService
.getParts()){
129 Object object
= part
.getObject();
130 boolean setFocus
= false;
131 if (part
== activePart
){
134 if (object
instanceof TaxonNameEditorE4
){
135 Set
<TaxonNode
> nodes
= ((TaxonNameEditorE4
)object
).getTaxon().getTaxonNodes();
136 for (TaxonNode node
: nodes
){
137 if (node
.getTaxon().getUuid().equals(newAcceptedTaxonNodeUuid
)){
138 EditorUtil
.updateEditor(node
, (TaxonNameEditorE4
)object
);