return suroundingSpace == null ? null : SpaceUtils.isRoom(space) ? suroundingSpace : findSurroundingRoom(suroundingSpace);
}
public ActionForward downloadScheduleList(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException {
final ExecutionSemester executionSemester = getExecutionSemester(request);
final Integer semester = executionSemester.getSemester();
final String executionYear = executionSemester.getExecutionYear().getYear();
final Spreadsheet spreadsheet = new Spreadsheet("ScheduleMap");
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.executionPeriod"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.executionYear"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.executionCourse"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.executionDegree"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.curricular.year"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.shift"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.shift.schedule"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.shift.schedule.hasAllocatedRooms"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.teacher.emails"));
spreadsheet.setHeader(BundleUtil.getString(Bundle.APPLICATION, "label.comments"));
for (final ExecutionCourse executionCourse : executionSemester.getAssociatedExecutionCoursesSet()) {
final StringBuilder executionDegreeBuilder = new StringBuilder();
for (final ExecutionDegree executionDegree : executionCourse.getExecutionDegrees()) {
if (executionDegreeBuilder.length() > 0) {
executionDegreeBuilder.append("\n");
}
executionDegreeBuilder.append(executionDegree.getDegree().getSigla());
}
final StringBuilder emailBuilder = new StringBuilder();
for (final Professorship professorship : executionCourse.getProfessorshipsSet()) {
if (emailBuilder.length() > 0) {
emailBuilder.append("\n");
}
emailBuilder.append(professorship.getPerson().getEmailForSendingEmails());
}
for (final CourseLoad courseLoad : executionCourse.getCourseLoadsSet()) {
for (final Shift shift : courseLoad.getShiftsSet()) {
final Set<Integer> curricularYears = new TreeSet<Integer>();
for (final SchoolClass schoolClass : shift.getAssociatedClassesSet()) {
curricularYears.add(schoolClass.getAnoCurricular());
}
final StringBuilder curricularYearBuilder = new StringBuilder();
for (final Integer curricularYear : curricularYears) {
if (curricularYearBuilder.length() > 0) {
curricularYearBuilder.append(", ");
}
curricularYearBuilder.append(curricularYear);
}
final Row row = spreadsheet.addRow();
row.setCell(semester);
row.setCell(executionYear);
row.setCell(executionCourse.getName());
row.setCell(executionDegreeBuilder.toString());
row.setCell(curricularYearBuilder.toString());
row.setCell(shift.getNome());
row.setCell(shift.getLessonPresentationString().replace(';', '\n'));
row.setCell(hasRoomsAttributed(shift));
row.setCell(emailBuilder.toString());
row.setCell(shift.getComment() == null ? "" : shift.getComment());
}
}
}
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment; filename=scheduleMap" + executionYear.replace('/', '_') + "_"
+ executionSemester.getSemester() + ".xls");
final ServletOutputStream writer = response.getOutputStream();
spreadsheet.exportToXLSSheet(writer);
writer.flush();
response.flushBuffer();