InfoExecutionDegree infoExecutionDegree = (InfoExecutionDegree) Cloner .get(executionDegree);
InfoExecutionDegree infoExecutionDegree = InfoExecutionDegree.newInfoFromDomain(executionDegree);  InfoExecutionYear infoExecutionYear = InfoExecutionYear.newInfoFromDomain(executionDegree.getExecutionYear()); infoExecutionDegree.setInfoExecutionYear(infoExecutionYear);  InfoDegreeCurricularPlan infoDegreeCurricularPlan = InfoDegreeCurricularPlan.newInfoFromDomain(executionDegree.getDegreeCurricularPlan()); infoExecutionDegree.setInfoDegreeCurricularPlan(infoDegreeCurricularPlan);  InfoDegree infoDegree = InfoDegree.newInfoFromDomain(executionDegree.getDegreeCurricularPlan().getDegree()); infoDegreeCurricularPlan.setInfoDegree(infoDegree);
    public List run(InfoExecutionYear infoExecutionYear, TipoCurso degreeType)            throws FenixServiceException {        List infoExecutionDegreeList = null;        try {            ISuportePersistente sp = PersistenceSupportFactory.getDefaultPersistenceSupport();            IPersistentExecutionDegree executionDegreeDAO = sp.getIPersistentExecutionDegree();            IExecutionYear executionYear = null;            if (infoExecutionYear == null) {                IPersistentExecutionYear persistentExecutionYear = sp.getIPersistentExecutionYear();                executionYear = persistentExecutionYear.readCurrentExecutionYear();            } else {                executionYear = Cloner.copyInfoExecutionYear2IExecutionYear(infoExecutionYear);            }            List executionDegrees = null;            if (degreeType == null) {                executionDegrees = executionDegreeDAO.readByExecutionYear(executionYear.getYear());            } else {                executionDegrees = executionDegreeDAO.readByExecutionYearAndDegreeType(executionYear,                        degreeType);            }            infoExecutionDegreeList = (ArrayList) CollectionUtils.collect(executionDegrees,                    new Transformer() {                        public Object transform(Object input) {                            IExecutionDegree executionDegree = (IExecutionDegree) input;                            InfoExecutionDegree infoExecutionDegree = (InfoExecutionDegree) Cloner                                    .get(executionDegree);                            return infoExecutionDegree;                        }                    });        } catch (ExcepcaoPersistencia ex) {            throw new FenixServiceException("Problems on database!", ex);        }        return infoExecutionDegreeList;    }