1 package org.kuali.student.r2.common.criteria.impl;
2
3 import java.util.List;
4
5 import org.kuali.rice.core.api.criteria.GenericQueryResults;
6 import org.kuali.rice.core.api.criteria.QueryByCriteria;
7 import org.kuali.student.r2.common.criteria.CriteriaLookupService;
8 import org.kuali.student.r2.common.criteria.LookupCustomizer;
9 import org.kuali.student.r2.common.criteria.LookupCustomizer.PredicateTransform;
10
11 public class CriteriaLookupServiceImpl implements CriteriaLookupService {
12
13 private CriteriaLookupDaoJpaImpl criteriaLookupDao;
14 private List<PredicateTransform> additionalTransforms;
15 private List<PredicateTransform> predicateTransforms;
16
17 public List<PredicateTransform> getAdditionalTransforms() {
18 return additionalTransforms;
19 }
20
21 public void setAdditionalTransforms(List<PredicateTransform> additionalTransforms) {
22 this.additionalTransforms = additionalTransforms;
23 }
24
25 public List<PredicateTransform> getPredicateTransforms() {
26 return predicateTransforms;
27 }
28
29 public void setPredicateTransforms(List<PredicateTransform> predicateTransforms) {
30 this.predicateTransforms = predicateTransforms;
31 }
32
33 public void setCriteriaLookupDao(CriteriaLookupDaoJpaImpl criteriaLookupDao) {
34 this.criteriaLookupDao = criteriaLookupDao;
35 }
36
37 @Override
38 public <T> GenericQueryResults<T> lookup(Class<T> queryClass, QueryByCriteria criteria) {
39
40 LookupCustomizer.Builder<T> lc = LookupCustomizer.Builder.create();
41 lc.setPredicateTransforms(this.getPredicateTransforms());
42 lc.setAdditionalTransforms(this.getAdditionalTransforms());
43
44 return criteriaLookupDao.lookup(queryClass, criteria, lc.build());
45 }
46
47 @Override
48 public <T> GenericQueryResults<T> lookup(Class<T> queryClass, QueryByCriteria criteria, LookupCustomizer<T> customizer) {
49
50 customizer.getAdditionalTransforms().addAll(this.getAdditionalTransforms());
51 customizer.getPredicateTransforms().addAll(this.getPredicateTransforms());
52
53 return criteriaLookupDao.lookup(queryClass, criteria, customizer);
54 }
55
56 }