ref #9797 introducing TaxonAutoInitializer to init taxonNodes and adapting init strat...
authorAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Mon, 4 Oct 2021 11:50:48 +0000 (13:50 +0200)
committerAndreas Kohlbecker <a.kohlbecker@bgbm.org>
Mon, 4 Oct 2021 11:52:00 +0000 (13:52 +0200)
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/initializer/TaxonAutoInitializer.java [new file with mode: 0644]
cdmlib-persistence/src/main/resources/eu/etaxonomy/cdm/persistence.xml
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/TaxonPortalController.java

diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/initializer/TaxonAutoInitializer.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/initializer/TaxonAutoInitializer.java
new file mode 100644 (file)
index 0000000..fd5cc7d
--- /dev/null
@@ -0,0 +1,42 @@
+/**
+* Copyright (C) 2009 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.cdm.persistence.dao.initializer;
+
+import java.util.Optional;
+
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+
+/**
+ * Initializes the {@link Taxon#getTaxonNodes() taxonNodes}, which is required for
+ * @{link {@link Taxon#isMisapplicationOnly()},
+ * see https://dev.e-taxonomy.eu/redmine/issues/9797
+ * <p>
+ * <b>NOTE:</b> <code>Taxon.name</code> and <code>Taxon.sec</code> are initialized by the {@link TaxonNodeAutoInitializer}
+ * <p>
+ *
+ *
+ * @author a.kohlbecker
+ * @since 30.07.2010
+ */
+public class TaxonAutoInitializer extends AutoPropertyInitializer<Taxon> {
+
+    @Override
+    public void initialize(Taxon bean) {
+       beanInitializer.initializeInstance(bean.getTaxonNodes());
+    }
+
+    @Override
+    public Optional<String> hibernateFetchJoin(Class<?> clazz, String beanAlias){
+
+        String result = "";
+        result += String.format(" LEFT JOIN FETCH %s.taxonNodes tn ", beanAlias);
+        return Optional.of(result);
+    }
+
+}
\ No newline at end of file
index ceec778520e03b01350246f8dfab27628e8a3095..723c6a7777ea0bd912822f7b56efe410b796baa3 100644 (file)
@@ -47,6 +47,7 @@
     <bean id="mediaAutoInitializer" class="eu.etaxonomy.cdm.persistence.dao.initializer.MediaAutoInitializer"></bean>
     <bean id="typeDesignationAutoInitializer" class="eu.etaxonomy.cdm.persistence.dao.initializer.TypeDesignationAutoInitializer"></bean>
     <bean id="teamAutoInitializer" class="eu.etaxonomy.cdm.persistence.dao.initializer.TeamAutoInitializer"></bean>
+    <bean id="taxonAutoInitializer" class="eu.etaxonomy.cdm.persistence.dao.initializer.TaxonAutoInitializer"></bean>
 
     <bean id="defaultBeanInitializer" class="eu.etaxonomy.cdm.persistence.dao.initializer.AdvancedBeanInitializer">
     <!--
index 3a6518731c27fdb3975ba33f37b41878d0ddd230..92d1828834bcb7fdca0733b3e484039dec37aa81 100644 (file)
@@ -114,9 +114,10 @@ public class TaxonPortalController extends TaxonController{
             "$",
             "sources",
             "statusNote",
-            // taxon relations, see TaxonRelationshipBeanProcessor
-            "relationsFromThisTaxon.toTaxon.taxonNodes",
-            "relationsToThisTaxon.fromTaxon.taxonNodes",
+            "relationsFromThisTaxon.toTaxon.secSource.citation.authorship",
+            "relationsFromThisTaxon.toTaxon.secSource.citation.inReference.authorship",
+            "relationsToThisTaxon.fromTaxon.secSource.citation.authorship",
+            "relationsToThisTaxon.fromTaxon.secSource.citation.inReference.authorship",
             // the name
             "name.$",
             "name.nomenclaturalSource.citation.authorship",