Move synonyms, misapplied names, and descriptions from old accepted taxon to new...
authora.babadshanjan <a.babadshanjan@localhost>
Mon, 27 Oct 2008 14:51:46 +0000 (14:51 +0000)
committera.babadshanjan <a.babadshanjan@localhost>
Mon, 27 Oct 2008 14:51:46 +0000 (14:51 +0000)
eclipseprojects/eu.etaxonomy.taxeditor/src/eu/etaxonomy/taxeditor/actions/cdm/SwapSynonymAndTaxonAction.java

index 607c7963d0ebf2f0420f7052862698b00c165d20..30be18486087c5e000e326469cf4c42e91a6f019 100644 (file)
@@ -13,9 +13,12 @@ import org.apache.log4j.Logger;
 import org.eclipse.jface.action.Action;\r
 import org.eclipse.jface.resource.ImageDescriptor;\r
 \r
+import eu.etaxonomy.cdm.model.description.TaxonDescription;\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.TaxonRelationshipType;\r
 import eu.etaxonomy.taxeditor.ITaxEditorConstants;\r
 import eu.etaxonomy.taxeditor.TaxEditorPlugin;\r
 import eu.etaxonomy.taxeditor.model.CdmUtil;\r
@@ -43,6 +46,9 @@ public class SwapSynonymAndTaxonAction extends Action {
        \r
        public void run() {\r
                \r
+               // TODO: Call a taxon service method similar to makeTaxonSynonym()\r
+               // instead of implementing the logic here\r
+               \r
                taxon.removeSynonym(synonym);\r
                \r
                Taxon parentTaxon = taxon.getTaxonomicParent();\r
@@ -57,6 +63,31 @@ public class SwapSynonymAndTaxonAction extends Action {
                        newTaxon.addSynonym(newSynonym, SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF());                      \r
                }\r
                \r
+               //      Move the other synonyms from old accepted taxon to new accepted taxon\r
+               for (Synonym synonym: taxon.getSynonyms()) {\r
+                       SynonymRelationshipType synRelType = SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF();\r
+                       if (CdmUtil.isNameHomotypic(synonym.getName(), newTaxon) != true) {\r
+                               synRelType = SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF();\r
+                       }\r
+                       newTaxon.addSynonym(synonym, synRelType);\r
+                       taxon.removeSynonym(synonym);\r
+               }\r
+               \r
+               // Move misapplied names\r
+               for (Taxon misappliedNameTaxon: taxon.getMisappliedNames()) {\r
+                       newTaxon.addMisappliedName(misappliedNameTaxon, \r
+                                       misappliedNameTaxon.getName().getCitation(), \r
+                                       ""); //TODO: Set the microcitation\r
+                       //TODO: uncomment next line\r
+//                     taxon.removeTaxon(misappliedNameTaxon, TaxonRelationshipType.MISAPPLIED_NAME_FOR());\r
+               }\r
+               \r
+               // Move descriptions\r
+               for(TaxonDescription taxDescription : taxon.getDescriptions()){\r
+                       newTaxon.addDescription(taxDescription);\r
+                       taxon.removeDescription(taxDescription);\r
+               }\r
+               \r
                firePropertyChange(ITaxEditorConstants.TAXON, null, newTaxon);\r
        }       \r
 }
\ No newline at end of file