executionDegree.getIdInternal(), executionDegree.getExecutionYear()
executionDegree.getDegreeCurricularPlan().getIdInternal(), executionDegree.getExecutionYear()
    public List run(Integer executionDegreeId, Boolean basic, String executionYearString)            throws FenixServiceException, ExcepcaoPersistencia {        ISuportePersistente sp = PersistenceSupportFactory.getDefaultPersistenceSupport();        IPersistentExecutionDegree persistentExecutionDegree = sp.getIPersistentExecutionDegree();        IPersistentProfessorship persistentProfessorship = sp.getIPersistentProfessorship();        IPersistentExecutionYear persistentExecutionYear = sp.getIPersistentExecutionYear();        List professorships = null;        IExecutionYear executionYear = null;        if (executionYearString != null) {            executionYear = persistentExecutionYear.readExecutionYearByName(executionYearString);        } else {            executionYear = persistentExecutionYear.readCurrentExecutionYear();        }        if (executionDegreeId == null) {            List<IExecutionDegree> executionDegrees = persistentExecutionDegree                    .readByExecutionYearAndDegreeType(executionYear.getYear(), DegreeType.DEGREE);            List<Integer> degreeCurricularPlanIDs = getDegreeCurricularPlanIDs(executionDegrees);            Integer executionYearID = (!degreeCurricularPlanIDs.isEmpty()) ? executionDegrees                    .get(0).getExecutionYear().getIdInternal()                    : null;            if (basic == null) {                professorships = persistentProfessorship.readByDegreeCurricularPlansAndExecutionYear(                        degreeCurricularPlanIDs, executionYearID);            } else {                professorships = persistentProfessorship                        .readByDegreeCurricularPlansAndExecutionYearAndBasic(degreeCurricularPlanIDs,                                executionYearID, basic);            }        } else {            IExecutionDegree executionDegree = (IExecutionDegree) persistentExecutionDegree.readByOID(                    ExecutionDegree.class, executionDegreeId);            if (basic == null) {                professorships = persistentProfessorship.readByDegreeCurricularPlanAndExecutionYear(                        executionDegree.getIdInternal(), executionDegree.getExecutionYear()                                .getIdInternal());            } else {                professorships = persistentProfessorship.readByDegreeCurricularPlanAndBasic(                        executionDegree.getIdInternal(), executionDegree.getExecutionYear()                                .getIdInternal(), basic);            }        }        List executionCourses = (List) CollectionUtils.collect(professorships, new Transformer() {            public Object transform(Object o) {                IProfessorship professorship = (IProfessorship) o;                return professorship.getExecutionCourse();            }        });        executionCourses = removeDuplicates(executionCourses);        List infoSiteCoursesInformation = new ArrayList();        Iterator iter = executionCourses.iterator();        while (iter.hasNext()) {            IExecutionCourse executionCourse = (IExecutionCourse) iter.next();            infoSiteCoursesInformation.add(getCourseInformation(executionCourse, sp, executionYear));        }        return infoSiteCoursesInformation;    }