*/\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
* @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
}\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
}\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
//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
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
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
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