2 * Copyright (C) 2007 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.taxeditor
.actions
.cdm
;
12 import org
.apache
.log4j
.Logger
;
13 import org
.eclipse
.jface
.action
.Action
;
14 import org
.eclipse
.jface
.resource
.ImageDescriptor
;
16 import eu
.etaxonomy
.cdm
.model
.name
.HomotypicalGroup
;
17 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
18 import eu
.etaxonomy
.cdm
.model
.taxon
.Synonym
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
20 import eu
.etaxonomy
.taxeditor
.ITaxEditorConstants
;
23 * 1) Changes synonym name's homotypic group, 2) Deletes synonym from its accepted taxon,
24 * 3) Creates a new synonym for the accepted taxon
29 public class ChangeTaxonRelationToSynonymAction
extends Action
{
30 private static final Logger logger
= Logger
31 .getLogger(ChangeTaxonRelationToSynonymAction
.class);
33 private static String text
= "Change synonym's homotypic group";
34 private ImageDescriptor image
= null;
36 private Taxon relatedTaxon
;
38 private HomotypicalGroup newHomotypicGroup
;
40 private ChangeTaxonRelationToSynonymAction() {
42 setImageDescriptor(image
);
45 public ChangeTaxonRelationToSynonymAction(Taxon relatedTaxon
, Taxon taxon
, HomotypicalGroup newHomotypicGroup
) {
48 this.relatedTaxon
= relatedTaxon
;
50 this.newHomotypicGroup
= newHomotypicGroup
;
55 if (relatedTaxon
== null || relatedTaxon
.getName() == null ||
56 taxon
== null || taxon
.getName() == null) {
60 TaxonNameBase relatedTaxonName
= relatedTaxon
.getName();
61 String synonymType
= null;
62 Synonym synonym
= null;
64 HomotypicalGroup oldHomotypicGroup
= relatedTaxonName
.getHomotypicalGroup();
65 HomotypicalGroup taxonHomotypicGroup
= taxon
.getName().getHomotypicalGroup();
67 new ChangeNameHomotypicGroup(relatedTaxonName
, newHomotypicGroup
).run();
69 new DeleteRelatedTaxonFromAcceptedTaxonAction(relatedTaxon
, taxon
).run();
70 if (newHomotypicGroup
.equals(taxonHomotypicGroup
)) {
71 AddHomotypicSynonymToTaxonAction addSynonymAction
= new AddHomotypicSynonymToTaxonAction(relatedTaxonName
, taxon
);
72 addSynonymAction
.run();
73 synonym
= addSynonymAction
.getSynonym();
75 AddHeterotypicSynonymToTaxonAction addSynonymAction
= new AddHeterotypicSynonymToTaxonAction(relatedTaxonName
, taxon
);
76 addSynonymAction
.run();
77 synonym
= addSynonymAction
.getSynonym();
80 firePropertyChange(ITaxEditorConstants
.HOMOTYPIC_GROUP
, null, synonym
);