Merging r13268 through r14040 from trunk/cdmlib into branches/cdmlib-unitils3
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / config / TaxonDeletionConfigurator.java
1 // $Id$
2 /**
3 * Copyright (C) 2009 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10 package eu.etaxonomy.cdm.api.service.config;
11
12 import org.apache.log4j.Logger;
13
14 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
15 import eu.etaxonomy.cdm.model.description.TaxonDescription;
16 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
17 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
18 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
19
20 /**
21 * This class is used to configure taxon node deletion.
22 *
23 * @see ITaxonNodeService#delete(eu.etaxonomy.cdm.model.taxon.TaxonNode)
24 *
25 * @author a.mueller
26 * @date 09.11.2011
27 *
28 */
29 public class TaxonDeletionConfigurator extends DeleteConfiguratorBase {
30 @SuppressWarnings("unused")
31 private static final Logger logger = Logger.getLogger(TaxonDeletionConfigurator.class);
32
33 private boolean deleteSynonymRelations = true;
34
35 private boolean deleteSynonymsIfPossible = true;
36
37 private boolean deleteNameIfPossible = true;
38
39 private NameDeletionConfigurator nameDeletionConfig = new NameDeletionConfigurator();
40
41 private boolean deleteTaxonNodes = false;
42
43 private boolean deleteTaxonRelationships = false;
44
45 private boolean deleteDescriptions = true;
46
47
48 /**
49 * If true the taxons name will be deleted if this is possible.
50 * It is possible if the name is not linked in a way that it can not be deleted.
51 * This depends also on the {@link NameDeletionConfigurator}
52 * @see #getNameDeletionConfig()
53 * @return
54 */
55 public boolean isDeleteNameIfPossible() {
56 return deleteNameIfPossible;
57 }
58
59 public void setDeleteNameIfPossible(boolean deleteNameIfPossible) {
60 this.deleteNameIfPossible = deleteNameIfPossible;
61 }
62
63
64 /**
65 * The configurator for name deletion. Only evaluated if {@link #isDeleteNameIfPossible()}
66 * is <code>true</code>.
67 * @see NameDeletionConfigurator
68 * @see #isDeleteNameIfPossible()
69 * @see #isDeleteSynonymsIfPossible()
70 * @return
71 */
72 public NameDeletionConfigurator getNameDeletionConfig() {
73 return nameDeletionConfig;
74 }
75
76 public void setNameDeletionConfig(NameDeletionConfigurator nameDeletionConfig) {
77 this.nameDeletionConfig = nameDeletionConfig;
78 }
79
80
81 /**
82 *
83 * If <code>true</code> all {@link SynonymRelationship relations to synonyms} will be
84 * removed.
85 * Synonyms itself will be removed depending on {@link #deleteSynonymsIfPossible}.
86 * @return
87 */
88 public boolean isDeleteSynonymRelations() {
89 return deleteSynonymRelations;
90 }
91
92 public void setDeleteSynonymRelations(boolean deleteSynonymRelations) {
93 this.deleteSynonymRelations = deleteSynonymRelations;
94 }
95
96
97 /**
98 * If <code>true</code> synonyms will be removed if possible but only if {@link #isDeleteSynonymRelations()}
99 * is also <code>true</code>.
100 * It is possible to remove a synonym if it is not used in any other context, e.g. any
101 * other @link {@link SynonymRelationship}
102 * @return
103 */
104 public boolean isDeleteSynonymsIfPossible() {
105 return deleteSynonymsIfPossible;
106 }
107
108 public void setDeleteSynonymsIfPossible(boolean deleteSynonymsIfPossible) {
109 this.deleteSynonymsIfPossible = deleteSynonymsIfPossible;
110 }
111
112
113
114 /**
115 * If <code>true</code> all {@link TaxonNode taxon nodes} this taxon belongs to
116 * are deleted. If <code>false</code> an exception is thrown if this taxon belongs
117 * to a taxon node.
118 * @return
119 */
120 public boolean isDeleteTaxonNodes() {
121 return deleteTaxonNodes;
122 }
123
124 public void setDeleteTaxonNodes(boolean deleteTaxonNodes) {
125 this.deleteTaxonNodes = deleteTaxonNodes;
126 }
127
128 /**
129 * If <code>true</code> all {@link TaxonRelationship taxon relationships} linked to
130 * the taxon are removed.
131 */
132 // TODO how to handle missapllied names
133 public boolean isDeleteTaxonRelationships() {
134 return deleteTaxonRelationships;
135 }
136
137 public void setDeleteTaxonRelationships(boolean deleteTaxonRelationships) {
138 this.deleteTaxonRelationships = deleteTaxonRelationships;
139 }
140
141 /**
142 * If <code>true</code> all {@link TaxonDescription taxon descriptions} linked to
143 * the taxon are deleted.
144 */
145 public boolean isDeleteDescriptions() {
146 return deleteDescriptions;
147 }
148
149 public void setDeleteDescriptions(boolean deleteDescriptions) {
150 this.deleteDescriptions = deleteDescriptions;
151 }
152
153
154
155
156 }