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 99bee3f4e4a99b8377fd0ab776827344bd216a6a..7b5029ee749f4a43f3d3c7424a141fb8a51f40f6 100644 (file)
@@ -52,7 +52,7 @@ import eu.etaxonomy.cdm.persistence.query.OrderHint;
 @Qualifier("descriptionDaoImpl")\r
 public class DescriptionDaoImpl extends IdentifiableDaoBase<DescriptionBase> implements IDescriptionDao{\r
 \r
-       private static final Logger logger = Logger.getLogger(DescriptionDaoImpl.class);\r
+    private static final Logger logger = Logger.getLogger(DescriptionDaoImpl.class);\r
 \r
     public DescriptionDaoImpl() {\r
         super(DescriptionBase.class);\r
@@ -62,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
@@ -677,11 +688,11 @@ 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
@@ -693,9 +704,9 @@ public class DescriptionDaoImpl extends IdentifiableDaoBase<DescriptionBase> imp
 \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
@@ -708,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
@@ -720,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
@@ -731,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