Revision edfed701
Added by Patrick Plitzner almost 6 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/occurrence/OccurrenceDaoHibernateImpl.java | ||
---|---|---|
47 | 47 |
import eu.etaxonomy.cdm.model.taxon.Synonym; |
48 | 48 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
49 | 49 |
import eu.etaxonomy.cdm.model.taxon.TaxonBase; |
50 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
|
50 | 51 |
import eu.etaxonomy.cdm.model.view.AuditEvent; |
51 | 52 |
import eu.etaxonomy.cdm.persistence.dao.description.IDescriptionDao; |
52 | 53 |
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase; |
... | ... | |
54 | 55 |
import eu.etaxonomy.cdm.persistence.dao.name.IHomotypicalGroupDao; |
55 | 56 |
import eu.etaxonomy.cdm.persistence.dao.name.ITaxonNameDao; |
56 | 57 |
import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao; |
58 |
import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper; |
|
57 | 59 |
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; |
58 | 60 |
import eu.etaxonomy.cdm.persistence.query.MatchMode; |
59 | 61 |
import eu.etaxonomy.cdm.persistence.query.OrderHint; |
... | ... | |
590 | 592 |
} |
591 | 593 |
|
592 | 594 |
|
595 |
@Override |
|
596 |
public List<SpecimenNodeWrapper> listUuidAndTitleCacheByAssociatedTaxon(List<UUID> taxonNodeUuids, |
|
597 |
Integer limit, Integer start, List<OrderHint> orderHints){ |
|
598 |
|
|
599 |
String queryString = "SELECT " |
|
600 |
+ "de.associatedSpecimenOrObservation.uuid, " |
|
601 |
+ "de.associatedSpecimenOrObservation.id, " |
|
602 |
+ "de.associatedSpecimenOrObservation.titleCache, " |
|
603 |
+ "tn " |
|
604 |
+ " FROM DescriptionElementBase AS de" + |
|
605 |
" LEFT JOIN de.inDescription AS d" + |
|
606 |
" LEFT JOIN d.taxon AS t" + |
|
607 |
" JOIN t.taxonNodes AS tn" + |
|
608 |
" WHERE d.class = 'TaxonDescription' " |
|
609 |
+ "AND tn.uuid in (:taxonNodeUuids) " |
|
610 |
; |
|
611 |
|
|
612 |
Query query = getSession().createQuery(queryString); |
|
613 |
|
|
614 |
query.setParameterList("taxonNodeUuids", taxonNodeUuids); |
|
615 |
|
|
616 |
if(limit != null) { |
|
617 |
if(start != null) { |
|
618 |
query.setFirstResult(start); |
|
619 |
} else { |
|
620 |
query.setFirstResult(0); |
|
621 |
} |
|
622 |
query.setMaxResults(limit); |
|
623 |
} |
|
624 |
|
|
625 |
List<SpecimenNodeWrapper> list = new ArrayList<>(); |
|
626 |
List<Object[]> result = query.list(); |
|
627 |
for(Object[] object : result){ |
|
628 |
list.add(new SpecimenNodeWrapper( |
|
629 |
new UuidAndTitleCache<SpecimenOrObservationBase>( |
|
630 |
(UUID) object[0], |
|
631 |
(Integer) object[1], |
|
632 |
(String) object[2]), |
|
633 |
(TaxonNode)object[3])); |
|
634 |
} |
|
635 |
return list; |
|
636 |
} |
|
637 |
|
|
593 | 638 |
@Override |
594 | 639 |
public <T extends SpecimenOrObservationBase> List<UuidAndTitleCache<SpecimenOrObservationBase>> listUuidAndTitleCacheByAssociatedTaxon(Class<T> clazz, Taxon associatedTaxon, |
595 | 640 |
Integer limit, Integer start, List<OrderHint> orderHints){ |
Also available in: Unified diff
ref #7095 Implement quicker service for taxon associated specimens