commit 79c29018f47d14c3f828d42dff2544fa81e1d37a
Author: Patrick Plitzner
Date: Fri Apr 20 08:33:32 2018 +0200
ref #7095 Add dao method for listing UuidAndTitleCache object
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java
index a627b89961..8a5b894bcd 100644
--- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java
+++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/name/TaxonNameDaoHibernateImpl.java
@@ -40,6 +40,7 @@ import eu.etaxonomy.cdm.model.name.IZoologicalName;
import eu.etaxonomy.cdm.model.name.NameRelationship;
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
import eu.etaxonomy.cdm.model.name.Rank;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
@@ -359,14 +360,46 @@ public class TaxonNameDaoHibernateImpl extends IdentifiableDaoBase im
return getTypeDesignations(name, null, status, pageSize, pageNumber, propertyPaths);
}
+ @Override
+ public List getTypeSpecimenIdsForTaxonName(TaxonName name,
+ TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber){
+ Query query = getTypeDesignationQuery("designation.typeSpecimen.id", name, SpecimenTypeDesignation.class, status);
+
+ if(pageSize != null) {
+ query.setMaxResults(pageSize);
+ if(pageNumber != null) {
+ query.setFirstResult(pageNumber * pageSize);
+ } else {
+ query.setFirstResult(0);
+ }
+ }
+ return query.list();
+ }
+
@Override
public List getTypeDesignations(TaxonName name,
Class type,
TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber,
List propertyPaths){
checkNotInPriorView("getTypeDesignations(TaxonName name,TypeDesignationStatusBase status, Integer pageSize, Integer pageNumber, List propertyPaths)");
+
+ Query query = getTypeDesignationQuery("designation", name, type, status);
+
+ if(pageSize != null) {
+ query.setMaxResults(pageSize);
+ if(pageNumber != null) {
+ query.setFirstResult(pageNumber * pageSize);
+ } else {
+ query.setFirstResult(0);
+ }
+ }
+ return defaultBeanInitializer.initializeAll((List)query.list(), propertyPaths);
+ }
+
+ private Query getTypeDesignationQuery(String select, TaxonName name,
+ Class type, TypeDesignationStatusBase status){
Query query = null;
- String queryString = "select designation from TypeDesignationBase designation join designation.typifiedNames name where name = :name";
+ String queryString = "select "+select+" from TypeDesignationBase designation join designation.typifiedNames name where name = :name";
if(status != null) {
queryString += " and designation.typeStatus = :status";
@@ -385,19 +418,9 @@ public class TaxonNameDaoHibernateImpl extends IdentifiableDaoBase im
}
query.setParameter("name",name);
-
- if(pageSize != null) {
- query.setMaxResults(pageSize);
- if(pageNumber != null) {
- query.setFirstResult(pageNumber * pageSize);
- } else {
- query.setFirstResult(0);
- }
- }
- return defaultBeanInitializer.initializeAll((List)query.list(), propertyPaths);
+ return query;
}
-
public List searchNames(String queryString, MatchMode matchMode, Integer pageSize, Integer pageNumber) {
checkNotInPriorView("TaxonNameDaoHibernateImpl.searchNames(String queryString, Integer pageSize, Integer pageNumber)");
Criteria criteria = getSession().createCriteria(TaxonName.class);
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java
index db8654a618..0edf1bd04e 100644
--- a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java
+++ b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java
@@ -20,6 +20,7 @@ import org.hibernate.Hibernate;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Disjunction;
+import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.envers.query.AuditEntity;
@@ -31,7 +32,6 @@ import org.springframework.stereotype.Repository;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
-import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
@@ -341,29 +341,37 @@ public class OccurrenceDaoHibernateImpl extends IdentifiableDaoBase List findOccurrences(Class clazz, String queryString,
- String significantIdentifier, SpecimenOrObservationType recordBasis, Taxon associatedTaxon, TaxonName associatedTaxonName,
- MatchMode matchmode, Integer limit,
- Integer start, List orderHints, List propertyPaths) {
-
+ public List> findOccurrencesUuidAndTitleCache(
+ Class clazz, String queryString, String significantIdentifier, SpecimenOrObservationType recordBasis,
+ Taxon associatedTaxon, TaxonName associatedTaxonName, MatchMode matchmode, Integer limit, Integer start,
+ List orderHints) {
Criteria criteria = createFindOccurrenceCriteria(clazz, queryString, significantIdentifier, recordBasis,
- associatedTaxon, associatedTaxonName, matchmode, limit, start, orderHints, propertyPaths);
-
+ associatedTaxon, associatedTaxonName, matchmode, limit, start, orderHints, null);
if(criteria!=null){
+ ProjectionList projectionList = Projections.projectionList();
+ projectionList.add(Projections.property("uuid"));
+ projectionList.add(Projections.property("id"));
+ projectionList.add(Projections.property("titleCache"));
+ criteria.setProjection(projectionList);
- if(limit != null) {
- if(start != null) {
- criteria.setFirstResult(start);
- } else {
- criteria.setFirstResult(0);
- }
- criteria.setMaxResults(limit);
+ List