Revision e1090d5d
Added by Andreas Müller over 8 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java | ||
---|---|---|
9 | 9 |
|
10 | 10 |
package eu.etaxonomy.cdm.persistence.dao.hibernate.common; |
11 | 11 |
|
12 |
import java.util.ArrayList; |
|
13 | 12 |
import java.util.HashSet; |
14 | 13 |
import java.util.List; |
15 | 14 |
import java.util.Map; |
... | ... | |
18 | 17 |
|
19 | 18 |
import org.hibernate.Criteria; |
20 | 19 |
import org.hibernate.Query; |
21 |
import org.hibernate.criterion.Projections; |
|
22 | 20 |
import org.hibernate.criterion.Restrictions; |
23 | 21 |
import org.hibernate.envers.query.AuditEntity; |
24 | 22 |
import org.hibernate.envers.query.AuditQuery; |
... | ... | |
122 | 120 |
return getTerms(termVocabulary, pageSize, pageNumber, null, null); |
123 | 121 |
} |
124 | 122 |
|
125 |
@Override |
|
126 |
@Deprecated |
|
127 |
public <TERM extends DefinedTermBase> List<TermVocabulary<? extends TERM>> listByTermClass(Class<TERM> clazz, boolean includeSubclasses, boolean includeEmptyVocs, Integer limit, Integer start,List<OrderHint> orderHints, List<String> propertyPaths) { |
|
128 |
checkNotInPriorView("TermVocabularyDao.listByTermClass2(Class<TERM> clazz, Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths)"); |
|
129 |
List<Integer> intermediateResults; |
|
130 |
|
|
131 |
if (includeSubclasses){ |
|
132 |
String hql = " SELECT DISTINCT trm.vocabulary.id " + |
|
133 |
" FROM %s trm " + |
|
134 |
" GROUP BY trm.vocabulary "; |
|
135 |
hql = String.format(hql, clazz.getSimpleName()); |
|
136 |
Query query = getSession().createQuery(hql); |
|
137 |
intermediateResults = query.list(); |
|
138 |
}else{ |
|
139 |
Criteria criteria = getSession().createCriteria(type); |
|
140 |
criteria.createAlias("terms", "trms").add(Restrictions.eq("trms.class", clazz.getSimpleName())); |
|
141 |
criteria.setProjection(Projections.id()); |
|
142 |
intermediateResults = criteria.list(); |
|
143 |
} |
|
144 |
if (includeEmptyVocs){ |
|
145 |
intermediateResults.addAll(getEmptyVocIds()); |
|
146 |
} |
|
147 |
|
|
148 |
if(intermediateResults.size() == 0) { |
|
149 |
return new ArrayList<TermVocabulary<? extends TERM>>(); |
|
150 |
} |
|
151 |
|
|
152 |
Criteria criteria = getSession().createCriteria(type); |
|
153 |
criteria.add(Restrictions.in("id", intermediateResults)); |
|
154 |
|
|
155 |
if(limit != null) { |
|
156 |
criteria.setMaxResults(limit); |
|
157 |
if(start != null) { |
|
158 |
criteria.setFirstResult(start); |
|
159 |
} |
|
160 |
} |
|
161 |
|
|
162 |
this.addOrder(criteria, orderHints); |
|
163 |
|
|
164 |
List<TermVocabulary<? extends TERM>> result = criteria.list(); |
|
165 |
defaultBeanInitializer.initializeAll(result, propertyPaths); |
|
166 |
return result; |
|
167 |
} |
|
168 |
|
|
169 |
|
|
170 |
// public <T extends DefinedTermBase> List<TermVocabulary<T>> findByTermType(TermType termType) { |
|
171 |
// |
|
172 |
// Query query = getSession().createQuery("select vocabulary from TermVocabulary vocabulary where vocabulary.termType= :termType"); |
|
173 |
// query.setParameter("termType", termType); |
|
174 |
// |
|
175 |
// return (List<TermVocabulary<T>>)query.list(); |
|
176 |
// |
|
177 |
// } |
|
178 | 123 |
|
179 | 124 |
@Override |
180 | 125 |
public <T extends DefinedTermBase> List<TermVocabulary<T>> findByTermType(TermType termType) { |
... | ... | |
216 | 161 |
return result; |
217 | 162 |
} |
218 | 163 |
|
219 |
// |
|
220 |
// @Override |
|
221 |
// public List<TermVocabulary> listEmpty(Integer limit, Integer start,List<OrderHint> orderHints, List<String> propertyPaths) { |
|
222 |
// checkNotInPriorView("TermVocabularyDao.listEmpty(Integer limit, Integer start, List<OrderHint> orderHints, List<String> propertyPaths)"); |
|
223 |
// List<Integer> intermediateResults; |
|
224 |
// |
|
225 |
// intermediateResults = getEmptyVocIds(); |
|
226 |
// |
|
227 |
// Criteria criteria = getSession().createCriteria(type); |
|
228 |
// criteria.add(Restrictions.in("id", intermediateResults)); |
|
229 |
// |
|
230 |
// if(limit != null) { |
|
231 |
// criteria.setMaxResults(limit); |
|
232 |
// if(start != null) { |
|
233 |
// criteria.setFirstResult(start); |
|
234 |
// } |
|
235 |
// } |
|
236 |
// |
|
237 |
// this.addOrder(criteria, orderHints); |
|
238 |
// |
|
239 |
// List<TermVocabulary> result = criteria.list(); |
|
240 |
// defaultBeanInitializer.initializeAll(result, propertyPaths); |
|
241 |
// return result; |
|
242 |
// } |
|
243 |
|
|
244 | 164 |
@Override |
245 | 165 |
public void missingTermUuids( |
246 | 166 |
Map<UUID, Set<UUID>> uuidsRequested, |
... | ... | |
304 | 224 |
|
305 | 225 |
return; |
306 | 226 |
} |
307 |
|
|
308 |
/** |
|
309 |
* @return |
|
310 |
*/ |
|
311 |
private List<Integer> getEmptyVocIds() { |
|
312 |
List<Integer> intermediateResults; |
|
313 |
String hql = " SELECT voc.id " + |
|
314 |
" FROM TermVocabulary voc " + |
|
315 |
" WHERE voc.terms.size = 0 "; |
|
316 |
Query query = getSession().createQuery(hql); |
|
317 |
intermediateResults = query.list(); |
|
318 |
return intermediateResults; |
|
319 |
} |
|
320 | 227 |
} |
Also available in: Unified diff
Fully remove old vocabulary.byClass methods #3843