View Javadoc

1   /**
2    * Copyright 2012 The Kuali Foundation Licensed under the
3    * Educational Community License, Version 2.0 (the "License"); you may
4    * not use this file except in compliance with the License. You may
5    * obtain a copy of the License at
6    *
7    * http://www.osedu.org/licenses/ECL-2.0
8    *
9    * Unless required by applicable law or agreed to in writing,
10   * software distributed under the License is distributed on an "AS IS"
11   * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
12   * or implied. See the License for the specific language governing
13   * permissions and limitations under the License.
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   * This class //TODO ...
38   *
39   * @author Kuali Student Team
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  }