fixing #4112 (portal/taxon/{uuid}/accepted/{uuid} takes exceedingly much time in...
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / persistence / dao / hibernate / description / DescriptionDaoImpl.java
index a458a6383a46baff07a5863c06a89646423e8888..7b5029ee749f4a43f3d3c7424a141fb8a51f40f6 100644 (file)
@@ -52,7 +52,6 @@ import eu.etaxonomy.cdm.persistence.query.OrderHint;
 @Qualifier("descriptionDaoImpl")\r
 public class DescriptionDaoImpl extends IdentifiableDaoBase<DescriptionBase> implements IDescriptionDao{\r
 \r
-    @SuppressWarnings("unused")\r
     private static final Logger logger = Logger.getLogger(DescriptionDaoImpl.class);\r
 \r
     public DescriptionDaoImpl() {\r
@@ -63,6 +62,17 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase<DescriptionBase> imp
         indexedClasses[2] = SpecimenDescription.class;\r
     }\r
 \r
+//    @Override  //Override for testing\r
+//    public DescriptionBase load(UUID uuid, List<String> propertyPaths){\r
+//     DescriptionBase bean = findByUuid(uuid);\r
+//        if(bean == null){\r
+//            return bean;\r
+//        }\r
+//        defaultBeanInitializer.initialize(bean, propertyPaths);\r
+//\r
+//        return bean;\r
+//    }\r
+\r
     @Override\r
     public int countDescriptionByDistribution(Set<NamedArea> namedAreas, PresenceAbsenceTermBase status) {\r
         checkNotInPriorView("DescriptionDaoImpl.countDescriptionByDistribution(Set<NamedArea> namedAreas, PresenceAbsenceTermBase status)");\r
@@ -678,23 +688,25 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase<DescriptionBase> imp
 \r
     @Override\r
     public <T extends DescriptionElementBase> List<T> getDescriptionElementForTaxon(\r
-            Taxon taxon, Set<Feature> features,\r
+            UUID taxonUuid, Set<Feature> features,\r
             Class<T> type, Integer pageSize,\r
             Integer pageNumber, List<String> propertyPaths) {\r
 \r
-        Query query = prepareGetDescriptionElementForTaxon(taxon, features, type, pageSize, pageNumber, false);\r
+        Query query = prepareGetDescriptionElementForTaxon(taxonUuid, features, type, pageSize, pageNumber, false);\r
 \r
+        if (logger.isDebugEnabled()){logger.debug(" dao: get list ...");}\r
         List<T> results = query.list();\r
+        if (logger.isDebugEnabled()){logger.debug(" dao: initialize ...");}\r
         defaultBeanInitializer.initializeAll(results, propertyPaths);\r
-\r
+        if (logger.isDebugEnabled()){logger.debug(" dao: initialize - DONE");}\r
         return results;\r
     }\r
 \r
     @Override\r
     public <T extends DescriptionElementBase> long countDescriptionElementForTaxon(\r
-            Taxon taxon, Set<Feature> features, Class<T> type) {\r
+            UUID taxonUuid, Set<Feature> features, Class<T> type) {\r
 \r
-        Query query = prepareGetDescriptionElementForTaxon(taxon, features, type, null, null, true);\r
+        Query query = prepareGetDescriptionElementForTaxon(taxonUuid, features, type, null, null, true);\r
 \r
         return (Long)query.uniqueResult();\r
     }\r
@@ -707,7 +719,7 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase<DescriptionBase> imp
      * @param pageNumber\r
      * @return\r
      */\r
-    private <T extends DescriptionElementBase> Query prepareGetDescriptionElementForTaxon(Taxon taxon,\r
+    private <T extends DescriptionElementBase> Query prepareGetDescriptionElementForTaxon(UUID taxonUuid,\r
             Set<Feature> features, Class<T> type, Integer pageSize, Integer pageNumber, boolean asCountQuery) {\r
 \r
         String listOrCount;\r
@@ -719,7 +731,7 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase<DescriptionBase> imp
         String queryString = "select " + listOrCount +\r
             " from TaxonDescription as td" +\r
             " left join td.descriptionElements as de" +\r
-            " where td.taxon = :taxon ";\r
+            " where td.taxon.uuid = :taxon_uuid ";\r
 \r
         if(type != null){\r
             queryString += " and de.class = :type";\r
@@ -730,7 +742,7 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase<DescriptionBase> imp
 //             System.out.println(queryString);\r
         Query query = getSession().createQuery(queryString);\r
 \r
-        query.setParameter("taxon", taxon);\r
+        query.setParameter("taxon_uuid", taxonUuid);\r
         if(type != null){\r
             query.setParameter("type", type.getSimpleName());\r
         }\r