fixes #818
authorn.hoffmann <n.hoffmann@localhost>
Thu, 3 Sep 2009 07:41:13 +0000 (07:41 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 3 Sep 2009 07:41:13 +0000 (07:41 +0000)
taxeditor-editor/src/main/java/eu/etaxonomy/taxeditor/editor/name/handler/ChangeAcceptedTaxonToSynonymHandler.java

index 4fa3d7d6b321d2b4e1ea27fd4a91e9f8271cb303..64cf834407587e7670813252eb60ca510d22b788 100644 (file)
@@ -3,7 +3,9 @@
  */\r
 package eu.etaxonomy.taxeditor.editor.name.handler;\r
 \r
+import java.util.ArrayList;\r
 import java.util.HashSet;\r
+import java.util.List;\r
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
@@ -47,20 +49,18 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
         * @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)\r
         */\r
        public Object execute(ExecutionEvent event) throws ExecutionException {\r
-               \r
-               logger.debug("remove this message");\r
-               \r
-//             MessageDialog.openInformation(HandlerUtil.getActiveShell(event), \r
-//                             "Not yet implemented", \r
-//                             "'Change Accepted Taxon to Synonym' not yet implemented.");\r
+               ConversationHolder conversation = CdmStore.NewTransactionalConversation();\r
+               conversation.bind();\r
                \r
                ISelection menuSelection = HandlerUtil.getActiveMenuSelection(event);\r
                TaxonBasePropertySource taxonBasePropertySource = \r
                                (TaxonBasePropertySource) ((StructuredSelection) menuSelection).getFirstElement();\r
                Taxon oldAcceptedTaxon = (Taxon) taxonBasePropertySource.getTaxonBase();\r
                \r
-               // Choose new accepted taxon            \r
-               Taxon newAcceptedTaxon = FilteredTaxonNodeSelectionDialog.selectTaxonNode(HandlerUtil.getActiveShell(event), oldAcceptedTaxon).getTaxon();\r
+               // Choose new accepted taxon    \r
+               List<UUID> excludeTaxa = new ArrayList<UUID>();\r
+               excludeTaxa.add(oldAcceptedTaxon.getUuid());\r
+               Taxon newAcceptedTaxon = FilteredTaxonNodeSelectionDialog.selectTaxonNode(HandlerUtil.getActiveShell(event), excludeTaxa).getTaxon();\r
                \r
                \r
                if (newAcceptedTaxon == null) {\r
@@ -68,8 +68,7 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                }\r
                \r
                try {\r
-                       ConversationHolder conversation = CdmStore.NewTransactionalConversation();\r
-                       conversation.bind();\r
+                       \r
                        Taxon newTaxon = (Taxon) CdmStore.getTaxonService().getTaxonByUuid(newAcceptedTaxon.getUuid());\r
                        Taxon oldTaxon = (Taxon) CdmStore.getTaxonService().getTaxonByUuid(oldAcceptedTaxon.getUuid());\r
                        \r
@@ -90,17 +89,7 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                        }\r
                        \r
                        makeTaxonSynonym(oldTaxon, newTaxon, null, null, null);\r
-                       \r
-                       // TEMP\r
-//                     Set<TaxonDescription> descriptions = new HashSet<TaxonDescription>();\r
-//                     for(TaxonDescription taxDescription : oldTaxon.getDescriptions()){\r
-//                             descriptions.add(taxDescription);\r
-//                     }                                               \r
-//                     for(TaxonDescription taxDescription : descriptions){\r
-//                             newTaxon.addDescription(taxDescription);\r
-//                     }                       \r
-                       \r
-//                     CdmStore.getTaxonService().makeTaxonSynonym(oldTaxon, newTaxon, null, null, null);\r
+                               \r
                        conversation.commit();\r
                        Set<TaxonNode> nodes = newTaxon.getTaxonNodes();\r
                        UUID uuid = nodes.iterator().next().getUuid();\r
@@ -139,8 +128,6 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                //Move Synonym Relations to new Taxon\r
                for(SynonymRelationship synRelation : oldTaxon.getSynonymRelations()){\r
                        synRelation.setAcceptedTaxon(newAcceptedTaxon);\r
-//                     newAcceptedTaxon.addSynonym(synRelation.getSynonym(), synRelation.getType(), \r
-//                                     synRelation.getCitation(), synRelation.getCitationMicroReference());\r
                }\r
 \r
                //Move Taxon RelationShips to new Taxon\r
@@ -150,11 +137,8 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                        if (taxonRelation.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())){\r
                                if (taxonRelation.getFromTaxon() == oldTaxon){\r
                                        taxonRelation.setFromTaxon(newAcceptedTaxon);\r
-//                                     removableTaxonRels.add(taxonRelation);\r
                                }else if(taxonRelation.getToTaxon() == oldTaxon){\r
                                        taxonRelation.setToTaxon(newAcceptedTaxon);\r
-//                                     newAcceptedTaxon.addTaxonomicChild(taxonRelation.getFromTaxon(), taxonRelation.getCitation(), taxonRelation.getCitationMicroReference());\r
-//                                     removableTaxonRels.add(taxonRelation);\r
                                }else{\r
                                        logger.warn("Taxon is not part of its own Taxonrelationship");\r
                                }\r
@@ -163,23 +147,17 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                        if (taxonRelation.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){\r
                                if (taxonRelation.getFromTaxon() == oldTaxon){\r
                                        taxonRelation.setFromTaxon(newAcceptedTaxon);\r
-//                                     newAcceptedTaxon.addMisappliedName(taxonRelation.getToTaxon(), taxonRelation.getCitation(), taxonRelation.getCitationMicroReference());\r
-//                                     removableTaxonRels.add(taxonRelation);\r
                                }else if(taxonRelation.getToTaxon() == oldTaxon){\r
                                        taxonRelation.setToTaxon(newAcceptedTaxon);\r
-//                                     newAcceptedTaxon.addMisappliedName(taxonRelation.getFromTaxon(), taxonRelation.getCitation(), taxonRelation.getCitationMicroReference());\r
-//                                     removableTaxonRels.add(taxonRelation);\r
                                }else{\r
                                        logger.warn("Taxon is not part of its own Taxonrelationship");\r
                                }\r
                        }\r
                        //Concept Relationships\r
                        //FIXME implement\r
+                       logger.warn("Transfer of concept relationships not implemented yet");\r
                }\r
                \r
-//             for(TaxonRelationship taxonRel : removableTaxonRels) {\r
-//                     oldTaxon.removeTaxonRelation(taxonRel);\r
-//             }\r
                \r
                //Move Descriptions to new Taxon\r
                Set<TaxonDescription> descriptions = new HashSet<TaxonDescription>();\r
@@ -189,99 +167,10 @@ public class ChangeAcceptedTaxonToSynonymHandler extends AbstractHandler
                for(TaxonDescription taxDescription : descriptions){\r
                        newAcceptedTaxon.addDescription(taxDescription);\r
                }\r
-               \r
-//             CdmStore.getTaxonService().saveTaxon(newAcceptedTaxon);\r
+\r
+\r
                oldTaxon.getTaxonNodes().iterator().next().remove();\r
                \r
-//             CdmStore.getTaxonService().removeTaxon(oldTaxon);\r
        }\r
        \r
-//     /**\r
-//      * @param oldTaxon\r
-//      * @param newTaxon\r
-//      */\r
-//     private void makeTaxonSynonym(Taxon oldTaxon, Taxon newAcceptedTaxon, SynonymRelationshipType synonymType, ReferenceBase citation, String citationMicroReference) {\r
-//             if (oldTaxon == null || newAcceptedTaxon == null || oldTaxon.getName() == null){\r
-//                     return;\r
-//             }\r
-//             \r
-//             // Move oldTaxon to newTaxon\r
-//             TaxonNameBase<?,?> synonymName = oldTaxon.getName();\r
-//             if (synonymType == null){\r
-//                     if (synonymName.isHomotypic(newAcceptedTaxon.getName())){\r
-//                             synonymType = SynonymRelationshipType.HOMOTYPIC_SYNONYM_OF();\r
-//                     }else{\r
-//                             //TODO synonymType \r
-//                             synonymType = SynonymRelationshipType.HETEROTYPIC_SYNONYM_OF();\r
-//                     }\r
-//             }\r
-//             SynonymRelationship synRel = newAcceptedTaxon.addSynonymName(synonymName, synonymType, citation, citationMicroReference);\r
-//             \r
-//             //Move Synonym Relations to new Taxon\r
-//             for(SynonymRelationship synRelation : oldTaxon.getSynonymRelations()){\r
-//                     newAcceptedTaxon.addSynonym(synRelation.getSynonym(), synRelation.getType(), \r
-//                                     synRelation.getCitation(), synRelation.getCitationMicroReference());\r
-//             }\r
-//\r
-//             //Move Taxon RelationShips to new Taxon\r
-//             Set<TaxonRelationship> removableTaxonRels = new HashSet<TaxonRelationship>();\r
-//             for(TaxonRelationship taxonRelation : oldTaxon.getTaxonRelations()){\r
-//                     //CHILDREN\r
-//                     if (taxonRelation.getType().equals(TaxonRelationshipType.TAXONOMICALLY_INCLUDED_IN())){\r
-//                             if (taxonRelation.getFromTaxon() == oldTaxon){\r
-//                                     removableTaxonRels.add(taxonRelation);\r
-////                                   oldTaxon.removeTaxonRelation(taxonRelation);\r
-//                             }else if(taxonRelation.getToTaxon() == oldTaxon){\r
-//                                     newAcceptedTaxon.addTaxonomicChild(taxonRelation.getFromTaxon(), taxonRelation.getCitation(), taxonRelation.getCitationMicroReference());\r
-//                                     removableTaxonRels.add(taxonRelation);\r
-////                                   oldTaxon.removeTaxonRelation(taxonRelation);\r
-//                             }else{\r
-//                                     logger.warn("Taxon is not part of its own Taxonrelationship");\r
-//                             }\r
-//                     }\r
-//                     //MISAPPLIED NAMES\r
-//                     if (taxonRelation.getType().equals(TaxonRelationshipType.MISAPPLIED_NAME_FOR())){\r
-//                             if (taxonRelation.getFromTaxon() == oldTaxon){\r
-//                                     newAcceptedTaxon.addMisappliedName(taxonRelation.getToTaxon(), taxonRelation.getCitation(), taxonRelation.getCitationMicroReference());\r
-//                                     removableTaxonRels.add(taxonRelation);\r
-////                                   oldTaxon.removeTaxonRelation(taxonRelation);\r
-//                             }else if(taxonRelation.getToTaxon() == oldTaxon){\r
-//                                     newAcceptedTaxon.addMisappliedName(taxonRelation.getFromTaxon(), taxonRelation.getCitation(), taxonRelation.getCitationMicroReference());\r
-//                                     removableTaxonRels.add(taxonRelation);\r
-////                                   oldTaxon.removeTaxonRelation(taxonRelation);\r
-//                             }else{\r
-//                                     logger.warn("Taxon is not part of its own Taxonrelationship");\r
-//                             }\r
-//                     }\r
-//                     //Concept Relationships\r
-//                     //FIXME implement\r
-////                   if (taxonRelation.getType().equals(TaxonRelationshipType.MISAPPLIEDNAMEFOR())){\r
-////                           if (taxonRelation.getFromTaxon() == oldTaxon){\r
-////                                   newAcceptedTaxon.addMisappliedName(taxonRelation.getToTaxon(), taxonRelation.getCitation(), taxonRelation.getCitationMicroReference());\r
-////                           removableTaxonRels.add(taxonRelation);\r
-////                           }else if(taxonRelation.getToTaxon() == oldTaxon){\r
-////                                   newAcceptedTaxon.addMisappliedName(taxonRelation.getFromTaxon(), taxonRelation.getCitation(), taxonRelation.getCitationMicroReference());\r
-////                   removableTaxonRels.add(taxonRelation);\r
-////                           }else{\r
-////                                   logger.warn("Taxon is not part of its own Taxonrelationship");\r
-////                           }\r
-////                   }\r
-//             }\r
-//             \r
-//             for(TaxonRelationship taxonRel : removableTaxonRels) {\r
-//                     oldTaxon.removeTaxonRelation(taxonRel);\r
-//             }\r
-//             \r
-//             //Move Descriptions to new Taxon\r
-//             Set<TaxonDescription> descriptions = new HashSet<TaxonDescription>();\r
-//             for(TaxonDescription taxDescription : oldTaxon.getDescriptions()){\r
-//                     descriptions.add(taxDescription);\r
-//             }                                               \r
-//             for(TaxonDescription taxDescription : descriptions){\r
-//                     newAcceptedTaxon.addDescription(taxDescription);\r
-//             }\r
-//             \r
-//             CdmStore.getTaxonService().saveTaxon(newAcceptedTaxon);\r
-////           CdmStore.getTaxonService().removeTaxon(oldTaxon);\r
-//     }\r
 }
\ No newline at end of file