final ITurnoPersistente persistentShift = persistentSuport.getITurnoPersistente();
    public SiteView run(Integer teacherNumber, Integer executionCourseId, String summaryType,            Integer shiftId) throws FenixServiceException, ExcepcaoPersistencia {        final ISuportePersistente persistentSuport = PersistenceSupportFactory.getDefaultPersistenceSupport();        final IPersistentTeacher persistentTeacher = persistentSuport.getIPersistentTeacher();        final IPersistentExecutionCourse persistentExecutionCourse = persistentSuport.getIPersistentExecutionCourse();        final IPersistentSummary persistentSummary = persistentSuport.getIPersistentSummary();        final ITeacher teacher = persistentTeacher.readByNumber(teacherNumber);        if (teacher == null) {            throw new FenixServiceException("no.shift");        }        final IExecutionCourse executionCourse = (IExecutionCourse) persistentExecutionCourse.readByOID(                ExecutionCourse.class, executionCourseId);        if (executionCourse == null) {            throw new FenixServiceException("no.executionCourse");        }        final Collection summaries = new ArrayList();        summaries.addAll(persistentSummary.readByExecutionCourse(executionCourse.getIdInternal()));        summaries.addAll(persistentSummary.readByExecutionCourseShifts(executionCourse.getIdInternal()));        final List infoSummaries = new ArrayList(summaries.size());        for (final Iterator iterator = summaries.iterator(); iterator.hasNext(); ) {            final ISummary summary = (ISummary) iterator.next();            if ((summaryType == null || (summary.getSummaryType() != null && summaryType.equals(summary.getSummaryType())))                    && (shiftId == null || (summary.getShift() != null && shiftId.equals(summary.getShift().getIdInternal())))                    && (teacherNumber == null                            || (summary.getProfessorship() != null && teacherNumber.equals(summary.getProfessorship().getTeacher().getTeacherNumber()))                            || (summary.getTeacher() != null && teacherNumber.equals(summary.getTeacher().getTeacherNumber())))) {                final InfoSummary infoSummary = InfoSummary.newInfoFromDomain(summary);                infoSummaries.add(infoSummary);            }        }        // execution courses's lesson types for display to filter summary        List lessonTypes = findLessonTypesExecutionCourse(executionCourse);        IPersistentSite persistentSite = persistentSuport.getIPersistentSite();        ISite site = persistentSite.readByExecutionCourse(executionCourse.getIdInternal());        if (site == null) {            throw new FenixServiceException("no.site");        }        // execution courses's shifts for display to filter summary        ITurnoPersistente persistentShift = persistentSuport.getITurnoPersistente();        List shifts = persistentShift.readByExecutionCourse(executionCourse.getIdInternal());        List infoShifts = new ArrayList();        if (shifts != null && shifts.size() > 0) {            infoShifts = (List) CollectionUtils.collect(shifts, new Transformer() {                public Object transform(Object arg0) {                    final IShift turno = (IShift) arg0;                    final InfoShift infoShift = InfoShift.newInfoFromDomain(turno);                    infoShift.setInfoLessons(new ArrayList(turno.getAssociatedLessons().size()));                    for (final Iterator iterator = turno.getAssociatedLessons().iterator(); iterator                            .hasNext();) {                        final ILesson lesson = (ILesson) iterator.next();                        final InfoLesson infoLesson = InfoLesson.newInfoFromDomain(lesson);                        final InfoRoom infoRoom = InfoRoom.newInfoFromDomain(lesson.getSala());                        infoLesson.setInfoSala(infoRoom);                        infoShift.getInfoLessons().add(infoLesson);                    }                    return infoShift;                }            });        }        InfoSiteSummaries bodyComponent = new InfoSiteSummaries();        bodyComponent.setInfoSummaries(infoSummaries);        bodyComponent.setExecutionCourse(InfoExecutionCourse.newInfoFromDomain(executionCourse));        bodyComponent.setLessonTypes(lessonTypes);        bodyComponent.setInfoShifts(infoShifts);        bodyComponent.setInfoProfessorships(new ArrayList());        TeacherAdministrationSiteComponentBuilder componentBuilder = TeacherAdministrationSiteComponentBuilder                .getInstance();        ISiteComponent commonComponent = componentBuilder.getComponent(new InfoSiteCommon(), site, null,                null, null);        SiteView siteView = new ExecutionCourseSiteView(commonComponent, bodyComponent);        return siteView;    }