/** * Copyright © 2011 Instituto Superior Técnico * * This file is part of FenixEdu Teacher Evaluation. * * FenixEdu Teacher Evaluation 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 Teacher Evaluation 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 Teacher Evaluation. If not, see <http://www.gnu.org/licenses/>. */ package pt.ist.fenixedu.teacher.evaluation.ui.struts.action.teacher.evaluation; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.SortedMap; import java.util.SortedSet; import java.util.TreeMap; import java.util.TreeSet; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.fenixedu.academic.domain.Department; import org.fenixedu.academic.domain.Person; import org.fenixedu.academic.domain.Teacher; import org.fenixedu.academic.domain.exceptions.DomainException; import org.fenixedu.academic.predicate.AccessControl; import org.fenixedu.academic.ui.struts.action.base.FenixDispatchAction; import org.fenixedu.academic.ui.struts.action.teacher.TeacherApplication.TeacherTeachingApp; import org.fenixedu.bennu.core.groups.DynamicGroup; import org.fenixedu.bennu.core.security.Authenticate; import org.fenixedu.bennu.struts.annotations.Forward; import org.fenixedu.bennu.struts.annotations.Forwards; import org.fenixedu.bennu.struts.annotations.Mapping; import org.fenixedu.bennu.struts.portal.EntryPoint; import org.fenixedu.bennu.struts.portal.StrutsFunctionality; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import pt.ist.fenixWebFramework.renderers.utils.RenderUtils; import pt.ist.fenixedu.contracts.domain.accessControl.DepartmentPresidentStrategy; import pt.ist.fenixedu.teacher.evaluation.domain.FacultyEvaluationProcess; import pt.ist.fenixedu.teacher.evaluation.domain.FacultyEvaluationProcessBean; import pt.ist.fenixedu.teacher.evaluation.domain.FacultyEvaluationProcessServices; import pt.ist.fenixedu.teacher.evaluation.domain.FileUploadBean; import pt.ist.fenixedu.teacher.evaluation.domain.TeacherEvaluation; import pt.ist.fenixedu.teacher.evaluation.domain.TeacherEvaluationFile; import pt.ist.fenixedu.teacher.evaluation.domain.TeacherEvaluationFileBean; import pt.ist.fenixedu.teacher.evaluation.domain.TeacherEvaluationFileType; import pt.ist.fenixedu.teacher.evaluation.domain.TeacherEvaluationProcess; @StrutsFunctionality(app = TeacherTeachingApp.class, path = "teacher-evaluation", titleKey = "label.teacher.evaluation.title", bundle = "ResearcherResources") @Mapping(module = "teacher", path = "/teacherEvaluation") @Forwards({ @Forward(name = "entryPoint", path = "/teacher/evaluation/entryPoint.jsp"), @Forward(name = "viewAutoEvaluation", path = "/teacher/evaluation/viewAutoEvaluation.jsp"), @Forward(name = "changeEvaluationType", path = "/teacher/evaluation/changeEvaluationType.jsp"), @Forward(name = "insertEvaluationMark", path = "/teacher/evaluation/insertEvaluationMark.jsp"), @Forward(name = "viewEvaluees", path = "/teacher/evaluation/viewEvaluees.jsp"), @Forward(name = "viewEvaluation", path = "/teacher/evaluation/viewEvaluation.jsp"), @Forward(name = "viewEvaluationByCCAD", path = "/teacher/evaluation/viewEvaluationByCCAD.jsp"), @Forward(name = "uploadEvaluationFile", path = "/teacher/evaluation/uploadEvaluationFile.jsp"), @Forward(name = "viewManagementInterface", path = "/teacher/evaluation/viewManagementInterface.jsp") }) public class TeacherEvaluationDA extends FenixDispatchAction { private static final Logger logger = LoggerFactory.getLogger(TeacherEvaluationDA.class); @EntryPoint public ActionForward entryPoint(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return mapping.findForward("entryPoint"); } public ActionForward viewAutoEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { SortedSet<TeacherEvaluationProcess> processes = new TreeSet<TeacherEvaluationProcess>(TeacherEvaluationProcess.COMPARATOR_BY_INTERVAL); processes.addAll(getLoggedPerson(request).getTeacherEvaluationProcessFromEvalueeSet()); request.setAttribute("processes", processes); return mapping.findForward("viewAutoEvaluation"); } public ActionForward changeEvaluationType(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationProcess process = getDomainObject(request, "process"); request.setAttribute("typeSelection", new TeacherEvaluationTypeSelection(process)); return mapping.findForward("changeEvaluationType"); } public ActionForward selectEvaluationType(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationTypeSelection selection = getRenderedObject("process-selection"); selection.createEvaluation(); if ((AccessControl.getPerson().isTeacherEvaluationCoordinatorCouncilMember() || DynamicGroup.get("managers").isMember( Authenticate.getUser())) && selection.getProcess().getEvaluee() != AccessControl.getPerson()) { request.setAttribute("process", selection.getProcess()); return mapping.findForward("viewEvaluationByCCAD"); } else { return viewAutoEvaluation(mapping, form, request, response); } } @Deprecated public ActionForward insertAutoEvaluationMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationProcess process = getDomainObject(request, "process"); request.setAttribute("action", "viewAutoEvaluation"); request.setAttribute("process", process); request.setAttribute("slot", "autoEvaluationMark"); return mapping.findForward("insertEvaluationMark"); } public ActionForward insertEvaluationMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationProcess process = getDomainObject(request, "process"); if (process.getEvaluator() != AccessControl.getPerson() && AccessControl.getPerson().isTeacherEvaluationCoordinatorCouncilMember()) { request.setAttribute("action", "viewEvaluationByCCAD&processId=" + process.getExternalId()); } else { request.setAttribute("action", "viewEvaluation&evalueeOID=" + process.getEvaluee().getExternalId()); } request.setAttribute("process", process); request.setAttribute("slot", "evaluationMark"); return mapping.findForward("insertEvaluationMark"); } public ActionForward insertApprovedEvaluationMark(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationProcess process = getDomainObject(request, "process"); request.setAttribute("action", "viewEvaluationByCCAD&processId=" + process.getExternalId()); request.setAttribute("process", process); request.setAttribute("slot", "approvedEvaluationMark"); return mapping.findForward("insertEvaluationMark"); } public ActionForward lockAutoEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationProcess process = getDomainObject(request, "process"); process.getCurrentTeacherEvaluation().lickAutoEvaluationStamp(); if ((AccessControl.getPerson().isTeacherEvaluationCoordinatorCouncilMember() || DynamicGroup.get("managers").isMember( Authenticate.getUser())) && process.getEvaluee() != AccessControl.getPerson()) { request.setAttribute("process", process); return mapping.findForward("viewEvaluationByCCAD"); } else { return viewAutoEvaluation(mapping, form, request, response); } } public ActionForward lockEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationProcess process = getDomainObject(request, "process"); process.getCurrentTeacherEvaluation().lickEvaluationStamp(); if ((AccessControl.getPerson().isTeacherEvaluationCoordinatorCouncilMember() || DynamicGroup.get("managers").isMember( Authenticate.getUser())) && process.getEvaluee() != AccessControl.getPerson()) { request.setAttribute("process", process); return mapping.findForward("viewEvaluationByCCAD"); } else { return viewEvaluation(mapping, request, process.getEvaluee()); } } public ActionForward unlockAutoEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationProcess process = getDomainObject(request, "process"); process.getCurrentTeacherEvaluation().rubAutoEvaluationStamp(); request.setAttribute("process", process); return mapping.findForward("viewEvaluationByCCAD"); } public ActionForward unlockEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { TeacherEvaluationProcess process = getDomainObject(request, "process"); process.getCurrentTeacherEvaluation().rubEvaluationStamp(); request.setAttribute("process", process); return mapping.findForward("viewEvaluationByCCAD"); } public class EvalueesMap implements Serializable { private final Person evaluee; private final SortedMap<FacultyEvaluationProcess, TeacherEvaluationProcess> processes = new TreeMap<FacultyEvaluationProcess, TeacherEvaluationProcess>(); public EvalueesMap(Person evaluee) { this.evaluee = evaluee; final Set<FacultyEvaluationProcess> facultyEvaluationProcessSet = rootDomainObject.getFacultyEvaluationProcessSet(); for (FacultyEvaluationProcess process : facultyEvaluationProcessSet) { processes.put(process, null); } } public Person getEvaluee() { return evaluee; } public List<TeacherEvaluationProcess> getProcesses() { List<TeacherEvaluationProcess> list = new ArrayList<TeacherEvaluationProcess>(); for (TeacherEvaluationProcess process : processes.values()) { list.add(process); } return list; } } public ActionForward viewEvaluees(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Map<Person, EvalueesMap> evaluees = new HashMap<Person, EvalueesMap>(); final Person loggedPerson = getLoggedPerson(request); for (TeacherEvaluationProcess process : loggedPerson.getTeacherEvaluationProcessFromEvaluatorSet()) { if (!evaluees.containsKey(process.getEvaluee())) { evaluees.put(process.getEvaluee(), new EvalueesMap(process.getEvaluee())); } evaluees.get(process.getEvaluee()).processes.put(process.getFacultyEvaluationProcess(), process); } request.setAttribute("processes", rootDomainObject.getFacultyEvaluationProcessSet()); request.setAttribute("evaluees", evaluees.values()); return mapping.findForward("viewEvaluees"); } public ActionForward viewEvaluation(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final Person evaluee = getDomainObject(request, "evalueeOID"); return viewEvaluation(mapping, request, evaluee); } public ActionForward viewEvaluation(final ActionMapping mapping, final HttpServletRequest request, final Person evaluee) throws Exception { final Person loggedPerson = getLoggedPerson(request); SortedSet<TeacherEvaluationProcess> openProcesses = new TreeSet<TeacherEvaluationProcess>(TeacherEvaluationProcess.COMPARATOR_BY_INTERVAL); for (TeacherEvaluationProcess teacherEvaluationProcess : evaluee.getTeacherEvaluationProcessFromEvalueeSet()) { if (teacherEvaluationProcess.getEvaluator().equals(loggedPerson)) { openProcesses.add(teacherEvaluationProcess); } } request.setAttribute("openProcesses", openProcesses); return mapping.findForward("viewEvaluation"); } public ActionForward prepareUploadEvaluationFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { prepareUploadFile(request); final String param = request.getParameter("backAction"); if (param == null || param.isEmpty()) { request.setAttribute("backAction", "viewEvaluation"); } else { request.setAttribute("backAction", param); } return mapping.findForward("uploadEvaluationFile"); } public ActionForward prepareUploadAutoEvaluationFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { prepareUploadFile(request); request.setAttribute("backAction", "viewAutoEvaluation"); return mapping.findForward("uploadEvaluationFile"); } private void prepareUploadFile(HttpServletRequest request) { final TeacherEvaluationProcess teacherEvaluationProcess = getDomainObject(request, "OID"); TeacherEvaluationFileType teacherEvaluationFileType = TeacherEvaluationFileType.valueOf((String) getFromRequest(request, "type")); FileUploadBean fileUploadBean = new FileUploadBean(teacherEvaluationProcess, teacherEvaluationFileType); request.setAttribute("fileUploadBean", fileUploadBean); } public ActionForward uploadEvaluationFile(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FileUploadBean fileUploadBean = getRenderedObject("fileUploadBean"); fileUploadBean.consumeInputStream(); TeacherEvaluationFile.create(fileUploadBean, getLoggedPerson(request)); String backAction = request.getParameter("backAction"); if (backAction.equals("viewEvaluation")) { request.setAttribute("evalueeOID", fileUploadBean.getTeacherEvaluationProcess().getEvaluee().getExternalId()); return viewEvaluation(mapping, form, request, response); } else { if ((AccessControl.getPerson().isTeacherEvaluationCoordinatorCouncilMember() || DynamicGroup.get("managers") .isMember(Authenticate.getUser())) && fileUploadBean.getTeacherEvaluationProcess().getEvaluee() != AccessControl.getPerson()) { request.setAttribute("process", fileUploadBean.getTeacherEvaluationProcess()); return mapping.findForward("viewEvaluationByCCAD"); } else { return viewAutoEvaluation(mapping, form, request, response); } } } public ActionForward viewManagementInterface(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final Set<FacultyEvaluationProcess> facultyEvaluationProcessSet = rootDomainObject.getFacultyEvaluationProcessSet(); request.setAttribute("facultyEvaluationProcessSet", facultyEvaluationProcessSet); return mapping.findForward("viewManagementInterface"); } public ActionForward prepareCreateFacultyEvaluationProcess(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcessBean facultyEvaluationProcessBean = new FacultyEvaluationProcessBean(); request.setAttribute("facultyEvaluationProcessCreationBean", facultyEvaluationProcessBean); return mapping.findForward("viewManagementInterface"); } public ActionForward createFacultyEvaluationProcess(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcessBean facultyEvaluationProcessBean = getRenderedObject(); final FacultyEvaluationProcess facultyEvaluationProcess = facultyEvaluationProcessBean.create(); return viewFacultyEvaluationProcess(mapping, request, facultyEvaluationProcess); } public ActionForward prepareEditFacultyEvaluationProcess(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcess facultyEvaluationProcess = getDomainObject(request, "facultyEvaluationProcessOID"); final FacultyEvaluationProcessBean facultyEvaluationProcessBean = new FacultyEvaluationProcessBean(facultyEvaluationProcess); request.setAttribute("facultyEvaluationProcessEditnBean", facultyEvaluationProcessBean); return mapping.findForward("viewManagementInterface"); } public ActionForward editFacultyEvaluationProcess(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcessBean facultyEvaluationProcessBean = getRenderedObject(); facultyEvaluationProcessBean.edit(); return viewFacultyEvaluationProcess(mapping, request, facultyEvaluationProcessBean.getFacultyEvaluationProcess()); } public ActionForward viewFacultyEvaluationProcess(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcess facultyEvaluationProcess = getDomainObject(request, "facultyEvaluationProcessOID"); return viewFacultyEvaluationProcess(mapping, request, facultyEvaluationProcess); } private ActionForward viewFacultyEvaluationProcess(ActionMapping mapping, HttpServletRequest request, final FacultyEvaluationProcess facultyEvaluationProcess) { final SortedSet<TeacherEvaluationProcess> teacherEvaluationProcesses; int autoEvaluatedCount = 0; int evaluatedCount = 0; int approvedEvaluatedCount = 0; final Person person = AccessControl.getPerson(); if (DynamicGroup.get("managers").isMember(person.getUser()) || person.isTeacherEvaluationCoordinatorCouncilMember()) { teacherEvaluationProcesses = facultyEvaluationProcess.getSortedTeacherEvaluationProcess(); autoEvaluatedCount = facultyEvaluationProcess.getAutoEvaluatedCount(); evaluatedCount = facultyEvaluationProcess.getEvaluatedCount(); approvedEvaluatedCount = facultyEvaluationProcess.getApprovedEvaluatedCount(); } else { teacherEvaluationProcesses = new TreeSet<TeacherEvaluationProcess>(TeacherEvaluationProcess.COMPARATOR_BY_EVALUEE); final Teacher teacher = person.getTeacher(); if (teacher != null) { final Department department = teacher.getDepartment(); if (DepartmentPresidentStrategy.getCurrentDepartmentPresident(department) == person) { for (final TeacherEvaluationProcess teacherEvaluation : facultyEvaluationProcess .getTeacherEvaluationProcessSet()) { if (teacherEvaluation.getEvaluee().getTeacher().getDepartment() == department) { teacherEvaluationProcesses.add(teacherEvaluation); final TeacherEvaluation currentTeacherEvaluation = teacherEvaluation.getCurrentTeacherEvaluation(); if (currentTeacherEvaluation != null && currentTeacherEvaluation.getAutoEvaluationLock() != null) { autoEvaluatedCount++; } if (currentTeacherEvaluation != null && currentTeacherEvaluation.getEvaluationLock() != null) { evaluatedCount++; } if (!teacherEvaluation.getApprovedTeacherEvaluationProcessMarkSet().isEmpty()) { approvedEvaluatedCount++; } } } } } } request.setAttribute("facultyEvaluationProcess", facultyEvaluationProcess); request.setAttribute("teacherEvaluationProcesses", teacherEvaluationProcesses); request.setAttribute("autoEvaluatedCount", autoEvaluatedCount); request.setAttribute("evaluatedCount", evaluatedCount); request.setAttribute("approvedEvaluatedCount", approvedEvaluatedCount); return mapping.findForward("viewManagementInterface"); } public ActionForward deleteFacultyEvaluationProcess(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcess facultyEvaluationProcess = getDomainObject(request, "facultyEvaluationProcessOID"); if (!facultyEvaluationProcess.getTeacherEvaluationProcessSet().isEmpty()) { addActionMessage(request, "error.teacher.evaluation.facultyEvaluationProcess.undeletable"); } else { facultyEvaluationProcess.delete(); } return viewManagementInterface(mapping, form, request, response); } public ActionForward prepareUploadEvaluators(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcess facultyEvaluationProcess = getDomainObject(request, "facultyEvaluationProcessOID"); final FileUploadBean fileUploadBean = new FileUploadBean(facultyEvaluationProcess); request.setAttribute("fileUploadBean", fileUploadBean); return mapping.findForward("viewManagementInterface"); } public ActionForward uploadEvaluators(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FileUploadBean fileUploadBean = getRenderedObject(); final FacultyEvaluationProcess facultyEvaluationProcess = fileUploadBean.getFacultyEvaluationProcess(); fileUploadBean.consumeInputStream(); try { fileUploadBean.uploadEvaluators(); } catch (final DomainException ex) { addActionMessage(request, ex.getMessage(), ex.getArgs()); RenderUtils.invalidateViewState(); } return viewFacultyEvaluationProcess(mapping, request, facultyEvaluationProcess); } public ActionForward viewEvaluationByCCAD(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { TeacherEvaluationProcess process = getDomainObject(request, "processId"); request.setAttribute("process", process); return mapping.findForward("viewEvaluationByCCAD"); } public ActionForward exportAutoEvaluationFiles(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ByteArrayOutputStream bout = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(bout); final String fileSeparator = "/"; final String fileNameSeparator = "_"; final String withoutDepartment = "Sem departamento"; try { for (FacultyEvaluationProcess facultyEvaluationProcess : rootDomainObject.getFacultyEvaluationProcessSet()) { String evaluationName = (facultyEvaluationProcess.getSuffix() == null ? facultyEvaluationProcess.getTitle().getContent() : facultyEvaluationProcess .getSuffix()); for (TeacherEvaluationProcess teacherEvaluationProcess : facultyEvaluationProcess .getTeacherEvaluationProcessSet()) { TeacherEvaluation teacherEvaluation = teacherEvaluationProcess.getCurrentTeacherEvaluation(); if (teacherEvaluation != null) { String department = teacherEvaluation.getTeacherEvaluationProcess().getEvaluee().getTeacher().getLastDepartment() == null ? withoutDepartment : teacherEvaluation .getTeacherEvaluationProcess().getEvaluee().getTeacher().getLastDepartment().getName(); for (TeacherEvaluationFileType teacherEvaluationFileType : teacherEvaluation.getAutoEvaluationFileSet()) { TeacherEvaluationFileBean teacherEvaluationFileBean = new TeacherEvaluationFileBean(teacherEvaluation, teacherEvaluationFileType); if (teacherEvaluationFileBean.getTeacherEvaluationFile() != null) { zip.putNextEntry(new ZipEntry(department + fileSeparator + evaluationName + fileSeparator + teacherEvaluationFileBean.getTeacherEvaluationFileType() + fileNameSeparator + teacherEvaluationFileBean.getTeacherEvaluationFile().getFilename())); zip.write(teacherEvaluationFileBean.getTeacherEvaluationFile().getContents()); zip.closeEntry(); } } } } } zip.close(); response.setContentType("application/zip"); response.addHeader("Content-Disposition", "attachment; filename=autoAvaliação.zip"); ServletOutputStream writer = response.getOutputStream(); writer.write(bout.toByteArray()); writer.flush(); writer.close(); response.flushBuffer(); } catch (IOException e) { logger.error(e.getMessage(), e); } return null; } public ActionForward exportEvaluationFiles(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { ByteArrayOutputStream bout = new ByteArrayOutputStream(); ZipOutputStream zip = new ZipOutputStream(bout); final String fileSeparator = "/"; final String fileNameSeparator = "_"; final String withoutDepartment = "Sem departamento"; try { for (FacultyEvaluationProcess facultyEvaluationProcess : rootDomainObject.getFacultyEvaluationProcessSet()) { String evaluationName = (facultyEvaluationProcess.getSuffix() == null ? facultyEvaluationProcess.getTitle().getContent() : facultyEvaluationProcess .getSuffix()); for (TeacherEvaluationProcess teacherEvaluationProcess : facultyEvaluationProcess .getTeacherEvaluationProcessSet()) { TeacherEvaluation teacherEvaluation = teacherEvaluationProcess.getCurrentTeacherEvaluation(); if (teacherEvaluation != null) { String department = teacherEvaluation.getTeacherEvaluationProcess().getEvaluee().getTeacher().getLastDepartment() == null ? withoutDepartment : teacherEvaluation .getTeacherEvaluationProcess().getEvaluee().getTeacher().getLastDepartment().getName(); for (TeacherEvaluationFileType teacherEvaluationFileType : teacherEvaluation.getEvaluationFileSet()) { TeacherEvaluationFileBean teacherEvaluationFileBean = new TeacherEvaluationFileBean(teacherEvaluation, teacherEvaluationFileType); if (teacherEvaluationFileBean.getTeacherEvaluationFile() != null) { zip.putNextEntry(new ZipEntry(department + fileSeparator + evaluationName + fileSeparator + teacherEvaluationFileBean.getTeacherEvaluationFileType() + fileNameSeparator + teacherEvaluationFileBean.getTeacherEvaluationFile().getFilename())); zip.write(teacherEvaluationFileBean.getTeacherEvaluationFile().getContents()); zip.closeEntry(); } } } } } zip.close(); response.setContentType("application/zip"); response.addHeader("Content-Disposition", "attachment; filename=avaliação.zip"); ServletOutputStream writer = response.getOutputStream(); writer.write(bout.toByteArray()); writer.flush(); writer.close(); response.flushBuffer(); } catch (IOException e) { logger.error(e.getMessage(), e); } return null; } public ActionForward prepareUploadApprovedMarks(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcess facultyEvaluationProcess = getDomainObject(request, "facultyEvaluationProcessOID"); final FileUploadBean fileUploadBean = new FileUploadBean(facultyEvaluationProcess); request.setAttribute("fileUploadBeanForApprovedMarks", fileUploadBean); return mapping.findForward("viewManagementInterface"); } public ActionForward uploadApprovedEvaluations(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FileUploadBean fileUploadBean = getRenderedObject(); final FacultyEvaluationProcess facultyEvaluationProcess = fileUploadBean.getFacultyEvaluationProcess(); fileUploadBean.consumeInputStream(); try { fileUploadBean.uploadApprovedEvaluations(); } catch (final DomainException ex) { addActionMessage(request, ex.getMessage(), ex.getArgs()); RenderUtils.invalidateViewState(); } return viewFacultyEvaluationProcess(mapping, request, facultyEvaluationProcess); } public ActionForward publish(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcess facultyEvaluationProcess = getDomainObject(request, "facultyEvaluationProcessOID"); FacultyEvaluationProcessServices.publish(facultyEvaluationProcess); return viewFacultyEvaluationProcess(mapping, form, request, response); } public ActionForward unPublish(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { final FacultyEvaluationProcess facultyEvaluationProcess = getDomainObject(request, "facultyEvaluationProcessOID"); FacultyEvaluationProcessServices.unPublish(facultyEvaluationProcess); return viewFacultyEvaluationProcess(mapping, form, request, response); } }