import eu.etaxonomy.cdm.model.taxon.Synonym;\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.TaxonUtil;\r
\r
/**\r
* @author p.ciardelli\r
\r
private HomotypicalGroup homotypicalGroup;\r
\r
+ private TaxonRelationship taxonRelationship;\r
+ private TaxonRelationshipType oldRelationshipType;\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 = TaxonUtil.getRelationshipBetweenTwoTaxa(concept, taxon);\r
+ this.oldRelationshipType = taxonRelationship.getType();\r
+ \r
this.concept = concept;\r
this.homotypicalGroup = homotypicalGroup;\r
}\r
Synonym synonym = Synonym.NewInstance(synonymName, taxon.getSec());\r
\r
// Remove concept relation from taxon\r
- taxon.removeTaxon(concept, TaxonRelationshipType.MISAPPLIED_NAME_FOR());\r
-\r
-\r
+ taxon.removeTaxon(concept, oldRelationshipType);\r
\r
- taxon.addSynonym(synonym, SynonymRelationshipType.SYNONYM_OF());\r
\r
if(homotypicalGroup != null){\r
- // Add synonym to homotypical group\r
- homotypicalGroup.addTypifiedName(synonymName);\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
\r
return postExecute(synonym);\r