Java tutorial
/** * Copyright 2002 Instituto Superior Tcnico * * This file is part of FenixEdu Core. * * FenixEdu Core is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * FenixEdu Core is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with FenixEdu Core. If not, see <http://www.gnu.org/licenses/>. */ package net.sourceforge.fenixedu.presentationTier.docs.academicAdministrativeOffice; import java.text.MessageFormat; import java.util.Locale; import net.sourceforge.fenixedu.domain.Degree; import net.sourceforge.fenixedu.domain.ExecutionYear; import net.sourceforge.fenixedu.domain.Person; import net.sourceforge.fenixedu.domain.degree.DegreeType; import net.sourceforge.fenixedu.domain.degreeStructure.CycleType; import net.sourceforge.fenixedu.domain.exceptions.DomainException; import net.sourceforge.fenixedu.domain.organizationalStructure.FunctionType; import net.sourceforge.fenixedu.domain.organizationalStructure.UniversityUnit; import net.sourceforge.fenixedu.domain.phd.serviceRequests.documentRequests.PhdRegistryDiplomaRequest; import net.sourceforge.fenixedu.domain.serviceRequests.IRegistryDiplomaRequest; import net.sourceforge.fenixedu.domain.serviceRequests.documentRequests.IDocumentRequest; import net.sourceforge.fenixedu.domain.serviceRequests.documentRequests.RegistryDiplomaRequest; import net.sourceforge.fenixedu.util.Bundle; import org.fenixedu.bennu.core.i18n.BundleUtil; import org.joda.time.DateTime; import org.joda.time.LocalDate; public class RegistryDiploma extends AdministrativeOfficeDocument { private static final long serialVersionUID = 7788392282506503345L; protected RegistryDiploma(final IDocumentRequest documentRequest) { super(documentRequest); } @Override protected IRegistryDiplomaRequest getDocumentRequest() { return (IRegistryDiplomaRequest) super.getDocumentRequest(); } @Override protected void fillReport() { super.fillReport(); IRegistryDiplomaRequest request = getDocumentRequest(); Person person = request.getPerson(); setHeader(); addParameter("institution", getInstitutionName()); addParameter("university", getUniversity(getDocumentRequest().getConclusionDate().toDateTimeAtCurrentTime()) .getPartyName().getContent(Locale.getDefault())); setFirstParagraph(request); setSecondParagraph(person, request); String thirdParagraph = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.thirdParagraph"); String dateWord[] = getDateByWords(request.getConclusionDate()); addParameter("thirdParagraph", MessageFormat.format(thirdParagraph, dateWord[0], dateWord[1], dateWord[2])); addParameter("by", BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.by.university")); if (getDocumentRequest().isRequestForRegistration()) { setFifthParagraph(); } addParameter("studentName", person.getValidatedName()); String graduateTitle = request.getGraduateTitle(getLocale()); if (graduateTitle.contains("Graduated")) { graduateTitle = graduateTitle.replace("Graduated", "Licenciado"); } if (graduateTitle.contains("Master")) { graduateTitle = graduateTitle.replace("Master", "Mestre"); } addParameter("graduateTitle", graduateTitle); setFooter(); } private void setFifthParagraph() { String fifthParagraph; if (getUniversity(new DateTime()) != getUniversity( getDocumentRequest().getConclusionDate().toDateTimeAtCurrentTime())) { fifthParagraph = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.fifthParagraph.UTL.UL"); } else { fifthParagraph = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.fifthParagraph"); } addParameter("fifthParagraph", MessageFormat.format(fifthParagraph, BundleUtil.getString(Bundle.ENUMERATION, getLocale(), getDocumentRequest().getFinalAverage(getLocale())), getDocumentRequest().getFinalAverage(getLocale()), BundleUtil.getString(Bundle.ACADEMIC, getLocale(), getDocumentRequest().getQualifiedAverageGrade(getLocale())))); } protected void setHeader() { final CycleType cycleType = getDocumentRequest().getRequestedCycle(); final String diplomaTypeQualifier; if (cycleType == CycleType.FIRST_CYCLE) { diplomaTypeQualifier = "label.diploma.type.qualifier.first.cycle"; } else if (cycleType == CycleType.SECOND_CYCLE) { diplomaTypeQualifier = "label.diploma.type.qualifier.second.cycle"; } else if (cycleType == CycleType.THIRD_CYCLE) { diplomaTypeQualifier = "label.diploma.type.qualifier.third.cycle"; } else { diplomaTypeQualifier = "label.diploma.type.qualifier.unknown"; } addParameter("degreeRegistrationDiploma", MessageFormat.format( BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.degreeRegistrationDiploma"), new Object[] { BundleUtil.getString(Bundle.ACADEMIC, getLocale(), diplomaTypeQualifier) })); addParameter("portugueseRepublic_1", BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.portugueseRepublic.part1")); addParameter("portugueseRepublic_2", BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.portugueseRepublic.part2")); } protected void setFirstParagraph(IRegistryDiplomaRequest request) { final UniversityUnit university = getUniversity(new DateTime()); String universityName = university.getPartyName().getPreferedContent(); final Person rectorIst = university.getInstitutionsUniversityResponsible(FunctionType.PRINCIPAL); String rectorGender, rectorGrant; if (rectorIst.isMale()) { rectorGender = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.rectorMale"); rectorGrant = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.presidentGrantMale"); } else { rectorGender = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.rectorFemale"); rectorGrant = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.presidentGrantFemale"); } String firstParagraph = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.firstParagraph"); addParameter("firstParagraph", MessageFormat.format(firstParagraph, rectorGender, universityName, rectorGrant, rectorIst.getValidatedName(), request.getRegistryCode().getCode())); } void setSecondParagraph(Person person, IRegistryDiplomaRequest request) { String studentGender; if (person.isMale()) { studentGender = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.studentHolderMale"); } else { studentGender = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.studentHolderFemale"); } String secondParagraph = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.secondParagraph"); String country; if (person.getCountry() != null) { country = person.getCountry().getCountryNationality().getContent(getLanguage()).toLowerCase(); } else { throw new DomainException("error.personWithoutParishOfBirth"); } Degree degree = ((RegistryDiplomaRequest) getDocumentRequest()).getDegree(); ExecutionYear year = ((RegistryDiplomaRequest) getDocumentRequest()).getConclusionYear(); addParameter("secondParagraph", MessageFormat.format(secondParagraph, studentGender, BundleUtil.getString(Bundle.ENUMERATION, getLocale(), person.getIdDocumentType().getName()), person.getDocumentIdNumber(), country, getCycleDescription(), degree.getFilteredName(year, getLocale()))); } protected void setFooter() { final UniversityUnit university = getUniversity(new DateTime()); final String institutionUnitName = getInstitutionName(); final Person presidentIst = university.getInstitutionsUniversityResponsible(FunctionType.PRESIDENT); final Person rectorIst = university.getInstitutionsUniversityResponsible(FunctionType.PRINCIPAL); String presidentGender; if (presidentIst.isMale()) { presidentGender = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.presidentMale"); addParameter("presidentName", BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.presidentGrantMale") + " " + presidentIst.getName()); } else { presidentGender = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.presidentFemale"); addParameter("presidentName", BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.presidentGrantFemale") + " " + presidentIst.getName()); } String rectorGender; if (rectorIst.isMale()) { rectorGender = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.rectorMale"); addParameter("rectorName", BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.presidentGrantMale") + " " + rectorIst.getName()); } else { rectorGender = BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.rectorFemale"); addParameter("rectorName", BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.registryDiploma.presidentGrantFemale") + " " + rectorIst.getName()); } String universityName = university.getPartyName().getPreferedContent(); addParameter("dateParagraph", getFormatedCurrentDate(universityName)); addParameter("rector", rectorGender); addParameter("president", MessageFormat.format(presidentGender, institutionUnitName)); } private String getFormatedCurrentDate(String universityName) { final StringBuilder result = new StringBuilder(); LocalDate date = new LocalDate(); String day = Integer.toString(date.getDayOfMonth()); String month = date.toString("MMMM", getLocale()); if (getDocumentRequest().getLanguage().getLanguage().equals(Locale.getDefault().getLanguage())) { month = month.toLowerCase(); } result.append(universityName).append(", "); result.append(day + " "); result.append(BundleUtil.getString(Bundle.APPLICATION, getLocale(), "label.of")); result.append(" " + month + " "); result.append(BundleUtil.getString(Bundle.APPLICATION, getLocale(), "label.of")); result.append(" ").append(date.getYear()).append("."); return result.toString(); } protected String[] getDateByWords(LocalDate date) { String day = Integer.toString(date.getDayOfMonth()); String month = date.toString("MMMM", getLocale()); if (getDocumentRequest().getLanguage().getLanguage().equals(Locale.getDefault().getLanguage())) { month = month.toLowerCase(); } String year = Integer.toString(date.getYear()); String finalDate[] = new String[] { day, month, year }; return finalDate; } protected String getCycleDescription() { final StringBuilder res = new StringBuilder(); RegistryDiplomaRequest request = (RegistryDiplomaRequest) getDocumentRequest(); CycleType cycle = request.getRequestedCycle(); Degree degree = request.getDegree(); final DegreeType degreeType = request.getDegreeType(); if (degreeType.hasAnyCycleTypes()) { res.append(cycle.getDescription(getLocale())); res.append(" ").append(BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.of.both")).append(" "); } if (!degree.isEmpty()) { res.append(degreeType.getFilteredName(getLocale())); } return res.toString(); } @Override protected String getDegreeDescription() { if (getDocumentRequest().isRequestForRegistration()) { final StringBuilder res = new StringBuilder(); RegistryDiplomaRequest request = (RegistryDiplomaRequest) getDocumentRequest(); CycleType cycle = request.getRequestedCycle(); Degree degree = request.getDegree(); final DegreeType degreeType = request.getDegreeType(); if (degreeType.hasAnyCycleTypes()) { res.append(cycle.getDescription(getLocale())); res.append(" ").append(BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.of.both")) .append(" "); } if (!degree.isEmpty()) { res.append(degreeType.getFilteredName(getLocale())); res.append(" ").append(BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.in")).append(" "); } res.append(degree.getNameI18N(request.getConclusionYear()).getContent(getLanguage())); return res.toString(); } else if (getDocumentRequest().isRequestForPhd()) { PhdRegistryDiplomaRequest request = (PhdRegistryDiplomaRequest) getDocumentRequest(); final StringBuilder res = new StringBuilder(); res.append( BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.phd.doctoral.program.designation")); res.append(" ").append(BundleUtil.getString(Bundle.ACADEMIC, getLocale(), "label.in")); res.append(" ").append( request.getPhdIndividualProgramProcess().getPhdProgram().getName().getContent(getLanguage())); return res.toString(); } throw new DomainException( "docs.academicAdministrativeOffice.RegistryDiploma.degreeDescription.invalid.request"); } }