new nodeDeletionConfiguator to fit for taxonnode and feature node deletion
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / config / TaxonDeletionConfigurator.java
index f08948dd1141f5626c0dd043f075c93ae95bff98..98d3bb870f1bfdec872fc363b3efa363d5ff53a9 100644 (file)
@@ -1,9 +1,9 @@
 // $Id$\r
 /**\r
 * Copyright (C) 2009 EDIT\r
-* European Distributed Institute of Taxonomy \r
+* European Distributed Institute of Taxonomy\r
 * http://www.e-taxonomy.eu\r
-* \r
+*\r
 * The contents of this file are subject to the Mozilla Public License Version 1.1\r
 * See LICENSE.TXT at the top of this package for the full license terms.\r
 */\r
@@ -11,200 +11,187 @@ package eu.etaxonomy.cdm.api.service.config;
 \r
 import org.apache.log4j.Logger;\r
 \r
-import eu.etaxonomy.cdm.api.service.ITaxonNodeService;\r
+import eu.etaxonomy.cdm.api.service.ITaxonService;\r
 import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
+import eu.etaxonomy.cdm.model.taxon.Classification;\r
 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonNode;\r
 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;\r
+import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;\r
 \r
 /**\r
  * This class is used to configure taxon node deletion.\r
- * \r
+ * It is initialized with the following default settings:\r
+ * <ul>\r
+ *  <li> deleteSynonymRelations: <b>true</b></li>\r
+ *  <li> deleteSynonymsIfPossible: <b>true</b></li>\r
+ *  <li> deleteMisappliedNamesAndInvalidDesignations: <b>true</b></li>\r
+ *  <li> deleteNameIfPossible: <b>true</b></li>\r
+ *  <li> nameDeletionConfig: see {@link NameDeletionConfigurator}</li>\r
+ *  <li> taxonNodeConfig: see {@link TaxonNodeDeletionConfigurator}</li>\r
+ *  <li> deleteTaxonNodes: <b>true</b></li>\r
+ *  <li> deleteTaxonRelationships: <b>true</b>; </li>\r
+ *  <li> deleteDescriptions: <b>true</b></li>\r
+ *  <li> deleteInAllClassifications: <b>true</b></li>\r
+ * </ul>\r
+ *\r
  * @see ITaxonService#deleteTaxon(eu.etaxonomy.cdm.model.taxon.Taxon)\r
- * \r
+ *\r
  * @author a.mueller\r
  * @date 09.11.2011\r
  *\r
  */\r
 public class TaxonDeletionConfigurator extends TaxonBaseDeletionConfigurator {\r
-       @SuppressWarnings("unused")\r
-       private static final Logger logger = Logger.getLogger(TaxonDeletionConfigurator.class);\r
-\r
-       private boolean deleteSynonymRelations = true;\r
-       \r
-       private boolean deleteSynonymsIfPossible = true;\r
-       \r
-       private boolean deleteMisappliedNamesAndInvalidDesignations = true;\r
-\r
-       private boolean deleteNameIfPossible = true;\r
-       \r
-       private NameDeletionConfigurator nameDeletionConfig = new NameDeletionConfigurator();\r
-       \r
-       \r
-       private TaxonNodeDeletionConfigurator taxonNodeConfig = new TaxonNodeDeletionConfigurator();\r
-\r
-       \r
-       private boolean deleteTaxonNodes = true;\r
-       \r
-       private boolean deleteTaxonRelationships = true; \r
-       \r
-       private boolean deleteDescriptions = true;\r
-       \r
-       private boolean deleteInAllClassifications = true;\r
+    @SuppressWarnings("unused")\r
+    private static final Logger logger = Logger.getLogger(TaxonDeletionConfigurator.class);\r
+\r
+    private boolean deleteSynonymRelations = true;\r
+\r
+    private boolean deleteSynonymsIfPossible = true;\r
+\r
+    private boolean deleteMisappliedNamesAndInvalidDesignations = true;\r
+\r
+   // private boolean deleteNameIfPossible = true;\r
+\r
+    //private NameDeletionConfigurator nameDeletionConfig = new NameDeletionConfigurator();\r
+\r
+\r
+    private TaxonNodeDeletionConfigurator taxonNodeConfig = new TaxonNodeDeletionConfigurator();\r
+\r
+\r
+    private boolean deleteTaxonNodes = true;\r
+\r
+    private boolean deleteTaxonRelationships = true;\r
+\r
+    private boolean deleteDescriptions = true;\r
+\r
+    private boolean deleteInAllClassifications = false;\r
+\r
+\r
 \r
 \r
        public boolean isDeleteInAllClassifications() {\r
-               return deleteInAllClassifications;\r
-       }\r
-\r
-\r
-       public void setDeleteInAllClassifications(boolean deleteInAllClassifications) {\r
-               this.deleteInAllClassifications = deleteInAllClassifications;\r
-       }\r
-\r
-       /**\r
-        * If true the taxons name will be deleted if this is possible.\r
-        * It is possible if the name is not linked in a way that it can not be deleted.\r
-        * This depends also on the {@link NameDeletionConfigurator}\r
-        * @see #getNameDeletionConfig()\r
-        * @return\r
-        */\r
-       public boolean isDeleteNameIfPossible() {\r
-               return deleteNameIfPossible;\r
-       }\r
-\r
-       public void setDeleteNameIfPossible(boolean deleteNameIfPossible) {\r
-               this.deleteNameIfPossible = deleteNameIfPossible;\r
-       }\r
-\r
-\r
-       /**\r
-        * The configurator for name deletion. Only evaluated if {@link #isDeleteNameIfPossible()}\r
-        * is <code>true</code>.\r
-        * @see NameDeletionConfigurator\r
-        * @see #isDeleteNameIfPossible()\r
-        * @see #isDeleteSynonymsIfPossible()\r
-        * @return\r
-        */\r
-       public NameDeletionConfigurator getNameDeletionConfig() {\r
-               return nameDeletionConfig;\r
-       }\r
-\r
-       public void setNameDeletionConfig(NameDeletionConfigurator nameDeletionConfig) {\r
-               this.nameDeletionConfig = nameDeletionConfig;\r
-       }\r
-\r
-       \r
-       /**\r
-        * If <code>true</code> related taxa with  {@link TaxonRelationshipType} misappliedName or invalidDesignation will be removed if possible \r
-        * It is possible to remove a related taxon if it is not used in any other context, e.g. any \r
-        * other @link {@link TaxonRelationship} or in another @link {@link Classification}\r
-        * @return\r
-        */\r
-       public boolean isDeleteMisappliedNamesAndInvalidDesignations() {\r
-               return deleteMisappliedNamesAndInvalidDesignations;\r
-       }\r
-\r
-\r
-       public void setDeleteMisappliedNamesAndInvalidDesignations(\r
-                       boolean deleteMisappliedNamesAndInvalidDesignations) {\r
-               this.deleteMisappliedNamesAndInvalidDesignations = deleteMisappliedNamesAndInvalidDesignations;\r
-       }\r
-       \r
-\r
-\r
-       \r
-       /**\r
-        * The configurator for node deletion. Only evaluated if {@link #isDeleteNode()}\r
-        * is <code>true</code>.\r
-        * @see TaxonNodeDeletionConfigurator\r
-        * @see #isDeleteNode()\r
-        * @see #isDeleteSynonymsIfPossible()\r
-        * @return\r
-        */\r
-       \r
-       public TaxonNodeDeletionConfigurator getTaxonNodeConfig() {\r
-               return taxonNodeConfig;\r
-       }\r
-\r
-       public void setTaxonNodeConfig(TaxonNodeDeletionConfigurator taxonNodeConfig) {\r
-               this.taxonNodeConfig = taxonNodeConfig;\r
-       }\r
-\r
-\r
-       /**\r
-        * \r
-        * If <code>true</code> all {@link SynonymRelationship relations to synonyms} will be \r
-        * removed.\r
-        * Synonyms itself will be removed depending on {@link #deleteSynonymsIfPossible}.\r
-        * @return\r
-        */\r
-       public boolean isDeleteSynonymRelations() {\r
-               return deleteSynonymRelations;\r
-       }\r
-\r
-       public void setDeleteSynonymRelations(boolean deleteSynonymRelations) {\r
-               this.deleteSynonymRelations = deleteSynonymRelations;\r
-       }\r
-\r
-       \r
-       /**\r
-        * If <code>true</code> synonyms will be removed if possible but only if {@link #isDeleteSynonymRelations()}\r
-        * is also <code>true</code>.\r
-        * It is possible to remove a synonym if it is not used in any other context, e.g. any \r
-        * other @link {@link SynonymRelationship}\r
-        * @return\r
-        */\r
-       public boolean isDeleteSynonymsIfPossible() {\r
-               return deleteSynonymsIfPossible;\r
-       }\r
-\r
-       public void setDeleteSynonymsIfPossible(boolean deleteSynonymsIfPossible) {\r
-               this.deleteSynonymsIfPossible = deleteSynonymsIfPossible;\r
-       }\r
-\r
-\r
-\r
-       /**\r
-        * If <code>true</code> all {@link TaxonNode taxon nodes} this taxon belongs to\r
-        * are deleted. If <code>false</code> an exception is thrown if this taxon belongs\r
-        * to a taxon node.\r
-        * @return\r
-        */\r
-       public boolean isDeleteTaxonNodes() {\r
-               return deleteTaxonNodes;\r
-       }\r
-       \r
-       public void setDeleteTaxonNodes(boolean deleteTaxonNodes) {\r
-               this.deleteTaxonNodes = deleteTaxonNodes;\r
-       }\r
-\r
-       /**\r
-        * If <code>true</code> all {@link TaxonRelationship taxon relationships} linked to \r
-        * the taxon are removed.\r
-        */\r
-        // TODO how to handle missapllied names\r
-       public boolean isDeleteTaxonRelationships() {\r
-               return deleteTaxonRelationships;\r
-       }\r
-       \r
-       public void setDeleteTaxonRelationships(boolean deleteTaxonRelationships) {\r
-               this.deleteTaxonRelationships = deleteTaxonRelationships;\r
-       }\r
-\r
-       /**\r
-        * If <code>true</code> all {@link TaxonDescription taxon descriptions} linked to \r
-        * the taxon are deleted.\r
-        */\r
-       public boolean isDeleteDescriptions() {\r
-               return deleteDescriptions;\r
-       }\r
-\r
-       public void setDeleteDescriptions(boolean deleteDescriptions) {\r
-               this.deleteDescriptions = deleteDescriptions;\r
-       }\r
-\r
-       \r
-       \r
-       \r
+        return deleteInAllClassifications;\r
+    }\r
+\r
+\r
+    public void setDeleteInAllClassifications(boolean deleteInAllClassifications) {\r
+        this.deleteInAllClassifications = deleteInAllClassifications;\r
+    }\r
+\r
+\r
+\r
+\r
+    /**\r
+     * If <code>true</code> related taxa with  {@link TaxonRelationshipType} misappliedName or invalidDesignation will be removed if possible\r
+     * It is possible to remove a related taxon if it is not used in any other context, e.g. any\r
+     * other @link {@link TaxonRelationship} or in another @link {@link Classification}\r
+     * @return\r
+     */\r
+    public boolean isDeleteMisappliedNamesAndInvalidDesignations() {\r
+        return deleteMisappliedNamesAndInvalidDesignations;\r
+    }\r
+\r
+\r
+    public void setDeleteMisappliedNamesAndInvalidDesignations(\r
+            boolean deleteMisappliedNamesAndInvalidDesignations) {\r
+        this.deleteMisappliedNamesAndInvalidDesignations = deleteMisappliedNamesAndInvalidDesignations;\r
+    }\r
+\r
+\r
+\r
+\r
+    /**\r
+     * The configurator for node deletion. Only evaluated if {@link #isDeleteNode()}\r
+     * is <code>true</code>.\r
+     * @see TaxonNodeDeletionConfigurator\r
+     * @see #isDeleteNode()\r
+     * @see #isDeleteSynonymsIfPossible()\r
+     * @return\r
+     */\r
+\r
+    public TaxonNodeDeletionConfigurator getTaxonNodeConfig() {\r
+        return taxonNodeConfig;\r
+    }\r
+\r
+    public void setTaxonNodeConfig(TaxonNodeDeletionConfigurator taxonNodeConfig) {\r
+        this.taxonNodeConfig = taxonNodeConfig;\r
+    }\r
+\r
+\r
+    /**\r
+     *\r
+     * If <code>true</code> all {@link SynonymRelationship relations to synonyms} will be\r
+     * removed.\r
+     * Synonyms itself will be removed depending on {@link #deleteSynonymsIfPossible}.\r
+     * @return\r
+     */\r
+    public boolean isDeleteSynonymRelations() {\r
+        return deleteSynonymRelations;\r
+    }\r
+\r
+    public void setDeleteSynonymRelations(boolean deleteSynonymRelations) {\r
+        this.deleteSynonymRelations = deleteSynonymRelations;\r
+    }\r
+\r
+\r
+    /**\r
+     * If <code>true</code> synonyms will be removed if possible but only if {@link #isDeleteSynonymRelations()}\r
+     * is also <code>true</code>.\r
+     * It is possible to remove a synonym if it is not used in any other context, e.g. any\r
+     * other @link {@link SynonymRelationship}\r
+     * @return\r
+     */\r
+    public boolean isDeleteSynonymsIfPossible() {\r
+        return deleteSynonymsIfPossible;\r
+    }\r
+\r
+    public void setDeleteSynonymsIfPossible(boolean deleteSynonymsIfPossible) {\r
+        this.deleteSynonymsIfPossible = deleteSynonymsIfPossible;\r
+    }\r
+\r
+\r
+\r
+    /**\r
+     * If <code>true</code> all {@link TaxonNode taxon nodes} this taxon belongs to\r
+     * are deleted. If <code>false</code> an exception is thrown if this taxon belongs\r
+     * to a taxon node.\r
+     * @return\r
+     */\r
+    public boolean isDeleteTaxonNodes() {\r
+        return deleteTaxonNodes;\r
+    }\r
+\r
+    public void setDeleteTaxonNodes(boolean deleteTaxonNodes) {\r
+        this.deleteTaxonNodes = deleteTaxonNodes;\r
+    }\r
+\r
+    /**\r
+     * If <code>true</code> all {@link TaxonRelationship taxon relationships} linked to\r
+     * the taxon are removed.\r
+     */\r
+     // TODO how to handle missapllied names\r
+    public boolean isDeleteTaxonRelationships() {\r
+        return deleteTaxonRelationships;\r
+    }\r
+\r
+    public void setDeleteTaxonRelationships(boolean deleteTaxonRelationships) {\r
+        this.deleteTaxonRelationships = deleteTaxonRelationships;\r
+    }\r
+\r
+    /**\r
+     * If <code>true</code> all {@link TaxonDescription taxon descriptions} linked to\r
+     * the taxon are deleted.\r
+     */\r
+    public boolean isDeleteDescriptions() {\r
+        return deleteDescriptions;\r
+    }\r
+\r
+    public void setDeleteDescriptions(boolean deleteDescriptions) {\r
+        this.deleteDescriptions = deleteDescriptions;\r
+    }\r
+\r
+\r
+\r
+\r
 }\r