/** * 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.reports; import org.fenixedu.academic.domain.Evaluation; import org.fenixedu.academic.domain.Exam; import org.fenixedu.academic.domain.ExecutionCourse; import org.fenixedu.academic.domain.ExecutionSemester; import org.fenixedu.academic.domain.WrittenEvaluation; import org.fenixedu.academic.domain.space.WrittenEvaluationSpaceOccupation; import org.fenixedu.commons.spreadsheet.Spreadsheet; import org.fenixedu.commons.spreadsheet.Spreadsheet.Row; import org.fenixedu.spaces.domain.Space; public class WrittenEvaluationReportFile extends WrittenEvaluationReportFile_Base { public WrittenEvaluationReportFile() { super(); } @Override public String getJobName() { return "Listagem de Avaliacoes Escritas"; } @Override protected String getPrefix() { return "writtenEvaluations"; } @Override public void renderReport(final Spreadsheet spreadsheet) throws Exception { spreadsheet.setHeader("Ano Lectivo"); spreadsheet.setHeader("Semestre"); spreadsheet.setHeader("Código Execução Disciplina"); spreadsheet.setHeader("Nome da Disciplina"); spreadsheet.setHeader("Código Avaliação"); spreadsheet.setHeader("Tipo de Avaliação"); spreadsheet.setHeader("Data Avaliação"); spreadsheet.setHeader("Hora de Início"); spreadsheet.setHeader("Hora de Fim"); spreadsheet.setHeader("Salas"); spreadsheet.setHeader("Capacidade Exame"); spreadsheet.setHeader("Capacidade Normal"); spreadsheet.setHeader("Número de Inscritos"); for (final ExecutionSemester executionSemester : getExecutionYear().getExecutionPeriodsSet()) { for (final ExecutionCourse executionCourse : executionSemester.getAssociatedExecutionCoursesSet()) { for (final Evaluation evaluation : executionCourse.getAssociatedEvaluationsSet()) { if (evaluation instanceof WrittenEvaluation) { final WrittenEvaluation writtenEvaluation = (WrittenEvaluation) evaluation; final Row row = spreadsheet.addRow(); row.setCell(getExecutionYear().getYear()); row.setCell(executionSemester.getSemester()); row.setCell(GepReportFile.getExecutionCourseCode(executionCourse)); row.setCell(executionCourse.getName()); row.setCell(GepReportFile.getWrittenEvaluationCode(writtenEvaluation)); row.setCell(writtenEvaluation instanceof Exam ? "Exame" : "Teste"); row.setCell(writtenEvaluation.getDayDateYearMonthDay().toString("yyyy-MM-dd")); row.setCell(writtenEvaluation.getBeginningDateTime().toString("HH:mm")); row.setCell(writtenEvaluation.getEndDateTime().toString("HH:mm")); final StringBuilder rooms = new StringBuilder(); int examVacancy = 0; int normalVacancy = 0; for (final WrittenEvaluationSpaceOccupation roomOccupation : writtenEvaluation .getWrittenEvaluationSpaceOccupationsSet()) { final Space room = roomOccupation.getRoom(); if (rooms.length() > 0) { rooms.append(", "); } rooms.append(room.getName()); examVacancy += room.<Integer> getMetadata("examCapacity").orElse(0).intValue(); normalVacancy += room.getAllocatableCapacity().intValue(); } row.setCell(rooms.toString()); row.setCell(examVacancy); row.setCell(normalVacancy); if (writtenEvaluation.getEnrollmentBeginDayDateYearMonthDay() == null) { row.setCell(" "); } else { final int enrolmentCount = writtenEvaluation.getWrittenEvaluationEnrolmentsSet().size(); row.setCell(enrolmentCount); } } } } } } }