package net.sourceforge.fenixedu.applicationTier.Servico.teacherServiceDistribution; import java.util.ArrayList; import java.util.List; import java.util.Map; import net.sourceforge.fenixedu.applicationTier.FenixService; import net.sourceforge.fenixedu.dataTransferObject.teacherServiceDistribution.TSDCourseDTOEntry; import net.sourceforge.fenixedu.domain.ExecutionSemester; import net.sourceforge.fenixedu.domain.teacherServiceDistribution.TSDCourse; import net.sourceforge.fenixedu.domain.teacherServiceDistribution.TeacherServiceDistribution; import pt.utl.ist.fenix.tools.util.Pair; public class ReadTSDCoursesFromTSDProcesses extends FenixService { public List run(Map> tsdProcessIdMap) { List tsdCourseDTOEntryList = new ArrayList(); for (Integer tsdProcessPhaseId : tsdProcessIdMap.keySet()) { TeacherServiceDistribution tsd = null; tsd = rootDomainObject.readTeacherServiceDistributionByOID(tsdProcessIdMap.get(tsdProcessPhaseId).getKey()); List executionPeriodList = getExecutionPeriodList(tsd, tsdProcessIdMap.get(tsdProcessPhaseId) .getValue()); List tsdCourseList = new ArrayList(tsd .getActiveTSDCourseByExecutionPeriods(executionPeriodList)); for (TSDCourse tsdCourse : tsdCourseList) { tsdCourseDTOEntryList.add(new TSDCourseDTOEntry(tsdCourse, executionPeriodList)); } } return tsdCourseDTOEntryList; } private List getExecutionPeriodList(TeacherServiceDistribution tsd, Integer executionPeriodId) { List executionPeriodList = new ArrayList(); ExecutionSemester executionSemester = rootDomainObject.readExecutionSemesterByOID(executionPeriodId); if (executionSemester != null) { executionPeriodList.add(executionSemester); } else { executionPeriodList.addAll(tsd.getTSDProcessPhase().getTSDProcess().getExecutionPeriods()); } return executionPeriodList; } }