infoExamStudentRoom.setInfoRoom(Cloner.copyRoom2InfoRoom(examStudentRoom .getRoom()));
InfoRoom infoRoom = InfoRoom.newInfoFromDomain(examStudentRoom.getRoom()); infoExamStudentRoom.setInfoRoom(infoRoom);
    public Object run(String username) {        List examsToEnroll = new ArrayList();        List infoExamsToEnroll = new ArrayList();        List infoExamStudentRoomList = new ArrayList();        try {            ISuportePersistente sp = SuportePersistenteOJB.getInstance();            IPersistentExamStudentRoom examStudentRoomDAO = sp.getIPersistentExamStudentRoom();            IStudent student = sp.getIPersistentStudent().readByUsername(username);            if (student != null) {                List examsStudentRooms = examStudentRoomDAO.readBy(student);                Iterator iter = examsStudentRooms.iterator();                List examsEnrolled = new ArrayList();                while (iter.hasNext()) {                    IExamStudentRoom examStudentRoom = (IExamStudentRoom) iter.next();                    InfoExamStudentRoom infoExamStudentRoom = new InfoExamStudentRoom();                    infoExamStudentRoom.setIdInternal(examStudentRoom.getIdInternal());                    infoExamStudentRoom                            .setInfoExam(Cloner.copyIExam2InfoExam(examStudentRoom.getExam()));                    infoExamStudentRoom.getInfoExam().setInfoExecutionCourses(                            (List) CollectionUtils.collect(examStudentRoom.getExam()                                    .getAssociatedExecutionCourses(), new Transformer() {                                public Object transform(Object arg0) {                                    return Cloner.get((IExecutionCourse) arg0);                                }                            }));                    infoExamStudentRoom.setInfoStudent(Cloner.copyIStudent2InfoStudent(examStudentRoom                            .getStudent()));                    if (examStudentRoom.getRoom() != null) {                        infoExamStudentRoom.setInfoRoom(Cloner.copyRoom2InfoRoom(examStudentRoom                                .getRoom()));                    }                    infoExamStudentRoomList.add(infoExamStudentRoom);                    examsEnrolled.add(examStudentRoom.getExam());                }                List attends = sp.getIFrequentaPersistente().readByStudentNumber(student.getNumber());                Iterator examsToEnrollIterator = attends.iterator();                while (examsToEnrollIterator.hasNext()) {                    examsToEnroll.addAll(((IFrequenta) examsToEnrollIterator.next())                            .getDisciplinaExecucao().getAssociatedExams());                }                CollectionUtils.filter(examsToEnroll, new ExamsNotEnrolledPredicate(examsEnrolled));                Iterator iter3 = examsToEnroll.iterator();                while (iter3.hasNext()) {                    IEvaluation evaluation = (IEvaluation) iter3.next();                    if (evaluation instanceof Exam) {                        IExam exam = (IExam) evaluation;                        if (isInDate(exam)) {                            InfoExam infoExam = Cloner.copyIExam2InfoExam(exam);                            infoExam.setInfoExecutionCourses((List) CollectionUtils.collect(exam                                    .getAssociatedExecutionCourses(), new Transformer() {                                public Object transform(Object arg0) {                                    return Cloner.get((IExecutionCourse) arg0);                                }                            }));                            infoExamsToEnroll.add(infoExam);                        }                    }                }            }        } catch (ExcepcaoPersistencia e) {            e.printStackTrace();        }        InfoStudentSiteExams component = new InfoStudentSiteExams(infoExamsToEnroll,                infoExamStudentRoomList);        SiteView siteView = new SiteView(component);        return siteView;    }