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 }