}
public Spreadsheet getCandidatesInformationSpreadSheet(final OutboundMobilityCandidacyPeriod period) {
final String filename = BundleUtil.getString(Bundle.ACADEMIC, "label.mobility.candidates.information.filename");
final Spreadsheet spreadsheetCurricularInfo = new Spreadsheet(filename);
final Spreadsheet spreadsheetOptions =
spreadsheetCurricularInfo.addSpreadsheet(BundleUtil.getString(Bundle.ACADEMIC,
"label.mobility.candidates.options"));
final Spreadsheet spreadsheetContactInformation =
spreadsheetOptions.addSpreadsheet(BundleUtil.getString(Bundle.ACADEMIC, "label.contact.information"));
final Spreadsheet spreadsheetOtherCurricularInfo =
spreadsheetOptions.addSpreadsheet(BundleUtil.getString(Bundle.ACADEMIC, "label.other.curricular.info"));
final Set<Registration> processed = new HashSet<Registration>();
for (final OutboundMobilityCandidacyContest contest : getOutboundMobilityCandidacyContestSet()) {
for (final OutboundMobilityCandidacy candidacy : contest.getOutboundMobilityCandidacySet()) {
final OutboundMobilityCandidacySubmission submission = candidacy.getOutboundMobilityCandidacySubmission();
final Registration registration = submission.getRegistration();
final Calculator calculator = new Calculator(registration.getStudent());
if (!processed.contains(registration)) {
final Person person = registration.getPerson();
final Row row = spreadsheetCurricularInfo.addRow();
final BigDecimal candidacyGrade = submission.getGrade(this);
// final ICurriculum curriculum = registration.getCurriculum();
row.setCell(getString("label.username"), person.getUsername());
row.setCell(getString("label.name"), person.getName());
row.setCell(getString("label.degree"), registration.getDegree().getSigla());
row.setCell(getString("label.candidate.classification"),
candidacyGrade == null ? "" : candidacyGrade.toString());
row.setCell(getString("label.ects.first.cycle"), calculator.completedECTSCycle1.toString());
row.setCell(getString("label.ects.average"), calculator.getEctsAverage().toString());
row.setCell(getString("label.ects.average.first.and.second.cycle"), calculator
.getEctsEverateFirstAndSecondCycle().toString());
row.setCell(getString("label.ects.completed"), calculator.completedECTS.toString());
//row.setCell(getString("label.ects.pending"), calculator.getPendingEcts().toString());
row.setCell(getString("label.ects.enrolled"), calculator.enrolledECTS.toString());
for (final Registration otherRegistration : registration.getStudent().getRegistrationsSet()) {
final Row rowOCI = spreadsheetOtherCurricularInfo.addRow();
final ICurriculum curriculumOther = otherRegistration.getCurriculum();
rowOCI.setCell(getString("label.username"), person.getUsername());
rowOCI.setCell(getString("label.name"), person.getName());
rowOCI.setCell(getString("label.degree"), otherRegistration.getDegree().getSigla());
rowOCI.setCell(getString("label.curricular.year"), curriculumOther.getCurricularYear());