cleanup
[cdmlib.git] / cdmlib-persistence / src / main / java / eu / etaxonomy / cdm / persistence / dao / hibernate / occurrence / OccurrenceDaoHibernateImpl.java
index 9b10b40a4106ccfabfad7a5180ff61d48281a12a..6c33f68e1f6e260f3e905cd7c204ec968d52995e 100644 (file)
@@ -57,6 +57,7 @@ import eu.etaxonomy.cdm.persistence.dao.name.IHomotypicalGroupDao;
 import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao;\r
 import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;\r
 import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;\r
+import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;\r
 import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;\r
 import eu.etaxonomy.cdm.persistence.query.MatchMode;\r
 import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
@@ -132,7 +133,7 @@ public class OccurrenceDaoHibernateImpl
     @Override\r
     public long countMedia(SpecimenOrObservationBase occurence) {\r
         checkNotInPriorView("OccurrenceDaoHibernateImpl.countMedia(SpecimenOrObservationBase occurence)");\r
-        Query query = getSession().createQuery("select count(media) from SpecimenOrObservationBase occurence join occurence.media media where occurence = :occurence");\r
+        Query query = getSession().createQuery("SELECT count(media) FROM SpecimenOrObservationBase occurence JOIN occurence.media media WHERE occurence = :occurence");\r
         query.setParameter("occurence", occurence);\r
 \r
         return (Long)query.uniqueResult();\r
@@ -141,7 +142,7 @@ public class OccurrenceDaoHibernateImpl
     @Override\r
     public List<DerivationEvent> getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize,Integer pageNumber, List<String> propertyPaths) {\r
         checkNotInPriorView("OccurrenceDaoHibernateImpl.getDerivationEvents(SpecimenOrObservationBase occurence, Integer pageSize,Integer pageNumber)");\r
-        Query query = getSession().createQuery("select distinct derivationEvent from DerivationEvent derivationEvent join derivationEvent.originals occurence where occurence = :occurence");\r
+        Query query = getSession().createQuery("SELECT DISTINCT derivationEvent FROM DerivationEvent derivationEvent JOIN derivationEvent.originals occurence WHERE occurence = :occurence");\r
         query.setParameter("occurence", occurence);\r
 \r
         addPageSizeAndNumber(query, pageSize, pageNumber);\r
@@ -340,7 +341,8 @@ public class OccurrenceDaoHibernateImpl
     }\r
 \r
     private <T extends SpecimenOrObservationBase> Criteria createFindOccurrenceCriteria(Class<T> clazz, String queryString,\r
-            String significantIdentifier, SpecimenOrObservationType recordBasis, Taxon associatedTaxon, TaxonName associatedTaxonName, MatchMode matchmode, Integer limit,\r
+            String significantIdentifier, SpecimenOrObservationType recordBasis, Taxon associatedTaxon,\r
+            TaxonName associatedTaxonName, MatchMode matchmode, Integer limit,\r
             Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {\r
         Criteria criteria = null;\r
 \r
@@ -373,7 +375,7 @@ public class OccurrenceDaoHibernateImpl
         }\r
 \r
         //recordBasis/SpecimenOrObservationType\r
-        Set<SpecimenOrObservationType> typeAndSubtypes = new HashSet<SpecimenOrObservationType>();\r
+        Set<SpecimenOrObservationType> typeAndSubtypes = new HashSet<>();\r
         if(recordBasis==null){\r
             //add all types\r
             SpecimenOrObservationType[] values = SpecimenOrObservationType.values();\r
@@ -387,7 +389,7 @@ public class OccurrenceDaoHibernateImpl
         }\r
         criteria.add(Restrictions.in("recordBasis", typeAndSubtypes));\r
 \r
-        Set<UUID> associationUuids = new HashSet<UUID>();\r
+        Set<UUID> associationUuids = new HashSet<>();\r
         //taxon associations\r
         if(associatedTaxon!=null){\r
             List<UuidAndTitleCache<SpecimenOrObservationBase>> associatedTaxaList = listUuidAndTitleCacheByAssociatedTaxon(clazz, associatedTaxon, limit, start, orderHints);\r
@@ -552,7 +554,7 @@ public class OccurrenceDaoHibernateImpl
                             (Integer) object[1],\r
                             (String) object[2]),\r
                     (SpecimenOrObservationType)object[3],\r
-                    (TaxonNode)object[4]);\r
+                    new TaxonNodeDto((TaxonNode)object[4]));\r
             if(object.length>5) {\r
                 wrapper.setTaxonDescriptionUuid((UUID)object[5]);\r
             }\r
@@ -638,19 +640,22 @@ public class OccurrenceDaoHibernateImpl
     public Collection<SpecimenNodeWrapper> listUuidAndTitleCacheByAssociatedTaxon(List<UUID> taxonNodeUuids,\r
             Integer limit, Integer start){\r
 \r
-        Collection<SpecimenNodeWrapper> wrappers = new HashSet<>();\r
-        wrappers.addAll(queryIndividualAssociatedSpecimen(taxonNodeUuids, limit, start));\r
-        wrappers.addAll(queryTaxonDeterminations(taxonNodeUuids, limit, start));\r
-        wrappers.addAll(queryTaxonNameDeterminations(taxonNodeUuids, limit, start));\r
-        wrappers.addAll(queryTypeSpecimen(taxonNodeUuids, limit, start));\r
+        Set<SpecimenNodeWrapper> testSet = new HashSet();\r
+\r
+        testSet.addAll(queryIndividualAssociatedSpecimen(taxonNodeUuids, limit, start));\r
+        testSet.addAll(queryTaxonDeterminations(taxonNodeUuids, limit, start));\r
+        testSet.addAll(queryTaxonNameDeterminations(taxonNodeUuids, limit, start));\r
+        testSet.addAll(queryTypeSpecimen(taxonNodeUuids, limit, start));\r
 \r
+        Collection<SpecimenNodeWrapper> wrappers = new HashSet<>();\r
+        wrappers.addAll(testSet);\r
         return wrappers;\r
     }\r
 \r
     @Override\r
     public <T extends SpecimenOrObservationBase> List<UuidAndTitleCache<SpecimenOrObservationBase>> listUuidAndTitleCacheByAssociatedTaxon(Class<T> clazz, Taxon associatedTaxon,\r
             Integer limit, Integer start, List<OrderHint> orderHints){\r
-        Query query = createSpecimenQuery("sob.uuid, sob.id, sob.titleCache", clazz, associatedTaxon, limit, start, orderHints, null);\r
+        Query query = createSpecimenQuery("sob.uuid, sob.id, sob.titleCache", clazz, associatedTaxon, limit, start, orderHints);\r
         if(query==null){\r
             return Collections.emptyList();\r
         }\r
@@ -666,7 +671,7 @@ public class OccurrenceDaoHibernateImpl
     @Override\r
     public <T extends SpecimenOrObservationBase> List<T> listByAssociatedTaxon(Class<T> clazz,\r
             Taxon associatedTaxon, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths) {\r
-        Query query = createSpecimenQuery("sob", clazz, associatedTaxon, limit, start, orderHints, propertyPaths);\r
+        Query query = createSpecimenQuery("sob", clazz, associatedTaxon, limit, start, orderHints);\r
         if(query==null){\r
             return Collections.emptyList();\r
         }\r
@@ -677,8 +682,8 @@ public class OccurrenceDaoHibernateImpl
     }\r
 \r
     private <T extends SpecimenOrObservationBase> Query createSpecimenQuery(String select, Class<T> clazz,\r
-            Taxon associatedTaxon, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths){\r
-        Set<SpecimenOrObservationBase> setOfAll = new HashSet<>();\r
+            Taxon associatedTaxon, Integer limit, Integer start, List<OrderHint> orderHints){\r
+//        Set<SpecimenOrObservationBase> setOfAll = new HashSet<>();\r
         Set<Integer> setOfAllIds = new HashSet<>();\r
 \r
         Criteria criteria = null;\r
@@ -737,7 +742,9 @@ public class OccurrenceDaoHibernateImpl
         for(HomotypicalGroup homotypicalGroup :  associatedTaxon.getHomotypicSynonymyGroups()) {\r
             List<SpecimenTypeDesignation> byHomotypicalGroup = homotypicalGroupDao.getTypeDesignations(homotypicalGroup, SpecimenTypeDesignation.class, null, null, 0, null);\r
             for (SpecimenTypeDesignation specimenTypeDesignation : byHomotypicalGroup) {\r
-                setOfAll.add(specimenTypeDesignation.getTypeSpecimen());\r
+                if (specimenTypeDesignation.getTypeSpecimen() != null){\r
+                    setOfAllIds.add(specimenTypeDesignation.getTypeSpecimen().getId());\r
+                }\r
             }\r
         }\r
 \r