View Javadoc

1   /**
2    * Copyright 2011 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.krms.termresolver;
17  
18  import org.kuali.rice.krms.api.engine.TermResolutionException;
19  import org.kuali.rice.krms.api.engine.TermResolver;
20  import org.kuali.student.common.util.krms.RulesExecutionConstants;
21  import org.kuali.student.enrollment.academicrecord.dto.StudentCourseRecordInfo;
22  import org.kuali.student.enrollment.courseregistration.dto.CourseRegistrationInfo;
23  import org.kuali.student.enrollment.courseregistration.service.CourseRegistrationService;
24  import org.kuali.student.krms.util.KSKRMSExecutionConstants;
25  import org.kuali.student.krms.util.KSKRMSExecutionUtil;
26  import org.kuali.student.r2.common.dto.ContextInfo;
27  import org.kuali.student.r2.common.exceptions.InvalidParameterException;
28  import org.kuali.student.r2.common.exceptions.MissingParameterException;
29  import org.kuali.student.r2.common.exceptions.OperationFailedException;
30  import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
31  import org.kuali.student.r2.core.atp.dto.MilestoneInfo;
32  import org.kuali.student.r2.core.atp.service.AtpService;
33  
34  import java.util.Calendar;
35  import java.util.Collections;
36  import java.util.Date;
37  import java.util.HashSet;
38  import java.util.List;
39  import java.util.Map;
40  import java.util.Set;
41  
42  public class EnrolledCourseByTermTermResolver implements TermResolver<List<CourseRegistrationInfo>> {	
43  
44      private CourseRegistrationService courseRegistrationService;
45      
46      
47      public CourseRegistrationService getAcademicRecordService() {
48          return courseRegistrationService;
49      }
50  
51      public void setCourseRegistrationService(CourseRegistrationService courseRegistrationService) {
52          this.courseRegistrationService = courseRegistrationService;
53      }
54  
55      @Override
56      public Set<String> getPrerequisites() {
57          return Collections.singleton(RulesExecutionConstants.CONTEXT_INFO_TERM_NAME);
58      }
59  
60      @Override
61      public String getOutput() {
62          return "EnrolledCourseByTermTermResolver.getOutput()";
63      }
64  
65      @Override
66      public Set<String> getParameterNames() {
67          Set<String> temp = new HashSet<String>(1);
68          temp.add(KSKRMSExecutionConstants.PERSON_ID_TERM_PROPERTY);
69          temp.add(KSKRMSExecutionConstants.TERM_ID_TERM_PROPERTY);
70          return Collections.unmodifiableSet(temp);
71      }
72  
73      @Override
74      public int getCost() {
75          // TODO Analyze, though probably not much to check here
76          return 5;
77      }
78  
79      @Override
80      public List<CourseRegistrationInfo> resolve(Map<String, Object> resolvedPrereqs, Map<String, String> parameters) throws TermResolutionException {
81          ContextInfo context = (ContextInfo) resolvedPrereqs.get(RulesExecutionConstants.CONTEXT_INFO_TERM_NAME);
82          String personId = parameters.get(KSKRMSExecutionConstants.PERSON_ID_TERM_PROPERTY);
83          String termId = parameters.get(KSKRMSExecutionConstants.TERM_ID_TERM_PROPERTY);
84          
85          List<CourseRegistrationInfo> result = null;
86          try {
87              result = courseRegistrationService.getCourseRegistrationsByStudentAndTerm(personId, termId, context);
88          } catch (Exception e) {
89              KSKRMSExecutionUtil.convertExceptionsToTermResolutionException(parameters, e, this);
90          }
91          return result;
92      }
93  }