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 eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;
import eu.etaxonomy.cdm.model.taxon.Taxon;
-import eu.etaxonomy.taxeditor.model.SynonymUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @author n.hoffmann
.getLogger(SwapSynonymAndAcceptedOperation.class);
private Synonym synonym;
- private Taxon newTaxon;
- private TaxonNameBase<?, ?> oldTaxonName;
+ // TODO store the old relationship for undo reasons
+ private SynonymRelationshipType synonymRelationshipType;
/**
* @param label
super("test swap", undoContext, taxon, postOperationEnabled);
this.synonym = synonym;
-
}
/* (non-Javadoc)
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
-
-// Taxon parentTaxon = taxon.getTaxonomicParent();
- oldTaxonName = taxon.getName();
- newTaxon = SynonymUtil.swapSynonymAndAccepted(synonym, taxon);
-
-// newTaxon.setTaxonomicParent(parentTaxon, null, null);
-
- // do not perform postExecution
- return Status.OK_STATUS;
+ CdmStore.getTaxonService().makeSynonymAcceptedTaxon(synonym, taxon, null);
+
+ return postExecute(taxon);
}
/* (non-Javadoc)
logger.error("Not yet implemented");
return null;
}
-
- /**
- * @return the newTaxon
- */
- public Taxon getNewTaxon() {
- return newTaxon;
- }
}
\ No newline at end of file
private static AbstractPostOperation operation;
- private static Taxon oldTaxon;
+ private static Taxon taxon;
private static Taxon parentTaxon;
// Create the original accepted taxon
oldTaxonName = NonViralName.NewInstance(null);
- oldTaxon = Taxon.NewInstance(oldTaxonName, null);
+ taxon = Taxon.NewInstance(oldTaxonName, null);
// Create its parent taxon
parentTaxon = Taxon.NewInstance(NonViralName.NewInstance(null), null);
- parentTaxon.addTaxonomicChild(oldTaxon, null, null);
+ parentTaxon.addTaxonomicChild(taxon, null, null);
// Give it a child taxon
childTaxon = Taxon.NewInstance(NonViralName.NewInstance(null), null);
- childTaxon.setTaxonomicParent(oldTaxon, null, null);
+ childTaxon.setTaxonomicParent(taxon, null, null);
// Create a homotypic synonym for the accepted taxon
- oldTaxon.addHomotypicSynonymName(NonViralName.NewInstance(null), null, null);
+ taxon.addHomotypicSynonymName(NonViralName.NewInstance(null), null, null);
// homotypicSynonym = Synonym.NewInstance(NonViralName.NewInstance(null), null);
// HomotypicalGroup acceptedHomotypicalGroup = HomotypicalGroup.NewInstance();
// acceptedHomotypicalGroup.addTypifiedName(oldTaxon.getName());
// oldTaxon.addS .addHeterotypicSynonym(oldHeterotypicSynonym, null, null);
heteroypicalGroup = HomotypicalGroup.NewInstance();
heteroypicalGroup.addTypifiedName(oldHeterotypicSynonym.getName());
- oldTaxon.addSynonym(oldHeterotypicSynonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
+ taxon.addSynonym(oldHeterotypicSynonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());
// Create a misapplication
misapplication = Taxon.NewInstance(NonViralName.NewInstance(null), null);
- oldTaxon.addMisappliedName(misapplication, null, null);
+ taxon.addMisappliedName(misapplication, null, null);
// Create a concept relation
concept = Taxon.NewInstance(NonViralName.NewInstance(null), null);
conceptRelationshipType = new TaxonRelationshipType();
- concept.addTaxonRelation(oldTaxon, conceptRelationshipType, null, null);
+ concept.addTaxonRelation(taxon, conceptRelationshipType, null, null);
// Create a description
description = TaxonDescription.NewInstance();
- oldTaxon.addDescription(description);
+ taxon.addDescription(description);
operation = new SwapSynonymAndAcceptedOperation
- (null, undoContext, oldTaxon, oldHeterotypicSynonym, postOperation);
+ (null, undoContext, taxon, oldHeterotypicSynonym, postOperation);
}
- private Taxon newTaxon;
-
/**
* Test method for {@link eu.etaxonomy.taxeditor.operations.ChangeHomotypicGroupOperation#execute(org.eclipse.core.runtime.IProgressMonitor, org.eclipse.core.runtime.IAdaptable)}.
public void testExecute() throws ExecutionException {
operation.execute(null, null);
- newTaxon = ((SwapSynonymAndAcceptedOperation) operation).getNewTaxon();
-
// New taxon has correct name?
- Assert.assertEquals(newTaxon.getName(), oldSynonymName);
+ Assert.assertEquals(taxon.getName(), oldSynonymName);
// New taxon has correct parent?
- Assert.assertEquals(newTaxon.getTaxonomicParent(), parentTaxon);
+ Assert.assertEquals(taxon.getTaxonomicParent(), parentTaxon);
// New taxon has correct child?
- Assert.assertTrue(newTaxon.getTaxonomicChildren().contains(childTaxon));
+ Assert.assertTrue(taxon.getTaxonomicChildren().contains(childTaxon));
// New taxon has 2 synonyms?
- Assert.assertEquals(newTaxon.getSynonyms().size(), 2);
+ Assert.assertEquals(taxon.getSynonyms().size(), 2);
// New taxon has a synonym with the name of the previous accepted taxon?
- Assert.assertTrue(newTaxon.getSynonymNames().contains(oldTaxonName));
+ Assert.assertTrue(taxon.getSynonymNames().contains(oldTaxonName));
// New taxon has misapplication?
- Assert.assertTrue(newTaxon.getMisappliedNames().contains(misapplication));
+ Assert.assertTrue(taxon.getMisappliedNames().contains(misapplication));
// New taxon has 1 concept relation?
int conceptRelCount = 0;
- for (TaxonRelationship relation : newTaxon.getTaxonRelations()) {
+ for (TaxonRelationship relation : taxon.getTaxonRelations()) {
if (relation.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR()) ||
relation.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())) {
continue;
Assert.assertEquals(conceptRelCount, 1);
// New taxon has description?
- newTaxon.getDescriptions().contains(description);
+ taxon.getDescriptions().contains(description);
}
/**