ref #6595 Migrate conversation handling of moveSynonym operation
authorPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 29 Aug 2017 06:24:13 +0000 (08:24 +0200)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Tue, 29 Aug 2017 06:24:13 +0000 (08:24 +0200)
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/handler/MoveSynonymToAnotherAcceptedTaxonHandlerE4.java
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/operation/MoveSynonymToAnotherAcceptedTaxonOperationE4.java [new file with mode: 0644]

index b8545651fb1b2bb52b707aed354953f229883f2b..cc3d70b4a7a97e60fdaea0300d9f40916fa2a0da 100644 (file)
@@ -21,11 +21,11 @@ import eu.etaxonomy.cdm.model.taxon.Synonym;
 import eu.etaxonomy.cdm.model.taxon.Taxon;
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
 import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
+import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInputE4;
 import eu.etaxonomy.taxeditor.editor.l10n.Messages;
 import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
+import eu.etaxonomy.taxeditor.editor.name.e4.operation.MoveSynonymToAnotherAcceptedTaxonOperationE4;
 import eu.etaxonomy.taxeditor.editor.name.handler.NameEditorMenuPropertyTester;
-import eu.etaxonomy.taxeditor.editor.name.operation.MoveSynonymToAnotherAcceptedTaxonOperation;
 import eu.etaxonomy.taxeditor.model.AbstractUtility;
 import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
@@ -48,7 +48,7 @@ public class MoveSynonymToAnotherAcceptedTaxonHandlerE4 implements IPostOperatio
                        return ;
                }
 
-               if (!(input instanceof TaxonEditorInput)) {
+               if (!(input instanceof TaxonEditorInputE4)) {
                        logger.error("Editor input is not TaxonEditorInput"); //$NON-NLS-1$
                        return ;
                }
@@ -60,16 +60,16 @@ public class MoveSynonymToAnotherAcceptedTaxonHandlerE4 implements IPostOperatio
                }
 
                Synonym synonym = (Synonym) selection.getFirstElement();
-               Taxon oldParent = ((TaxonEditorInput)input).getTaxon();
+               Taxon oldParent = ((TaxonEditorInputE4)input).getTaxon();
                List<UUID> excludeTaxa = new ArrayList<UUID>();
                excludeTaxa.add(oldParent.getUuid());
 
 
-               TaxonNode newParentNode = TaxonNodeSelectionDialog.select(shell, editor.getConversationHolder(), Messages.MoveSynonymToAnotherAcceptedTaxonHandler_SELECT_ACC_TAXON, excludeTaxa,  ((TaxonEditorInput)input).getTaxonNode(), ((TaxonEditorInput)input).getTaxonNode().getClassification());
+               TaxonNode newParentNode = TaxonNodeSelectionDialog.select(shell, editor.getConversationHolder(), Messages.MoveSynonymToAnotherAcceptedTaxonHandler_SELECT_ACC_TAXON, excludeTaxa,  ((TaxonEditorInputE4)input).getTaxonNode(), ((TaxonEditorInputE4)input).getTaxonNode().getClassification());
 
                if(newParentNode!=null){
-                  MoveSynonymToAnotherAcceptedTaxonOperation operation = new MoveSynonymToAnotherAcceptedTaxonOperation(Messages.MoveSynonymToAnotherAcceptedTaxonHandler_CHANGE_ACC_TAXON, EditorUtil.getUndoContext(),
-                           oldParent.getUuid(), synonym.getUuid(), newParentNode.getTaxon(), editor);
+                  MoveSynonymToAnotherAcceptedTaxonOperationE4 operation = new MoveSynonymToAnotherAcceptedTaxonOperationE4(Messages.MoveSynonymToAnotherAcceptedTaxonHandler_CHANGE_ACC_TAXON, EditorUtil.getUndoContext(),
+                           synonym.getUuid(), newParentNode.getTaxon(), editor, editor);
 
                    AbstractUtility.executeOperation(operation);
                }
diff --git a/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/operation/MoveSynonymToAnotherAcceptedTaxonOperationE4.java b/eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/e4/operation/MoveSynonymToAnotherAcceptedTaxonOperationE4.java
new file mode 100644 (file)
index 0000000..c2ac3ab
--- /dev/null
@@ -0,0 +1,88 @@
+package eu.etaxonomy.taxeditor.editor.name.e4.operation;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.exception.HomotypicalGroupChangeException;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+public class MoveSynonymToAnotherAcceptedTaxonOperationE4 extends
+               AbstractPostTaxonOperation {
+
+       /**
+        * The synonym to be moved.
+        */
+       private final Synonym synonym;
+       private IConversationEnabled conversationEnabled;
+
+    public MoveSynonymToAnotherAcceptedTaxonOperationE4(String label, IUndoContext undoContext, UUID synonymUUID,
+            Taxon taxon, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled) {
+
+               super(label, undoContext, taxon, postOperationEnabled);
+               List<String> propertyPaths =  new ArrayList<String>();
+               propertyPaths.add("synonymRelations"); //$NON-NLS-1$
+               this.conversationEnabled = conversationEnabled;
+               this.element = (Taxon) CdmStore.getService(ITaxonService.class).load(taxon.getUuid(),propertyPaths);
+               this.synonym = (Synonym) CdmStore.getService(ITaxonService.class).load(synonymUUID);
+               if(synonym == null){
+                       throw new IllegalArgumentException(
+                                       "A null synonym was provided."); //$NON-NLS-1$
+               }
+       }
+
+       @Override
+       public IStatus execute(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+
+               monitor.worked(20);
+
+               // Switch groups
+
+               monitor.worked(40);
+
+               conversationEnabled.getConversationHolder().commit();
+
+               try {
+                       CdmStore.getService(ITaxonService.class).moveSynonymToAnotherTaxon(synonym,
+                               this.element.getUuid(),
+                               true,
+                               synonym.getType(),
+                               null,
+                               null,
+                               true);
+               } catch (HomotypicalGroupChangeException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               }
+               conversationEnabled.getConversationHolder().commit();
+
+               // Redraw editor if it exists
+               return postExecute(synonym);
+       }
+
+       @Override
+       public IStatus redo(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+               return null;
+       }
+
+       @Override
+       public IStatus undo(IProgressMonitor monitor, IAdaptable info)
+                       throws ExecutionException {
+               return null;
+       }
+
+}