public ByteArrayOutputStream getFilledPdf(Person person) throws IOException, DocumentException {
      InputStream istream = getClass().getResourceAsStream(BPI_PERSONAL_INFORMATION_PDF_PATH);
      PdfReader reader = new PdfReader(istream);
      reader.getAcroForm().remove(PdfName.SIGFLAGS);
      reader.selectPages("1,2");
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      PdfStamper stamper = new PdfStamper(reader, output);
      form = stamper.getAcroFields();

      setField("Nome completo_1", person.getName());
      setField("NIF", person.getSocialSecurityNumber());
      setField("Nº", person.getDocumentIdNumber());

      setField("Nacionalidade", person.getCountryOfBirth().getCountryNationality().toString());
      setField("Naturalidade", person.getCountryOfBirth().getName());

      setField("Distrito", person.getDistrictOfBirth());
      setField("Concelho", person.getDistrictSubdivisionOfBirth());
      setField("Freguesia", person.getParishOfBirth());
      setField("Nome do Pai", person.getNameOfFather());
      setField("Nome da Mãe", person.getNameOfMother());
      setField("Morada de Residencia_1", person.getAddress());
      setField("Localidade", person.getAreaOfAreaCode());
      setField("Designação Postal", person.getAreaOfAreaCode());
      setField("País", person.getCountryOfResidence().getName());

      String postalCode = person.getPostalCode();
      int dashIndex = postalCode.indexOf('-');
      setField("Código Postal4", postalCode.substring(0, 4));
      String last3Numbers = postalCode.substring(dashIndex + 1, dashIndex + 4);
      setField("Código Postal_5", last3Numbers);
      setField("Móvel", person.getDefaultMobilePhoneNumber());
      setField("E-mail", getMail(person));

      YearMonthDay emissionDate = person.getEmissionDateOfDocumentIdYearMonthDay();
      if (emissionDate != null) {
        setField("Dia_1", String.valueOf(emissionDate.getDayOfMonth()));
        setField("Mês_1", String.valueOf(emissionDate.getMonthOfYear()));
        setField("Ano_1", String.valueOf(emissionDate.getYear()));
      }

      YearMonthDay expirationDate = person.getExpirationDateOfDocumentIdYearMonthDay();
      setField("Dia_2", String.valueOf(expirationDate.getDayOfMonth()));
      setField("Mês_2", String.valueOf(expirationDate.getMonthOfYear()));
      setField("Ano_2", String.valueOf(expirationDate.getYear()));

      YearMonthDay birthdayDate = person.getDateOfBirthYearMonthDay();
      setField("Dia3", String.valueOf(birthdayDate.getDayOfMonth()));
      setField("Mês3", String.valueOf(birthdayDate.getMonthOfYear()));
      setField("Ano_3", String.valueOf(birthdayDate.getYear()));

      stamper.setFormFlattening(true);
      stamper.close();
      return output;
    }
예제 #2
0
  @Override
  protected void fillReport() {

    final PhdProgramCandidacyProcess candidacyProcess = getNotification().getCandidacyProcess();
    final Person person = candidacyProcess.getPerson();
    final PhdIndividualProgramProcess individualProgramProcess =
        candidacyProcess.getIndividualProgramProcess();

    addParameter(
        "administrativeOfficeCoordinator",
        individualProgramProcess
            .getPhdProgram()
            .getAdministrativeOffice()
            .getUnit()
            .getActiveUnitCoordinator()
            .getFirstAndLastName());

    addParameter("name", person.getName());
    addParameter("address", person.getAddress());
    addParameter("areaCode", person.getAreaCode());
    addParameter("areaOfAreaCode", person.getAreaOfAreaCode());
    addParameter(
        "programName",
        individualProgramProcess.getPhdProgram().getName().getContent(getLanguage()));

    addParameter("processNumber", individualProgramProcess.getProcessNumber());

    final LocalDate whenRatified = candidacyProcess.getWhenRatified();

    addParameter(
        "ratificationDate", whenRatified != null ? whenRatified.toString(getDateFormat()) : "");

    addParameter("insuranceFee", getInsuranceFee(individualProgramProcess));
    addParameter("registrationFee", getRegistrationFee(individualProgramProcess, whenRatified));

    addParameter("date", new LocalDate().toString(getDateFormat()));
    addParameter("notificationNumber", getNotification().getNotificationNumber());

    addGuidingsParameter(individualProgramProcess);
  }
    public ByteArrayOutputStream getFilledPdf(Person person) throws IOException, DocumentException {
      InputStream istream = getClass().getResourceAsStream(SANTANDER_APPLICATION_PDF_PATH);
      PdfReader reader = new PdfReader(istream);
      reader.getAcroForm().remove(PdfName.SIGFLAGS);
      reader.selectPages("1,2");
      ByteArrayOutputStream output = new ByteArrayOutputStream();
      PdfStamper stamper = new PdfStamper(reader, output);
      form = stamper.getAcroFields();

      setField("topmostSubform[0].Page1[0].Nomecompleto[0]", person.getName());
      String documentIdNumber = person.getDocumentIdNumber();
      if (person.getIdDocumentType().equals(IDDocumentType.CITIZEN_CARD)
          || person.getIdDocumentType().equals(IDDocumentType.IDENTITY_CARD)) {
        setField("topmostSubform[0].Page1[0].NumBICartaoCidadaooutro[0]", documentIdNumber);
        setField(
            "topmostSubform[0].Page1[0].Checkdigit[0]",
            person.getIdentificationDocumentSeriesNumberValue());
      } else {
        setField("topmostSubform[0].Page1[0].Outrotipodocidentificacao[0]", documentIdNumber);
      }

      YearMonthDay emissionDate = person.getEmissionDateOfDocumentIdYearMonthDay();
      if (emissionDate != null) {
        setField(
            "topmostSubform[0].Page1[0].Dataemissao[0]",
            emissionDate.toString(DateTimeFormat.forPattern("dd/MM/yyyy")));
      }
      setField(
          "topmostSubform[0].Page1[0].Datavalidade[0]",
          person
              .getExpirationDateOfDocumentIdYearMonthDay()
              .toString(DateTimeFormat.forPattern("dd/MM/yyyy")));
      setField("topmostSubform[0].Page1[0].NIF[0]", person.getSocialSecurityNumber());
      setField(
          "topmostSubform[0].Page1[0].Nacionalidade[0]",
          person.getCountryOfBirth().getCountryNationality().toString());
      setField(
          "topmostSubform[0].Page1[0].Datanascimento[0]",
          person.getDateOfBirthYearMonthDay().toString(DateTimeFormat.forPattern("dd/MM/yyyy")));
      YearMonthDay dateOfBirthYearMonthDay = person.getDateOfBirthYearMonthDay();
      Period periodBetween = new Period(dateOfBirthYearMonthDay, new YearMonthDay());
      setField(
          "topmostSubform[0].Page1[0].Idadeactual[0]",
          String.valueOf(periodBetween.get(DurationFieldType.years())));
      if (person.isFemale()) {
        setField("topmostSubform[0].Page1[0].Sexo[0]", "F"); // female
      } else if (person.isMale()) {
        setField("topmostSubform[0].Page1[0].Sexo[0]", "M"); // male
      }

      switch (person.getMaritalStatus()) {
        case CIVIL_UNION:
          setField("topmostSubform[0].Page1[0].Uniaofacto[0]", "1");
          break;
        case DIVORCED:
          setField("topmostSubform[0].Page1[0].Divorciado[0]", "1");
          break;
        case MARRIED:
          setField("topmostSubform[0].Page1[0].Casado[0]", "1");
          break;
        case SEPARATED:
          setField("topmostSubform[0].Page1[0].Separado[0]", "1");
          break;
        case SINGLE:
          setField("topmostSubform[0].Page1[0].Solteiro[0]", "1");
          break;
        case WIDOWER:
          setField("topmostSubform[0].Page1[0].Viuvo[0]", "1");
          break;
      }
      setField("topmostSubform[0].Page1[0].Telemovel[0]", person.getDefaultMobilePhoneNumber());
      setField("topmostSubform[0].Page1[0].E-mail[0]", getMail(person));
      setField("topmostSubform[0].Page1[0].Moradaprincipal[0]", person.getAddress());
      setField("topmostSubform[0].Page1[0].localidade[0]", person.getAreaOfAreaCode());
      String postalCode = person.getPostalCode();
      int dashIndex = postalCode.indexOf('-');
      setField("topmostSubform[0].Page1[0].CodPostal[0]", postalCode.substring(0, 4));
      String last3Numbers = person.getPostalCode().substring(dashIndex + 1, dashIndex + 4);
      setField("topmostSubform[0].Page1[0].ExtensaoCodPostal[0]", last3Numbers);

      setField(
          "topmostSubform[0].Page1[0].Nacionalidade[0]",
          person.getCountryOfBirth().getCountryNationality().toString());
      setField(
          "topmostSubform[0].Page1[0].Nacionalidade[0]",
          person.getCountryOfBirth().getCountryNationality().toString());

      stamper.setFormFlattening(true);
      stamper.close();
      return output;
    }
  @SuppressWarnings("unchecked")
  private ByteArrayOutputStream createAcademicAdminProcessSheet(Person person) throws JRException {
    InputStream istream = getClass().getResourceAsStream(ACADEMIC_ADMIN_SHEET_REPORT_PATH);
    JasperReport report = (JasperReport) JRLoader.loadObject(istream);

    @SuppressWarnings("rawtypes")
    HashMap map = new HashMap();

    try {
      final Student student = person.getStudent();
      final Registration registration = findRegistration(student);

      map.put("executionYear", ExecutionYear.readCurrentExecutionYear().getYear());
      if (registration != null) {
        map.put("course", registration.getDegree().getNameI18N().toString());
      }
      map.put("studentNumber", student.getNumber().toString());
      map.put("fullName", person.getName());

      try {
        map.put(
            "photo",
            new ByteArrayInputStream(person.getPersonalPhotoEvenIfPending().getDefaultAvatar()));
      } catch (Exception e) {
        // nothing; print everything else
      }

      map.put(
          "sex",
          BundleUtil.getStringFromResourceBundle(
              "resources/EnumerationResources", person.getGender().name()));
      map.put("maritalStatus", person.getMaritalStatus().getPresentationName());
      map.put("profession", person.getProfession());
      map.put("idDocType", person.getIdDocumentType().getLocalizedName());
      map.put("idDocNumber", person.getDocumentIdNumber());

      YearMonthDay emissionDate = person.getEmissionDateOfDocumentIdYearMonthDay();
      if (emissionDate != null) {
        map.put(
            "idDocEmissionDate", emissionDate.toString(DateTimeFormat.forPattern("dd/MM/yyyy")));
      }

      map.put(
          "idDocExpirationDate",
          person
              .getExpirationDateOfDocumentIdYearMonthDay()
              .toString(DateTimeFormat.forPattern("dd/MM/yyyy")));
      map.put("idDocEmissionLocation", person.getEmissionLocationOfDocumentId());

      String nif = person.getSocialSecurityNumber();
      if (nif != null) {
        map.put("NIF", nif);
      }

      map.put(
          "birthDate",
          person.getDateOfBirthYearMonthDay().toString(DateTimeFormat.forPattern("dd/MM/yyyy")));
      map.put("nationality", person.getCountryOfBirth().getCountryNationality().toString());
      map.put("parishOfBirth", person.getParishOfBirth());
      map.put("districtSubdivisionOfBirth", person.getDistrictSubdivisionOfBirth());
      map.put("districtOfBirth", person.getDistrictOfBirth());
      map.put("countryOfBirth", person.getCountryOfBirth().getName());
      map.put("fathersName", person.getNameOfFather());
      map.put("mothersName", person.getNameOfMother());
      map.put("address", person.getAddress());
      map.put("postalCode", person.getPostalCode());
      map.put("locality", person.getAreaOfAreaCode());
      map.put("cellphoneNumber", person.getDefaultMobilePhoneNumber());
      map.put("telephoneNumber", person.getDefaultPhoneNumber());
      map.put("emailAddress", getMail(person));
      map.put(
          "currentDate",
          new java.text.SimpleDateFormat(
                  "'Lisboa, 'dd' de 'MMMM' de 'yyyy", new java.util.Locale("PT", "pt"))
              .format(new java.util.Date()));
    } catch (NullPointerException e) {
      // nothing; will cause printing of incomplete form
      // better than no form at all
    }

    JasperPrint print = JasperFillManager.fillReport(report, map);
    ByteArrayOutputStream output = new ByteArrayOutputStream();
    JasperExportManager.exportReportToPdfStream(print, output);
    return output;
  }
예제 #5
0
  public static StyledExcelSpreadsheet exportElectionsResultsToFile(
      List<Degree> degrees, ExecutionYear executionYear) throws IOException {
    StyledExcelSpreadsheet spreadsheet = new StyledExcelSpreadsheet();
    final ResourceBundle BUNDLE =
        ResourceBundle.getBundle(
            "resources.PedagogicalCouncilResources", Language.getDefaultLocale());

    for (Degree degree : degrees) {
      spreadsheet.getSheet(degree.getSigla());
      List<YearDelegateElection> elections =
          sortByYear(degree.getYearDelegateElectionsGivenExecutionYear(executionYear));
      for (YearDelegateElection election : elections) {
        if (election.hasLastVotingPeriod()) {
          DelegateElectionVotingPeriod votingPeriod = election.getLastVotingPeriod();
          spreadsheet.newHeaderRow();
          int fistHeaderRow = spreadsheet.getRow().getRowNum();
          spreadsheet.addHeader(
              String.format(
                  "%s - %s (%s)",
                  BUNDLE.getString("label.elections.excel.curricularYear"),
                  election.getCurricularYear().getYear(),
                  votingPeriod.getPeriod()),
              10000);
          spreadsheet
              .getSheet()
              .addMergedRegion(new Region(fistHeaderRow, (short) 0, fistHeaderRow, (short) 5));
          spreadsheet.newRow();
          if (votingPeriod.getVotesCount() == 0) {
            spreadsheet.addCell(BUNDLE.getString("label.elections.excel.not.have.votes"));
          } else {
            spreadsheet.addHeader(BUNDLE.getString("label.elections.excel.studentNumber"), 6000);
            spreadsheet.addHeader(BUNDLE.getString("label.elections.excel.studentName"), 10000);
            spreadsheet.addHeader(BUNDLE.getString("label.phone"), 4000);
            spreadsheet.addHeader(BUNDLE.getString("label.email"), 6000);
            spreadsheet.addHeader(BUNDLE.getString("label.address"), 12000);
            spreadsheet.addHeader(BUNDLE.getString("label.elections.excel.nrTotalVotes"), 5000);
            List<DelegateElectionResultsByStudentDTO> resultsByStudent =
                sortByResults(votingPeriod.getDelegateElectionResults());
            for (DelegateElectionResultsByStudentDTO resultByStudent : resultsByStudent) {
              Student student = resultByStudent.getStudent();
              Person person = student.getPerson();
              String phone =
                  (StringUtils.isEmpty(person.getDefaultPhoneNumber()))
                      ? "-"
                      : person.getDefaultPhoneNumber();
              String email =
                  (StringUtils.isEmpty(person.getDefaultEmailAddressValue()))
                      ? "-"
                      : person.getDefaultEmailAddressValue();
              String address =
                  (StringUtils.isEmpty(person.getAddress())) ? "-" : person.getAddress();

              spreadsheet.newRow();
              spreadsheet.addCell(student.getNumber());
              spreadsheet.addCell(student.getName());
              spreadsheet.addCell(phone);
              spreadsheet.addCell(email);
              spreadsheet.addCell(address);
              spreadsheet.addCell(resultByStudent.getVotesNumber());
            }
            spreadsheet.setRegionBorder(fistHeaderRow, spreadsheet.getRow().getRowNum() + 1, 0, 2);
            spreadsheet.newRow();
            spreadsheet.newRow();
            spreadsheet.addCell(BUNDLE.getString("label.elections.excel.nrBlankTotalVotes"));
            spreadsheet.addCell(
                votingPeriod.getBlankVotesElection(), spreadsheet.getExcelStyle().getValueStyle());
          }
        }
        spreadsheet.newRow();
        spreadsheet.newRow();
      }
    }
    return spreadsheet;
  }
예제 #6
0
  private static void drawPersonalInformation(
      final Page page, final PhdProgramPublicCandidacyHashCode hashCode, final String folderName)
      throws IOException {

    final Person person = hashCode.getPerson();

    page.h(3, "Personal Information", "mtop2");
    page.tableStart("tstyle2 thwhite thnowrap thlight thleft thtop ulnomargin ");

    page.rowStart("tdbold")
        .headerStartWithStyle("width: 125px;")
        .write("Name:")
        .headerEnd()
        .column(person.getName())
        .rowEnd();
    page.rowStart()
        .header("Gender:")
        .column(person.getGender().toLocalizedString(Locale.ENGLISH))
        .rowEnd();
    page.rowStart()
        .header("Identity card type:")
        .column(person.getIdDocumentType().getLocalizedName())
        .rowEnd();
    page.rowStart().header("Identity card #:").column(person.getDocumentIdNumber()).rowEnd();
    page.rowStart().header("Issued by:").column(person.getEmissionLocationOfDocumentId()).rowEnd();
    page.rowStart()
        .header("Fiscal number:")
        .column(string(person.getSocialSecurityNumber()))
        .rowEnd();
    page.rowStart()
        .header("Date of birth:")
        .column(person.getDateOfBirthYearMonthDay().toString("dd/MM/yyyy"))
        .rowEnd();
    page.rowStart().header("Birthplace:").column(person.getDistrictSubdivisionOfBirth()).rowEnd();
    page.rowStart()
        .header("Nationality:")
        .column(person.getCountry().getCountryNationality().getContent())
        .rowEnd();
    page.rowStart().header("Address:").column(person.getAddress()).rowEnd();
    page.rowStart().header("City:").column(person.getArea()).rowEnd();
    page.rowStart().header("Zip code:").column(person.getAreaCode()).rowEnd();
    page.rowStart()
        .header("Country:")
        .column(
            (person.getCountryOfResidence() != null
                ? person.getCountryOfResidence().getName()
                : "-"))
        .rowEnd();
    page.rowStart().header("Phone:").column(person.getDefaultPhoneNumber()).rowEnd();
    page.rowStart().header("Mobile:").column(person.getDefaultMobilePhoneNumber()).rowEnd();
    page.rowStart().header("Email:").column(person.getDefaultEmailAddressValue()).rowEnd();

    page.tableEnd();

    page.h(3, "Photo");
    String photoUrl = APPLICATION_PREFIX_LINK + "/phd/epfl/applications/photo";
    final Photograph photo = person.getPersonalPhotoEvenIfPending();
    if (photo != null) {
      photoUrl += "?photoOid=" + photo.getExternalId();
    }
    page.photo(photoUrl);
  }