@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; }
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; }
public String getNextPossibleLessonInstanceDate() { YearMonthDay day = getLesson().getNextPossibleLessonInstanceDate(); return day != null ? day.toString("dd/MM/yyyy") : "-"; }