\r
package eu.etaxonomy.taxeditor.operations;\r
\r
+import java.util.Set;\r
+\r
import org.apache.log4j.Logger;\r
import org.eclipse.core.commands.ExecutionException;\r
import org.eclipse.core.commands.operations.IUndoContext;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
\r
/**\r
* @author n.hoffmann\r
super(label, undoContext, taxon, postOperationEnabled);\r
this.relatedTaxon = relatedTaxon;\r
\r
- this.taxonRelationship = TaxonHelper.getRelationshipBetweenTwoTaxa(relatedTaxon, taxon);\r
+ Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(relatedTaxon);\r
+ \r
+ if(taxonRelationships.size() > 1){\r
+ StoreUtil.warningDialog("Multiple relations between taxa", "There are multiple relations between the " +\r
+ "accepted and the related taxon. This case is not handled by the software yet");\r
+ return;\r
+ }\r
+ \r
+ this.taxonRelationship = taxonRelationships.iterator().next();\r
this.oldRelationshipType = taxonRelationship.getType();\r
this.newRelationshipType = type;\r
}\r
\r
package eu.etaxonomy.taxeditor.operations;\r
\r
+import java.util.Set;\r
+\r
import org.eclipse.core.commands.ExecutionException;\r
import org.eclipse.core.commands.operations.IUndoContext;\r
import org.eclipse.core.runtime.IAdaptable;\r
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;\r
import eu.etaxonomy.cdm.model.name.TaxonNameBase;\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
+import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
import eu.etaxonomy.cdm.model.taxon.SynonymRelationshipType;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
\r
/**\r
* @author p.ciardelli\r
\r
private TaxonRelationship taxonRelationship;\r
private TaxonRelationshipType oldRelationshipType;\r
+ \r
+ private SynonymRelationship newSynonymRelationship;\r
\r
public ChangeConceptToSynonymOperation(String label,\r
IUndoContext undoContext, Taxon taxon, Taxon concept, HomotypicalGroup homotypicalGroup,\r
IPostOperationEnabled editor) {\r
super(label, undoContext, taxon, editor);\r
\r
- this.taxonRelationship = TaxonHelper.getRelationshipBetweenTwoTaxa(concept, taxon);\r
+ Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(concept);\r
+ \r
+ if(taxonRelationships.size() > 1){\r
+ StoreUtil.warningDialog("Multiple relations between taxa", "There are multiple relations between the " +\r
+ "accepted and the related taxon. This case is not handled by the software yet");\r
+ return;\r
+ }\r
+ \r
+ this.taxonRelationship = taxonRelationships.iterator().next();\r
this.oldRelationshipType = taxonRelationship.getType();\r
\r
this.concept = concept;\r
\r
// Create new synonym using concept name\r
TaxonNameBase<?, ?> synonymName = concept.getName();\r
- Synonym synonym = Synonym.NewInstance(synonymName, taxon.getSec());\r
\r
// Remove concept relation from taxon\r
taxon.removeTaxon(concept, oldRelationshipType);\r
-\r
\r
- if(homotypicalGroup != null){\r
-// // Add synonym to homotypical group\r
-// homotypicalGroup.addTypifiedName(synonymName);\r
-// \r
- if (homotypicalGroup.equals(taxon.getHomotypicGroup())) {\r
- taxon.addHomotypicSynonym(synonym, null, null);\r
- } else {\r
- taxon.addHeterotypicSynonymName(synonymName, homotypicalGroup, null, null);\r
- }\r
- } else {\r
- taxon.addSynonym(synonym, SynonymRelationshipType.SYNONYM_OF()); \r
- }\r
+ // Add name to new homotypic group\r
+ HomotypicalGroup.NewInstance().addTypifiedName(synonymName);\r
\r
- return postExecute(synonym);\r
+ // Create a new synonym for the taxon\r
+ newSynonymRelationship = taxon.addHeterotypicSynonymName(synonymName);\r
+ \r
+ return postExecute(newSynonymRelationship.getSynonym());\r
}\r
\r
/* (non-Javadoc)\r
import eu.etaxonomy.cdm.model.taxon.Synonym;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
+import eu.etaxonomy.taxeditor.store.CdmStore;\r
\r
/**\r
* @author p.ciardelli\r
public IStatus execute(IProgressMonitor monitor, IAdaptable info)\r
throws ExecutionException {\r
\r
- // Get name from synonym\r
- TaxonNameBase<?, ?> synonymName = synonym.getName();\r
+// // Get name from synonym\r
+// TaxonNameBase<?, ?> synonymName = synonym.getName();\r
+// \r
+// // remove synonym from taxon\r
+// taxon.removeSynonym(synonym);\r
+// \r
+// // Create a taxon with synonym name\r
+// Taxon fromTaxon = Taxon.NewInstance(synonymName, null);\r
+// \r
+// // Add taxon relation \r
+// fromTaxon.addTaxonRelation(taxon, taxonRelationshipType, null, null);\r
\r
- // remove synonym from taxon\r
- taxon.removeSynonym(synonym);\r
- \r
- // Create a taxon with synonym name\r
- Taxon fromTaxon = Taxon.NewInstance(synonymName, null);\r
- \r
- // Add taxon relation \r
- fromTaxon.addTaxonRelation(taxon, taxonRelationshipType, null, null);\r
+ Taxon fromTaxon = CdmStore.getTaxonService().changeSynonymToRelatedTaxon(synonym, taxon, taxonRelationshipType, null, null);\r
\r
// TaxonRelationshipType.\r
// logger.warn("Not yet implemented.");\r
\r
package eu.etaxonomy.taxeditor.operations;\r
\r
+import java.util.Set;\r
+\r
import org.eclipse.core.commands.ExecutionException;\r
import org.eclipse.core.commands.operations.IUndoContext;\r
import org.eclipse.core.runtime.IAdaptable;\r
import eu.etaxonomy.cdm.model.taxon.Taxon;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
-import eu.etaxonomy.taxeditor.model.TaxonHelper;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
\r
/**\r
* Deletes a relation between two taxa. \r
private TaxonRelationshipType relationshipType;\r
private ReferenceBase<?> citation;\r
private String microcitation;\r
- private TaxonRelationship relationship; \r
+ private TaxonRelationship taxonRelationship; \r
\r
public DeleteConceptRelationOperation(String label,\r
IUndoContext undoContext, Taxon taxon, Taxon relatedTaxon,\r
\r
this.relatedTaxon = relatedTaxon;\r
\r
- relationship = TaxonHelper.getRelationshipBetweenTwoTaxa(relatedTaxon, taxon);\r
+ Set<TaxonRelationship> taxonRelationships = taxon.getTaxonRelations(relatedTaxon);\r
+ \r
+ if(taxonRelationships.size() > 1){\r
+ StoreUtil.warningDialog("Multiple relations between taxa", "There are multiple relations between the " +\r
+ "accepted and the related taxon. This case is not handled by the software yet");\r
+ return;\r
+ }\r
+ \r
+ taxonRelationship = taxonRelationships.iterator().next();\r
\r
- relationshipType = relationship.getType();\r
+ relationshipType = taxonRelationship.getType();\r
\r
- citation = relationship.getCitation();\r
- microcitation = relationship.getCitationMicroReference();\r
+ citation = taxonRelationship.getCitation();\r
+ microcitation = taxonRelationship.getCitationMicroReference();\r
}\r
\r
/* (non-Javadoc)\r
&& relationship.getFromTaxon().equals(relatedTaxon)) {\r
citation = relationship.getCitation();\r
microcitation = relationship.getCitationMicroReference();\r
- this.relationship = relationship; \r
+ taxonRelationship = relationship; \r
}\r
}\r
\r
// Remove relation from taxon\r
- taxon.removeTaxonRelation(relationship);\r
+ taxon.removeTaxonRelation(taxonRelationship);\r
\r
return postExecute(taxon);\r
}\r