View Javadoc

1   package org.kuali.student.enrollment.class2.courseoffering.service.impl;
2   
3   import org.apache.commons.lang.StringUtils;
4   import org.kuali.rice.core.api.util.RiceKeyConstants;
5   import org.kuali.rice.krad.lookup.LookupableImpl;
6   import org.kuali.rice.krad.util.GlobalVariables;
7   import org.kuali.rice.krad.util.KRADConstants;
8   import org.kuali.rice.krad.web.form.LookupForm;
9   import org.kuali.student.enrollment.class2.courseoffering.util.CourseOfferingManagementUtil;
10  import org.kuali.student.r2.common.dto.RichTextInfo;
11  import org.kuali.student.r2.common.util.ContextUtils;
12  import org.kuali.student.r2.core.search.dto.SearchParamInfo;
13  import org.kuali.student.r2.core.search.dto.SearchRequestInfo;
14  import org.kuali.student.r2.core.search.dto.SearchResultCellInfo;
15  import org.kuali.student.r2.core.search.dto.SearchResultInfo;
16  import org.kuali.student.r2.core.search.dto.SearchResultRowInfo;
17  import org.kuali.student.r2.lum.course.dto.CourseInfo;
18  
19  import javax.xml.namespace.QName;
20  import java.util.ArrayList;
21  import java.util.List;
22  import java.util.Map;
23  
24  import static org.apache.commons.lang.StringUtils.isEmpty;
25  
26  public class CourseInfoLookupableImpl extends LookupableImpl {
27  	private static final long serialVersionUID = 1L;	
28  	
29      public enum QueryParamEnum {
30          ID("lu.queryParam.luOptionalId","id"),
31          SUBJECT("lu.queryParam.luOptionalStudySubjectArea", "subjectArea"),
32          CODE("lu.queryParam.luOptionalCode", "code"),
33          TITLE("lu.queryParam.luOptionalLongName", "courseTitle");
34  
35          private final String fieldValue;
36          private final String queryKey;
37  
38          QueryParamEnum(String qKey, String fValue) {
39              this.queryKey = qKey;
40              this.fieldValue = fValue;
41          }
42  
43          public String getFieldValue() {
44              return fieldValue;
45          }
46  
47          public String getQueryKey() {
48              return queryKey;
49          }
50      }
51  
52      @Override
53      public boolean validateSearchParameters(LookupForm form, Map<String, String> searchCriteria) {
54          boolean valid = super.validateSearchParameters(form,searchCriteria);
55  
56          if (valid){
57              String courseCodeParam = searchCriteria.get(QueryParamEnum.CODE.getFieldValue());
58              String courseTitleParam = searchCriteria.get(QueryParamEnum.TITLE.getFieldValue());
59  
60              if (StringUtils.isBlank(courseCodeParam) && StringUtils.isBlank(courseTitleParam)){
61                  GlobalVariables.getMessageMap().putError(KRADConstants.GLOBAL_ERRORS, RiceKeyConstants.ERROR_CUSTOM,"Please enter atleast one field.");
62                  valid = false;
63              } else if ((StringUtils.isBlank(courseCodeParam) && StringUtils.length(courseTitleParam) < 2) ||
64                         (StringUtils.length(courseCodeParam) < 2 && StringUtils.isBlank(courseTitleParam))) {
65                  GlobalVariables.getMessageMap().putError(KRADConstants.GLOBAL_ERRORS, RiceKeyConstants.ERROR_CUSTOM,"Please enter atleast 2 characters for the search.");
66                  valid = false;
67              }
68          }
69  
70          return valid;
71      }
72  
73      @Override
74      protected List<?> getSearchResults(LookupForm lookupForm, Map<String, String> fieldValues, boolean unbounded) {
75          List <CourseInfo> courseInfoList = new ArrayList<CourseInfo>();
76  
77          List<SearchParamInfo> searchParams = new ArrayList<SearchParamInfo>();
78          SearchParamInfo qpv1 = new SearchParamInfo();
79          qpv1.setKey("lu.queryParam.luOptionalType");
80          qpv1.getValues().add("kuali.lu.type.CreditCourse");
81          searchParams.add(qpv1);
82  
83          qpv1 = new SearchParamInfo();
84          qpv1.setKey("lu.queryParam.luOptionalState");
85          qpv1.getValues().add("Active");
86          searchParams.add(qpv1);
87  
88          for (QueryParamEnum qpEnum : QueryParamEnum.values()) {
89              String fieldValue = fieldValues.get(qpEnum.getFieldValue());
90              if ( ! isEmpty(fieldValue) ) {
91                  SearchParamInfo qpv = new SearchParamInfo();
92                  qpv.setKey(qpEnum.getQueryKey());
93                  qpv.getValues().add(fieldValue);
94                  searchParams.add(qpv);
95              }
96          }
97  
98          SearchRequestInfo searchRequest = new SearchRequestInfo();
99          searchRequest.setParams(searchParams);
100         searchRequest.setSearchKey("lu.search.mostCurrent.union");
101 
102         try {
103             SearchResultInfo searchResult = CourseOfferingManagementUtil.getCluService().search(searchRequest, ContextUtils.getContextInfo());
104 
105             if (searchResult.getRows().size() > 0) {
106                 for(SearchResultRowInfo srrow : searchResult.getRows()){
107                     List<SearchResultCellInfo> srCells = srrow.getCells();
108                     if(srCells != null && srCells.size() > 0){
109                         CourseInfo course = new CourseInfo();
110                         for(SearchResultCellInfo srcell : srCells){
111                             if (srcell.getKey().equals("lu.resultColumn.luOptionalCode")) {
112                                 course.setCode(srcell.getValue());
113                             } else if (srcell.getKey().equals("lu.resultColumn.luOptionalLongName")) {
114                                 course.setCourseTitle(srcell.getValue());
115                             }else if (srcell.getKey().equals("lu.resultColumn.luOptionalDescr")) {
116                                 RichTextInfo desc = new RichTextInfo();
117                                 desc.setFormatted(srcell.getValue());
118                                 course.setDescr(desc);
119                             }
120                         }
121                         courseInfoList.add(course);
122                     }
123                 }
124             }
125 
126             return courseInfoList;
127         } catch (Exception e) {
128             throw new RuntimeException(e);
129         }
130     }
131 }