1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.student.enrollment.class2.courseoffering.service.impl;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.kuali.rice.core.api.criteria.Predicate;
20 import org.kuali.rice.core.api.criteria.PredicateFactory;
21 import org.kuali.rice.core.api.criteria.QueryByCriteria;
22 import org.kuali.rice.krad.lookup.LookupableImpl;
23 import org.kuali.rice.krad.web.form.LookupForm;
24 import org.kuali.student.enrollment.class2.courseoffering.dto.ActivityOfferingWrapper;
25 import org.kuali.student.enrollment.class2.courseoffering.util.ActivityOfferingConstants;
26 import org.kuali.student.enrollment.class2.courseoffering.util.CourseOfferingResourceLoader;
27 import org.kuali.student.enrollment.common.util.ContextBuilder;
28 import org.kuali.student.enrollment.courseoffering.dto.ActivityOfferingInfo;
29 import org.kuali.student.enrollment.courseoffering.service.CourseOfferingService;
30 import org.kuali.student.r2.common.dto.ContextInfo;
31
32 import java.util.ArrayList;
33 import java.util.List;
34 import java.util.Map;
35
36
37
38
39
40
41 public class ActivityOfferingWrapperLookupableImpl extends LookupableImpl {
42
43 @Override
44 protected List<?> getSearchResults(LookupForm lookupForm, Map<String, String> fieldValues, boolean unbounded) {
45 List<ActivityOfferingWrapper> activityOfferingWrappers = new ArrayList<ActivityOfferingWrapper>();
46
47 try {
48 if(hasCriteria(fieldValues)){
49 QueryByCriteria qbc = buildQueryByCriteria(fieldValues);
50 List<ActivityOfferingInfo> activityOfferings = getCourseOfferingService().searchForActivityOfferings(qbc, getContextInfo());
51 for (ActivityOfferingInfo activityOffering : activityOfferings) {
52 ActivityOfferingWrapper wrapper = new ActivityOfferingWrapper(activityOffering);
53 activityOfferingWrappers.add(wrapper);
54 }
55 }
56 } catch (Exception e) {
57 throw new RuntimeException(e);
58 }
59
60 return activityOfferingWrappers;
61 }
62
63 private QueryByCriteria buildQueryByCriteria(Map<String, String> fieldValues){
64 String aoId = fieldValues.get(ActivityOfferingConstants.ACTIVITY_OFFERING_WRAPPER_ID);
65
66 List<Predicate> predicates = new ArrayList<Predicate>();
67 if (StringUtils.isNotBlank(aoId)) {
68 predicates.add(PredicateFactory.equalIgnoreCase("id", aoId));
69 }
70
71 QueryByCriteria.Builder qbcBuilder = QueryByCriteria.Builder.create();
72 qbcBuilder.setPredicates(predicates.toArray(new Predicate[predicates.size()]));
73 QueryByCriteria qbc = qbcBuilder.build();
74
75 return qbc;
76 }
77
78 private boolean hasCriteria(Map<String, String> fieldValues){
79 return StringUtils.isNotBlank(fieldValues.get(ActivityOfferingConstants.ACTIVITY_OFFERING_WRAPPER_ID));
80 }
81
82 public CourseOfferingService getCourseOfferingService() {
83 return CourseOfferingResourceLoader.loadCourseOfferingService();
84 }
85
86 public ContextInfo getContextInfo() {
87 return ContextBuilder.loadContextInfo();
88 }
89 }