View Javadoc

1   package org.kuali.student.enrollment.class2.acal.service.assembler;
2   
3   import org.kuali.student.enrollment.acal.dto.AcademicCalendarInfo;
4   import org.kuali.student.r2.common.assembler.AssemblyException;
5   import org.kuali.student.r2.common.assembler.DTOAssembler;
6   import org.kuali.student.r2.common.dto.AttributeInfo;
7   import org.kuali.student.r2.common.dto.ContextInfo;
8   import org.kuali.student.r2.core.constants.AtpServiceConstants;
9   import org.kuali.student.r2.core.atp.dto.AtpAtpRelationInfo;
10  import org.kuali.student.r2.core.atp.dto.AtpInfo;
11  import org.kuali.student.r2.core.atp.service.AtpService;
12  
13  import java.util.ArrayList;
14  import java.util.List;
15  
16  public class AcademicCalendarAssembler implements DTOAssembler<AcademicCalendarInfo, AtpInfo> {
17  
18      private AtpService atpService;
19  
20      public AtpService getAtpService() {
21          return atpService;
22      }
23  
24      public void setAtpService(AtpService atpService) {
25          this.atpService = atpService;
26      }
27  
28      @Override
29      public AcademicCalendarInfo assemble(AtpInfo atp, ContextInfo context) throws AssemblyException {
30  
31          AcademicCalendarInfo acal = new AcademicCalendarInfo();
32          acal.setId(atp.getId());
33          acal.setName(atp.getName());
34          acal.setDescr(atp.getDescr());
35          acal.setStartDate(atp.getStartDate());
36          acal.setEndDate(atp.getEndDate());
37          acal.setTypeKey(atp.getTypeKey());
38          acal.setStateKey(atp.getStateKey());
39          acal.setMeta(atp.getMeta());
40          acal.getAttributes().addAll(atp.getAttributes());
41          acal.setAdminOrgId(atp.getAdminOrgId());
42          acal.getHolidayCalendarIds().addAll(assembleHolidayCalendarIdsFromRelations(atp.getId(),
43                  AtpServiceConstants.ATP_HOLIDAY_CALENDAR_TYPE_KEY,
44                  context));
45          return acal;
46      }
47  
48      private List<String> assembleHolidayCalendarIdsFromRelations(String atpId,
49              String relatedAtpType,
50              ContextInfo context)
51              throws AssemblyException {
52          List<String> holidayCalendarIds = new ArrayList<String>();
53          List<AtpAtpRelationInfo> atpRels;
54          try {
55              atpRels = atpService.getAtpAtpRelationsByAtp(atpId, context);
56              for (AtpAtpRelationInfo atpRelInfo : atpRels) {
57                  if (atpRelInfo.getAtpId().equals(atpId)) {
58                      if (atpRelInfo.getTypeKey().equals(AtpServiceConstants.ATP_ATP_RELATION_ASSOCIATED_TYPE_KEY)) {
59                          AtpInfo atp = atpService.getAtp(atpRelInfo.getRelatedAtpId(), context);
60                          if (atp.getTypeKey().equals(relatedAtpType)) {
61                              holidayCalendarIds.add(atpRelInfo.getRelatedAtpId());
62                          }
63                      }
64                  }
65              }
66          } catch (Exception e) {
67              throw new AssemblyException(e.getMessage());
68          }
69          return holidayCalendarIds;
70      }
71  
72      @Override
73      public AtpInfo disassemble(AcademicCalendarInfo acal, ContextInfo context) throws AssemblyException {
74          AtpInfo atp = new AtpInfo();
75          atp.setId(acal.getId());
76          atp.setName(acal.getName());
77          atp.setDescr(acal.getDescr());
78          atp.setAdminOrgId(acal.getAdminOrgId());
79          atp.setStartDate(acal.getStartDate());
80          atp.setEndDate(acal.getEndDate());
81          atp.setTypeKey(AtpServiceConstants.ATP_ACADEMIC_CALENDAR_TYPE_KEY);
82          atp.setStateKey(acal.getStateKey());
83          atp.setMeta(acal.getMeta());
84          atp.getAttributes().addAll(acal.getAttributes());
85  
86          return atp;
87      }
88  }