1 package org.kuali.student.enrollment.class2.courseoffering.service.assembler;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import org.kuali.student.enrollment.class2.courseoffering.service.transformer.RegistrationGroupTransformer;
7 import org.kuali.student.enrollment.courseoffering.dto.RegistrationGroupInfo;
8 import org.kuali.student.enrollment.lui.dto.LuiInfo;
9 import org.kuali.student.enrollment.lui.dto.LuiLuiRelationInfo;
10 import org.kuali.student.enrollment.lui.service.LuiService;
11 import org.kuali.student.r2.common.assembler.AssemblyException;
12 import org.kuali.student.r2.common.assembler.DTOAssembler;
13 import org.kuali.student.r2.common.dto.ContextInfo;
14 import org.kuali.student.r2.common.exceptions.DoesNotExistException;
15 import org.kuali.student.r2.common.exceptions.InvalidParameterException;
16 import org.kuali.student.r2.common.exceptions.MissingParameterException;
17 import org.kuali.student.r2.common.exceptions.OperationFailedException;
18 import org.kuali.student.r2.common.exceptions.PermissionDeniedException;
19 import org.kuali.student.r2.common.util.constants.LuiServiceConstants;
20
21 public class RegistrationGroupAssembler {
22
23 private LuiService luiService;
24 private RegistrationGroupTransformer registrationGroupTransformer;
25
26 public RegistrationGroupTransformer getRegistrationGroupTransformer() {
27 return registrationGroupTransformer;
28 }
29
30 public void setRegistrationGroupTransformer(RegistrationGroupTransformer registrationGroupTransformer) {
31 this.registrationGroupTransformer = registrationGroupTransformer;
32 }
33
34 public LuiService getLuiService() {
35 return luiService;
36 }
37
38 public void setLuiService(LuiService luiService) {
39 this.luiService = luiService;
40 }
41
42 public RegistrationGroupInfo assemble(LuiInfo lui, ContextInfo context) throws DoesNotExistException, InvalidParameterException, MissingParameterException, OperationFailedException, PermissionDeniedException {
43 if (lui != null) {
44 RegistrationGroupInfo rg = registrationGroupTransformer.lui2Rg(lui, context);
45 assembleLuiLuiRelations(rg, lui.getId(), context);
46 return rg;
47 } else {
48 return null;
49 }
50 }
51
52 private void assembleLuiLuiRelations(RegistrationGroupInfo rg, String luiId, ContextInfo context)
53 throws DoesNotExistException, InvalidParameterException, MissingParameterException,
54 OperationFailedException, PermissionDeniedException {
55 String courseOfferingId = null;
56 ;
57 List<String> activityIds = new ArrayList<String>();
58 List<LuiLuiRelationInfo> rels = luiService.getLuiLuiRelationsByLui(luiId, context);
59 if (rels != null && !rels.isEmpty()) {
60 for (LuiLuiRelationInfo rel : rels) {
61 if (rel.getLuiId().equals(luiId)) {
62 if (rel.getTypeKey().equals(LuiServiceConstants.LUI_LUI_RELATION_REGISTEREDFORVIA_TYPE_KEY)) {
63 LuiInfo lui = luiService.getLui(rel.getRelatedLuiId(), context);
64 if (lui != null) {
65 if (lui.getTypeKey().equals(LuiServiceConstants.COURSE_OFFERING_TYPE_KEY)) {
66 courseOfferingId = rel.getRelatedLuiId();
67 } else {
68 if (!activityIds.contains(rel.getRelatedLuiId())) {
69 activityIds.add(rel.getRelatedLuiId());
70 }
71 }
72 }
73 }
74 }
75 }
76 }
77
78 if (null != courseOfferingId)
79 rg.setCourseOfferingId(courseOfferingId);
80 if (!activityIds.isEmpty())
81 rg.setActivityOfferingIds(activityIds);
82
83 }
84
85 public LuiInfo disassemble(RegistrationGroupInfo rg, ContextInfo context) throws InvalidParameterException, MissingParameterException, DoesNotExistException, OperationFailedException, PermissionDeniedException {
86 LuiInfo lui = registrationGroupTransformer.rg2Lui(rg, context);
87 return lui;
88 }
89 }