component.setInfoRoom(Cloner.copyRoom2InfoRoom(room));
component.setInfoRoom(InfoRoom.newInfoFromDomain(room));
    private ISiteComponent getInfoSiteRoomTimeTable(InfoSiteRoomTimeTable component, Calendar day,            IRoom room) {        List<InfoObject> infoShowOccupations = new ArrayList<InfoObject>();        try {            ISuportePersistente sp = PersistenceSupportFactory.getDefaultPersistenceSupport();            IPersistentExecutionPeriod persistentExecutionPeriod = sp.getIPersistentExecutionPeriod();            IAulaPersistente lessonDAO = sp.getIAulaPersistente();            IPersistentExam examDAO = sp.getIPersistentExam();            IExecutionPeriod executionPeriod = persistentExecutionPeriod.readActualExecutionPeriod();            Calendar startDay = Calendar.getInstance();            startDay.setTimeInMillis(day.getTimeInMillis());            startDay.add(Calendar.DATE, Calendar.MONDAY - day.get(Calendar.DAY_OF_WEEK));            Calendar endDay = Calendar.getInstance();            endDay.setTimeInMillis(startDay.getTimeInMillis());            endDay.add(Calendar.DATE, 6);            InfoPeriod lessonsInfoPeriod = calculateLessonsSeason(executionPeriod);            if (this.intersectPeriods(day, endDay,lessonsInfoPeriod)) {                //adicionar as aulas                List lessonList = lessonDAO.readByRoomAndExecutionPeriod(room.getIdInternal(), executionPeriod.getIdInternal());                Iterator iterator = lessonList.iterator();                while (iterator.hasNext()) {                    ILesson aula = (ILesson) iterator.next();                    IRoomOccupation roomOccupation = aula.getRoomOccupation();                                        IPeriod period = roomOccupation.getPeriod();                    InfoPeriod infoPeriod = InfoPeriod.newInfoFromDomain(period);                                        if (this.intersectPeriods(day, endDay, infoPeriod)) {                        boolean add = true;                        if ((roomOccupation.getFrequency().intValue() == RoomOccupation.QUINZENAL)                                && (!RoomOccupation.periodQuinzenalContainsWeekPeriod(period.getStartDate(), period.getEndDate(),                                        roomOccupation.getWeekOfQuinzenalStart().intValue(),                                        roomOccupation.getDayOfWeek(), day, endDay, null))) {                            add = false;                        }                        if (roomOccupation.getFrequency().intValue() == RoomOccupation.SEMANAL) {                            Calendar dayOfLesson = Calendar.getInstance();                            dayOfLesson.setTimeInMillis(day.getTimeInMillis());                            dayOfLesson.add(Calendar.DATE, roomOccupation.getDayOfWeek().getDiaSemana()                                    .intValue()                                    - Calendar.MONDAY);                            if (!this.intersectPeriods(dayOfLesson, dayOfLesson, infoPeriod)) {                                add = false;                            }                        }                        if (add) {                            InfoLesson infoLesson = InfoLesson.newInfoFromDomain(aula);                            IShift shift = aula.getShift();                            if (shift == null) {                                continue;                            }							InfoShift infoShift = InfoShift.newInfoFromDomain(shift);                            infoLesson.setInfoShift(infoShift);                            InfoRoomOccupation infoRoomOccupation = InfoRoomOccupation.newInfoFromDomain(aula.getRoomOccupation());                            InfoRoom infoRoom = InfoRoom.newInfoFromDomain(aula                                    .getRoomOccupation().getRoom());                            infoRoomOccupation.setInfoRoom(infoRoom);                            infoLesson.setInfoRoomOccupation(infoRoomOccupation);                            IExecutionCourse executionCourse = shift.getDisciplinaExecucao();                            InfoExecutionCourse infoExecutionCourse = InfoExecutionCourse.newInfoFromDomain(executionCourse);                            infoShift.setInfoDisciplinaExecucao(infoExecutionCourse);                            InfoExecutionPeriod infoExecutionPeriod = InfoExecutionPeriod.newInfoFromDomain(executionPeriod);                            infoExecutionCourse.setInfoExecutionPeriod(infoExecutionPeriod);                            infoShowOccupations.add(infoLesson);                        }                    }                }            }            //adicionar os exames            List examList = examDAO.readByRoomAndWeek(room.getNome(), day);            Iterator iteratorExams = examList.iterator();            while (iteratorExams.hasNext()) {                IExam elem = (IExam) iteratorExams.next();                InfoExam infoExam = Cloner.copyIExam2InfoExam(elem);                infoShowOccupations.add(infoExam);            }        } catch (ExcepcaoPersistencia ex) {            ex.printStackTrace();        } catch (Exception ex) {            ex.printStackTrace();        }        component.setInfoShowOccupation(infoShowOccupations);        component.setInfoRoom(Cloner.copyRoom2InfoRoom(room));        return component;    }