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;
return ;
}
- if (!(input instanceof TaxonEditorInput)) {
+ if (!(input instanceof TaxonEditorInputE4)) {
logger.error("Editor input is not TaxonEditorInput"); //$NON-NLS-1$
return ;
}
}
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);
}
--- /dev/null
+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;
+ }
+
+}