final List<Exam> exams = Exam.getAllByRoomAndExecutionPeriod(infoRoom.getNome(), infoExecutionPeriod.getName(), infoExecutionPeriod.getInfoExecutionYear().getYear()); infoRoomExamsMap.setExams(getInfoExams(exams));
    public List run(InfoExecutionPeriod infoExecutionPeriod, List<InfoRoom> infoRooms) throws Exception {        final List<InfoRoomExamsMap> infoRoomExamMapList = new ArrayList<InfoRoomExamsMap>();        final InfoPeriod period = calculateExamsSeason(persistentSupport, infoExecutionPeriod                .getInfoExecutionYear().getYear(), infoExecutionPeriod.getSemester().intValue());        final Calendar startSeason1 = period.getStartDate();        final Calendar endSeason2 = period.getEndDate();        if (startSeason1.get(Calendar.DAY_OF_WEEK) != Calendar.MONDAY) {            // The calendar must start at a monday            int shiftDays = Calendar.MONDAY - startSeason1.get(Calendar.DAY_OF_WEEK);            startSeason1.add(Calendar.DATE, shiftDays);        }        for (final InfoRoom infoRoom : infoRooms) {            final InfoRoomExamsMap infoRoomExamsMap = new InfoRoomExamsMap();            infoRoomExamsMap.setInfoRoom(infoRoom);            infoRoomExamsMap.setStartSeason1(startSeason1);            infoRoomExamsMap.setEndSeason1(null);            infoRoomExamsMap.setStartSeason2(null);            infoRoomExamsMap.setEndSeason2(endSeason2);            final List<Exam> exams = Exam.getAllByRoomAndExecutionPeriod(infoRoom.getNome(), infoExecutionPeriod.getName(),                            infoExecutionPeriod.getInfoExecutionYear().getYear());            infoRoomExamsMap.setExams(getInfoExams(exams));            infoRoomExamMapList.add(infoRoomExamsMap);        }        return infoRoomExamMapList;    }