ITurnoPersistente shiftDAO = sp.getITurnoPersistente();
IShift shift = (IShift) shiftDAO.readByOID(Shift.class, shiftOID);
    public List run(Integer shiftOID) throws FenixServiceException {        List infoClasses = null;        try {            ISuportePersistente sp = PersistenceSupportFactory.getDefaultPersistenceSupport();            ITurnoPersistente shiftDAO = sp.getITurnoPersistente();            IShift shift = (IShift) shiftDAO.readByOID(Shift.class, shiftOID);            List curricularCourses = shift.getDisciplinaExecucao().getAssociatedCurricularCourses();            List scopes = new ArrayList();            for (int i = 0; i < curricularCourses.size(); i++) {                ICurricularCourse curricularCourse = (ICurricularCourse) curricularCourses.get(i);                scopes.addAll(curricularCourse.getScopes());            }            IExecutionCourse executionCourse = shift.getDisciplinaExecucao();            ITurmaPersistente classDAO = sp.getITurmaPersistente();            List classes = classDAO.readByExecutionPeriod(executionCourse.getExecutionPeriod());            infoClasses = new ArrayList();            Iterator iter = classes.iterator();            while (iter.hasNext()) {                ISchoolClass classImpl = (ISchoolClass) iter.next();                if (!shift.getAssociatedClasses().contains(classImpl)                        && containsScope(scopes, classImpl)) {                    InfoClass infoClass = InfoClass.newInfoFromDomain(classImpl);                    infoClasses.add(infoClass);                }            }        } catch (ExcepcaoPersistencia e) {            throw new FenixServiceException(e);        }        return infoClasses;    }