Revision 71559ffe
Added by Katja Luther over 2 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/term/TermNodeDaoImpl.java | ||
---|---|---|
6 | 6 |
|
7 | 7 |
package eu.etaxonomy.cdm.persistence.dao.hibernate.term; |
8 | 8 |
|
9 |
import java.util.ArrayList; |
|
9 | 10 |
import java.util.List; |
10 | 11 |
import java.util.Set; |
12 |
import java.util.UUID; |
|
11 | 13 |
|
12 | 14 |
import org.hibernate.Criteria; |
15 |
import org.hibernate.Query; |
|
16 |
import org.hibernate.Session; |
|
13 | 17 |
import org.hibernate.criterion.Restrictions; |
14 | 18 |
import org.springframework.stereotype.Repository; |
15 | 19 |
|
... | ... | |
17 | 21 |
import eu.etaxonomy.cdm.model.term.TermType; |
18 | 22 |
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.VersionableDaoBase; |
19 | 23 |
import eu.etaxonomy.cdm.persistence.dao.term.ITermNodeDao; |
24 |
import eu.etaxonomy.cdm.persistence.dto.SortableTaxonNodeQueryResult; |
|
25 |
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; |
|
20 | 26 |
import eu.etaxonomy.cdm.persistence.query.OrderHint; |
21 | 27 |
|
22 | 28 |
/** |
... | ... | |
63 | 69 |
return results; |
64 | 70 |
} |
65 | 71 |
|
66 |
|
|
72 |
@Override |
|
73 |
public List<UuidAndTitleCache<TermNode>> getUuidAndTitleCache(Integer limit, String pattern){ |
|
74 |
Session session = getSession(); |
|
75 |
Query query = session.createQuery( |
|
76 |
|
|
77 |
"SELECT new " + SortableTaxonNodeQueryResult.class.getName() + "(" |
|
78 |
+ " uuid, id, titleCache " |
|
79 |
+ ") " |
|
80 |
+ " FROM TermNode node " |
|
81 |
+ " JOIN DefinedTerm term ON node.term = term " |
|
82 |
+ (pattern!=null?" WHERE term.titleCache LIKE :pattern":"")); |
|
83 |
if(pattern!=null){ |
|
84 |
pattern = pattern.replace("*", "%"); |
|
85 |
pattern = pattern.replace("?", "_"); |
|
86 |
pattern = pattern + "%"; |
|
87 |
query.setParameter("pattern", pattern); |
|
88 |
} |
|
89 |
if (limit != null){ |
|
90 |
query.setMaxResults(limit); |
|
91 |
} |
|
92 |
return getUuidAndTitleCache(query); |
|
93 |
} |
|
94 |
protected List<UuidAndTitleCache<TermNode>> getUuidAndTitleCache(Query query){ |
|
95 |
List<UuidAndTitleCache<TermNode>> list = new ArrayList<>(); |
|
96 |
List<Object> result = query.list(); |
|
97 |
|
|
98 |
for(Object obj : result){ |
|
99 |
if (obj instanceof SortableTaxonNodeQueryResult) { |
|
100 |
SortableTaxonNodeQueryResult stnqr = (SortableTaxonNodeQueryResult) obj; |
|
101 |
list.add(new UuidAndTitleCache<>(stnqr.getTaxonNodeUuid(),stnqr.getTaxonNodeId(), stnqr.getTaxonTitleCache())); |
|
102 |
}else{ |
|
103 |
Object[] object = (Object[])obj; |
|
104 |
list.add(new UuidAndTitleCache<>((UUID) object[0],(Integer) object[1], (String) object[2])); |
|
105 |
} |
|
106 |
} |
|
107 |
return list; |
|
108 |
} |
|
67 | 109 |
|
68 | 110 |
} |
Also available in: Unified diff
ref #9710: switch to dtos for descriptive data set and descriptions for character matrix