@Override public List<StudentCurricularPlan> getPrecedentStudentCurricularPlans() { final Student student = getStudent(); if (student == null) { return Collections.emptyList(); } final List<StudentCurricularPlan> studentCurricularPlans = new ArrayList<StudentCurricularPlan>(); for (final Registration registration : student.getRegistrationsSet()) { if (registration.isBolonha()) { final StudentCurricularPlan studentCurricularPlan = registration.getLastStudentCurricularPlan(); for (final CycleType cycleType : getValidPrecedentCycleTypes()) { if (studentCurricularPlan.hasCycleCurriculumGroup(cycleType)) { final CycleCurriculumGroup cycle = studentCurricularPlan.getCycle(cycleType); if (!cycle.isConclusionProcessed() && !cycle.isConcluded()) { studentCurricularPlans.add(registration.getLastStudentCurricularPlan()); break; } } } } else if (isPreBolonhaPrecedentDegreeAllowed()) { if (!registration.isConcluded() && !registration.isRegistrationConclusionProcessed()) { studentCurricularPlans.add(registration.getLastStudentCurricularPlan()); } } } return studentCurricularPlans; }