001 package org.kuali.student.enrollment.class1.lu.termresolver;
002
003 import org.kuali.rice.krms.api.engine.TermResolutionException;
004 import org.kuali.rice.krms.api.engine.TermResolver;
005
006 import org.kuali.student.common.util.krms.RulesExecutionConstants;
007 import org.kuali.student.r2.common.dto.ContextInfo;
008 import org.kuali.student.r2.lum.clu.service.CluService;
009
010 import javax.annotation.Resource;
011 import java.util.Collection;
012 import java.util.Collections;
013 import java.util.List;
014 import java.util.Map;
015 import java.util.Set;
016 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
017 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
018 import org.kuali.student.r2.common.exceptions.MissingParameterException;
019 import org.kuali.student.r2.common.exceptions.OperationFailedException;
020 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
021
022 public class CourseSetResolver implements TermResolver<Collection<String>> {
023
024 @Resource
025 private CluService cluService;
026
027 @Override
028 public Set<String> getPrerequisites() {
029 return Collections.singleton(RulesExecutionConstants.CONTEXT_INFO_TERM_NAME);
030 }
031
032 @Override
033 public String getOutput() {
034 return RulesExecutionConstants.COURSE_SET_TERM_NAME;
035 }
036
037 @Override
038 public Set<String> getParameterNames() {
039 return Collections.singleton(RulesExecutionConstants.COURSE_SET_ID_TERM_PROPERTY);
040 }
041
042 @Override
043 public int getCost() {
044 // TODO analyze for a relevant cost
045 return 0;
046 }
047
048 @Override
049 public Collection<String> resolve(Map<String, Object> resolvedPrereqs, Map<String, String> parameters) throws TermResolutionException {
050 String courseSetId = parameters.get(RulesExecutionConstants.COURSE_SET_ID_TERM_PROPERTY);
051 ContextInfo context = (ContextInfo) resolvedPrereqs.get(RulesExecutionConstants.CONTEXT_INFO_TERM_NAME);
052
053 if(courseSetId == null) {
054 throw new TermResolutionException("No parameter found with name: " + RulesExecutionConstants.COURSE_SET_ID_TERM_PROPERTY, this, parameters);
055 }
056
057 List<String> results = null;
058 try {
059 results = cluService.getCluIdsFromCluSet(courseSetId, context);
060 } catch (DoesNotExistException e) {
061 throw new TermResolutionException("", this, parameters, e);
062 } catch (InvalidParameterException e) {
063 throw new TermResolutionException("", this, parameters, e);
064 } catch (MissingParameterException e) {
065 throw new TermResolutionException("", this, parameters, e);
066 } catch (OperationFailedException e) {
067 throw new TermResolutionException("", this, parameters, e);
068 } catch (PermissionDeniedException e) {
069 throw new TermResolutionException("", this, parameters, e);
070 }
071
072 return results;
073
074 }
075
076 }