Package org.fenixedu.academic.domain.phd.reports

Source Code of org.fenixedu.academic.domain.phd.reports.RecommendationLetterReport

/**
* Copyright © 2002 Instituto Superior Técnico
*
* This file is part of FenixEdu Academic.
*
* FenixEdu Academic 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 Academic 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 Academic.  If not, see <http://www.gnu.org/licenses/>.
*/
package org.fenixedu.academic.domain.phd.reports;

import java.util.List;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.fenixedu.academic.domain.phd.PhdIndividualProgramCollaborationType;
import org.fenixedu.academic.domain.phd.PhdIndividualProgramProcess;
import org.fenixedu.academic.domain.phd.SearchPhdIndividualProgramProcessBean;
import org.fenixedu.academic.domain.phd.candidacy.PhdCandidacyReferee;
import org.fenixedu.academic.domain.phd.candidacy.PhdCandidacyRefereeLetter;
import org.fenixedu.academic.util.Bundle;
import org.fenixedu.bennu.core.i18n.BundleUtil;
import org.fenixedu.bennu.core.security.Authenticate;

public class RecommendationLetterReport extends PhdReport {

    public RecommendationLetterReport(HSSFWorkbook workbook) {
        super(workbook);
    }

    public HSSFSheet build(final SearchPhdIndividualProgramProcessBean bean) {
        List<PhdIndividualProgramProcess> processes =
                PhdIndividualProgramProcess.search(bean.getExecutionYear(), bean.getPredicates());

        if (!hasEPFLCandidates(processes)) {
            return null;
        }

        HSSFSheet sheet = workbook.createSheet("Recommendations");

        setHeaders(sheet);

        int i = 2;
        for (final PhdIndividualProgramProcess process : processes) {
            if (isProcessFromEPFL(process) && process.isAllowedToManageProcess(Authenticate.getUser())) {
                final String processNumber = process.getProcessNumber();

                for (final PhdCandidacyReferee referee : process.getPhdCandidacyReferees()) {
                    final HSSFRow row = sheet.createRow(i++);

                    final String email = referee.getEmail();
                    final String name = referee.getName();
                    final PhdCandidacyRefereeLetter letter = referee.getLetter();

                    addCellValue(row, onNullEmptyString(processNumber), 0);
                    addCellValue(row, onNullEmptyString(name), 1);
                    addCellValue(row, onNullEmptyString(email), 2);
                    if (letter == null) {
                        addCellValue(row, "NO", 3);
                    } else {
                        addCellValue(row, "YES", 3);
                        addCellValue(row, onNullEmptyString(letter.getHowLongKnownApplicant()), 4);
                        addCellValue(row, onNullEmptyString(letter.getCapacity()), 5);
                        addCellValue(row, onNullEmptyString(letter.getComparisonGroup()), 6);
                        addCellValue(row, onNullEmptyString(letter.getRankInClass()), 7);

                        addCellValue(row, onNullEmptyString(letter.getAcademicPerformance().getLocalizedName()), 8);
                        addCellValue(row, onNullEmptyString(letter.getSocialAndCommunicationSkills()), 9);
                        addCellValue(row, onNullEmptyString(letter.getPotencialToExcelPhd()), 10);

                        addCellValue(row, onNullEmptyString(letter.getRefereeName()), 11);
                        addCellValue(row, onNullEmptyString(letter.getRefereePosition()), 12);
                        addCellValue(row, onNullEmptyString(letter.getRefereeInstitution()), 13);
                        addCellValue(row, onNullEmptyString(letter.getRefereeAddress()), 14);
                        addCellValue(row, onNullEmptyString(letter.getRefereeCity()), 15);
                        addCellValue(row, onNullEmptyString(letter.getRefereeZipCode()), 16);
                        addCellValue(row, onNullEmptyString(letter.getRefereeCountry().getLocalizedName().getContent()), 17);
                        addCellValue(row, onNullEmptyString(letter.getRefereeEmail()), 18);
                    }
                }
            }

        }

        return sheet;
    }

    private boolean hasEPFLCandidates(List<PhdIndividualProgramProcess> processes) {
        for (PhdIndividualProgramProcess process : processes) {
            if (isProcessFromEPFL(process)) {
                return true;
            }
        }

        return false;
    }

    private boolean isProcessFromEPFL(PhdIndividualProgramProcess process) {
        return (process.getCandidacyProcess().getPublicPhdCandidacyPeriod() != null && process.getCandidacyProcess()
                .getPublicPhdCandidacyPeriod().isEpflCandidacyPeriod())
                || PhdIndividualProgramCollaborationType.EPFL == process.getCollaborationType();
    }

    @Override
    protected void setHeaders(final HSSFSheet sheet) {
        addHeaderCell(sheet, getHeaderInBundle("processNumber"), 0);
        addHeaderCell(sheet, getHeaderInBundle("refererName"), 1);
        addHeaderCell(sheet, getHeaderInBundle("refererEmaol"), 2);
        addHeaderCell(sheet, getHeaderInBundle("hasReferenceLetter"), 3);

        addHeaderCell(
                sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.howLongKnownApplicant"),
                4);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.capacity"), 5);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.comparisonGroup"), 6);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.rankInClass"), 7);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.academicPerformance"),
                8);
        addHeaderCell(
                sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.socialAndCommunicationSkills"),
                9);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.potencialToExcelPhd"),
                10);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.refereeName"), 11);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.refereePosition"), 12);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.refereeInstitution"),
                13);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.refereeAddress"), 14);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.refereeCity"), 15);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.refereeZipCode"), 16);
        addHeaderCell(sheet,
                getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.refereeCountry"), 17);
        addHeaderCell(sheet, getResource("label.net.sourceforge.fenixedu.domain.phd.candidacy.PhdCandidacyRefereeLetter.email"),
                18);
    }

    private String getHeaderInBundle(String field) {
        return BundleUtil.getString(Bundle.PHD,
                "label.net.sourceforge.fenixedu.domain.phd.reports.PhdIndividualProgramProcessesReport." + field);
    }

    private String getResource(String key) {
        return BundleUtil.getString(Bundle.PHD, key);
    }

}
TOP

Related Classes of org.fenixedu.academic.domain.phd.reports.RecommendationLetterReport

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.