/******************************************************************************* * Copyright (c) 2012 Dmitry Tikhomirov. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * Dmitry Tikhomirov - initial API and implementation ******************************************************************************/ package org.opensheet.server.exports; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import jxl.write.Label; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import org.opensheet.shared.model.Assignment; import org.opensheet.shared.model.Hour; import org.opensheet.shared.model.User; import org.springframework.web.servlet.view.document.AbstractJExcelView; public class UserAssignmentByPeriodReportToXls extends AbstractJExcelView{ @Override protected void buildExcelDocument(Map<String, Object> model, WritableWorkbook workbook, HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub response.setContentType("application/vnd.ms-excel"); response.setHeader ("Content-Disposition", "attachment; filename=timesheet.xls"); @SuppressWarnings("unchecked") Map<User, List<Hour>> map = (Map<User, List<Hour>>) model.get("Hours"); Assignment assignment = (Assignment) model.get("assignment"); WritableSheet sheet = workbook.createSheet("Assignment->User Export", 0); sheet.addCell(new Label(0, 0, "User Name")); sheet.addCell(new Label(1, 0, "Assignment")); sheet.addCell(new Label(2, 0, "Hour")); sheet.addCell(new Label(3, 0, "inratesum")); sheet.addCell(new Label(4, 0, "extratesum")); int rowNum = 1; sheet.setColumnView(0, 40); sheet.setColumnView(1, 40); sheet.setColumnView(2, 10); sheet.setColumnView(3, 20); sheet.setColumnView(4, 20); for(Map.Entry<User,List<Hour>> m: map.entrySet()){ List<Hour> list = m.getValue(); Hour rootHour = list.get(0); sheet.addCell(new Label(0, rowNum,m.getKey().getFullName())); sheet.addCell(new Label(1, rowNum,rootHour.getAssignment().getName())); sheet.addCell(new jxl.write.Number(2, rowNum,rootHour.getHour())); sheet.addCell(new jxl.write.Number(3, rowNum,rootHour.getInratesum())); sheet.addCell(new jxl.write.Number(4, rowNum,rootHour.getExtratesum())); rowNum++; list.remove(0); if(assignment.getLevel() == 0){ for(Hour h: list){ sheet.addCell(new Label(0, rowNum," ")); sheet.addCell(new Label(1, rowNum,h.getAssignment().getName())); sheet.addCell(new jxl.write.Number(2, rowNum,h.getHour())); sheet.addCell(new jxl.write.Number(3, rowNum,h.getInratesum())); sheet.addCell(new jxl.write.Number(4, rowNum,h.getExtratesum())); rowNum++; } } } } }