3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.api
.service
.config
;
12 import org
.apache
.log4j
.Logger
;
14 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonService
;
15 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
16 import eu
.etaxonomy
.cdm
.model
.taxon
.Classification
;
17 import eu
.etaxonomy
.cdm
.model
.taxon
.SynonymRelationship
;
18 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
19 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationship
;
20 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonRelationshipType
;
23 * This class is used to configure taxon node deletion.
24 * It is initialized with the following default settings:
26 * <li> deleteSynonymRelations: <b>true</b></li>
27 * <li> deleteSynonymsIfPossible: <b>true</b></li>
28 * <li> deleteMisappliedNamesAndInvalidDesignations: <b>true</b></li>
29 * <li> deleteNameIfPossible: <b>true</b></li>
30 * <li> nameDeletionConfig: see {@link NameDeletionConfigurator}</li>
31 * <li> taxonNodeConfig: see {@link TaxonNodeDeletionConfigurator}</li>
32 * <li> deleteTaxonNodes: <b>true</b></li>
33 * <li> deleteTaxonRelationships: <b>true</b>; </li>
34 * <li> deleteDescriptions: <b>true</b></li>
35 * <li> deleteInAllClassifications: <b>true</b></li>
38 * @see ITaxonService#deleteTaxon(eu.etaxonomy.cdm.model.taxon.Taxon)
44 public class TaxonDeletionConfigurator
extends TaxonBaseDeletionConfigurator
{
45 @SuppressWarnings("unused")
46 private static final Logger logger
= Logger
.getLogger(TaxonDeletionConfigurator
.class);
48 private boolean deleteSynonymRelations
= true;
50 private boolean deleteSynonymsIfPossible
= true;
52 private boolean deleteMisappliedNamesAndInvalidDesignations
= true;
54 private boolean deleteNameIfPossible
= true;
56 private NameDeletionConfigurator nameDeletionConfig
= new NameDeletionConfigurator();
59 private TaxonNodeDeletionConfigurator taxonNodeConfig
= new TaxonNodeDeletionConfigurator();
62 private boolean deleteTaxonNodes
= true;
64 private boolean deleteTaxonRelationships
= true;
66 private boolean deleteDescriptions
= true;
68 private boolean deleteInAllClassifications
= true;
71 public boolean isDeleteInAllClassifications() {
72 return deleteInAllClassifications
;
76 public void setDeleteInAllClassifications(boolean deleteInAllClassifications
) {
77 this.deleteInAllClassifications
= deleteInAllClassifications
;
81 * If true the taxons name will be deleted if this is possible.
82 * It is possible if the name is not linked in a way that it can not be deleted.
83 * This depends also on the {@link NameDeletionConfigurator}
84 * @see #getNameDeletionConfig()
88 public boolean isDeleteNameIfPossible() {
89 return deleteNameIfPossible
;
93 public void setDeleteNameIfPossible(boolean deleteNameIfPossible
) {
94 this.deleteNameIfPossible
= deleteNameIfPossible
;
99 * The configurator for name deletion. Only evaluated if {@link #isDeleteNameIfPossible()}
100 * is <code>true</code>.
101 * @see NameDeletionConfigurator
102 * @see #isDeleteNameIfPossible()
103 * @see #isDeleteSynonymsIfPossible()
107 public NameDeletionConfigurator
getNameDeletionConfig() {
108 return nameDeletionConfig
;
112 public void setNameDeletionConfig(NameDeletionConfigurator nameDeletionConfig
) {
113 this.nameDeletionConfig
= nameDeletionConfig
;
118 * If <code>true</code> related taxa with {@link TaxonRelationshipType} misappliedName or invalidDesignation will be removed if possible
119 * It is possible to remove a related taxon if it is not used in any other context, e.g. any
120 * other @link {@link TaxonRelationship} or in another @link {@link Classification}
123 public boolean isDeleteMisappliedNamesAndInvalidDesignations() {
124 return deleteMisappliedNamesAndInvalidDesignations
;
128 public void setDeleteMisappliedNamesAndInvalidDesignations(
129 boolean deleteMisappliedNamesAndInvalidDesignations
) {
130 this.deleteMisappliedNamesAndInvalidDesignations
= deleteMisappliedNamesAndInvalidDesignations
;
137 * The configurator for node deletion. Only evaluated if {@link #isDeleteNode()}
138 * is <code>true</code>.
139 * @see TaxonNodeDeletionConfigurator
140 * @see #isDeleteNode()
141 * @see #isDeleteSynonymsIfPossible()
145 public TaxonNodeDeletionConfigurator
getTaxonNodeConfig() {
146 return taxonNodeConfig
;
149 public void setTaxonNodeConfig(TaxonNodeDeletionConfigurator taxonNodeConfig
) {
150 this.taxonNodeConfig
= taxonNodeConfig
;
156 * If <code>true</code> all {@link SynonymRelationship relations to synonyms} will be
158 * Synonyms itself will be removed depending on {@link #deleteSynonymsIfPossible}.
161 public boolean isDeleteSynonymRelations() {
162 return deleteSynonymRelations
;
165 public void setDeleteSynonymRelations(boolean deleteSynonymRelations
) {
166 this.deleteSynonymRelations
= deleteSynonymRelations
;
171 * If <code>true</code> synonyms will be removed if possible but only if {@link #isDeleteSynonymRelations()}
172 * is also <code>true</code>.
173 * It is possible to remove a synonym if it is not used in any other context, e.g. any
174 * other @link {@link SynonymRelationship}
177 public boolean isDeleteSynonymsIfPossible() {
178 return deleteSynonymsIfPossible
;
181 public void setDeleteSynonymsIfPossible(boolean deleteSynonymsIfPossible
) {
182 this.deleteSynonymsIfPossible
= deleteSynonymsIfPossible
;
188 * If <code>true</code> all {@link TaxonNode taxon nodes} this taxon belongs to
189 * are deleted. If <code>false</code> an exception is thrown if this taxon belongs
193 public boolean isDeleteTaxonNodes() {
194 return deleteTaxonNodes
;
197 public void setDeleteTaxonNodes(boolean deleteTaxonNodes
) {
198 this.deleteTaxonNodes
= deleteTaxonNodes
;
202 * If <code>true</code> all {@link TaxonRelationship taxon relationships} linked to
203 * the taxon are removed.
205 // TODO how to handle missapllied names
206 public boolean isDeleteTaxonRelationships() {
207 return deleteTaxonRelationships
;
210 public void setDeleteTaxonRelationships(boolean deleteTaxonRelationships
) {
211 this.deleteTaxonRelationships
= deleteTaxonRelationships
;
215 * If <code>true</code> all {@link TaxonDescription taxon descriptions} linked to
216 * the taxon are deleted.
218 public boolean isDeleteDescriptions() {
219 return deleteDescriptions
;
222 public void setDeleteDescriptions(boolean deleteDescriptions
) {
223 this.deleteDescriptions
= deleteDescriptions
;