@Override
 protected List<CandidacyDegreeBean> createCandidacyDegreeBeans(HttpServletRequest request) {
   final SecondCycleCandidacyProcess process = getProcess(request);
   final List<CandidacyDegreeBean> candidacyDegreeBeans = new ArrayList<CandidacyDegreeBean>();
   for (final SecondCycleIndividualCandidacyProcess child :
       process.getAcceptedSecondCycleIndividualCandidacies()) {
     candidacyDegreeBeans.add(new SecondCycleCandidacyDegreeBean(child));
   }
   Collections.sort(candidacyDegreeBeans);
   return candidacyDegreeBeans;
 }
 private void writeReport(
     final SecondCycleCandidacyProcess process, final ServletOutputStream writer)
     throws IOException {
   final List<Spreadsheet> spreadsheets = new ArrayList<Spreadsheet>();
   for (final Entry<Degree, SortedSet<SecondCycleIndividualCandidacyProcess>> entry :
       process.getValidSecondCycleIndividualCandidaciesByDegree().entrySet()) {
     spreadsheets.add(buildReport(entry.getKey(), entry.getValue()));
   }
   new SpreadsheetXLSExporter().exportToXLSSheets(writer, spreadsheets);
 }
  private Collection<IndividualCandidacyProcess> getChildsWithMissingRequiredDocuments(
      SecondCycleCandidacyProcess process) {

    return Collections2.filter(
        process.getChildsWithMissingRequiredDocuments(), CAN_EXECUTE_ACTIVITY_PREDICATE);
  }
 protected void setCandidacyProcessInformation(
     final ActionForm actionForm, final SecondCycleCandidacyProcess process) {
   final SecondCycleCandidacyProcessForm form = (SecondCycleCandidacyProcessForm) actionForm;
   form.setSelectedProcessId(process.getExternalId());
   form.setExecutionIntervalId(process.getCandidacyExecutionInterval().getExternalId());
 }