View Javadoc

1   // Created on 24.11.2003
2   package com.pnpconsult.zeiterfassung.actions.manager;
3   
4   import java.io.OutputStream;
5   
6   import javax.servlet.http.HttpServletRequest;
7   import javax.servlet.http.HttpServletResponse;
8   import javax.xml.transform.Source;
9   
10  import org.apache.struts.action.Action;
11  import org.apache.struts.action.ActionForm;
12  import org.apache.struts.action.ActionForward;
13  import org.apache.struts.action.ActionMapping;
14  
15  import com.pnpconsult.zeiterfassung.helper.BillManager;
16  import com.pnpconsult.zeiterfassung.helper.TableManager;
17  import com.pnpconsult.zeiterfassung.model.Bill;
18  import com.pnpconsult.zeiterfassung.pdf.PdfSerializer;
19  import com.pnpconsult.zeiterfassung.pdf.TableXmlProducer;
20  import com.pnpconsult.zeiterfassung.table.Table;
21  
22  /***
23   * @author <a href="mailto:powerpete@users.sf.net">M. Petersen</a>
24   * @version $Id: PrintBillAction.java,v 1.6 2004/06/24 20:54:19 powerpete Exp $
25   * 
26   * @struts.action 
27   *      path="/secure/manager/printBill" 
28   *      name="managerMenuForm" 
29   *      scope="request"
30   *      validate="false"
31   */
32  public class PrintBillAction extends Action
33  {
34      private PdfSerializer pdfSerializer = new PdfSerializer();
35  
36      public ActionForward execute(
37          ActionMapping mapping,
38          ActionForm form,
39          HttpServletRequest request,
40          HttpServletResponse response) throws Exception
41      {
42          TableManager manager = new TableManager();
43          Table table = manager.get(request);
44          Bill bill = table.getBill();
45          response.reset();
46          response.setContentType("application/pdf");
47          response.addHeader(
48              "Content-Disposition",
49              "attachment; filename=" + bill + ".pdf");
50          Source source = new TableXmlProducer(table).getSource();
51          OutputStream out = response.getOutputStream();
52          pdfSerializer.serialize(source, out);
53          if (!bill.isPrinted())
54          {
55              bill.setPrinted(true);
56              new BillManager().update(bill);
57          }
58          return null;
59      }
60  }