for (Dismissal dismissal : wrapper.getCredits().getDismissalsSet()) {
dismissals.add(dismissal);
}
}
if (dismissals.size() == 1) {
Dismissal dismissal = dismissals.iterator().next();
if (dismissal instanceof OptionalDismissal || dismissal instanceof CreditsDismissal
|| dismissal.getCurricularCourse().isOptionalCurricularCourse()) {
return EctsTableIndex.convertGradeToEcts(scp.getDegree(), dismissal, grade, processingDate);
} else {
CurricularCourse curricularCourse = dismissal.getCurricularCourse();
return EctsTableIndex.convertGradeToEcts(curricularCourse, dismissal, grade, processingDate);
}
} else if (dismissals.size() > 1) {
// if more than one exists we can't base the conversion on the
// origin, so step up to the degree, on a context based on one
// of the sources.
for (Dismissal dismissal : dismissals) {
if (dismissal.getParentCycleCurriculumGroup() != null) {
return EctsTableIndex.convertGradeToEcts(scp.getDegree(), dismissal, grade, processingDate);
}
}
}
}