Advertisement
csaffi

Vaadin print report (BrowserWindowOpener)

Apr 21st, 2015
496
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.85 KB | None | 0 0
  1. *** on UI ***
  2. Button print = new Button("Print");
  3. print.addClickListener(new ClickListener() {
  4.         @Override
  5.         public void buttonClick(ClickEvent event) {
  6.                 if(typeField.getValue().equals("A")) {
  7.                     AppUI.printReport("reportA.jasper", report.getId(), print);
  8.                 } else if(typeField.getValue().equals("B")) {
  9.                     AppUI.printReport("reportB.jasper", report.getId(), print);
  10.                 } else if(typeField.getValue().equals("C")) {
  11.                     AppUI.printReport("reportC.jasper", report.getId(), print);
  12.                 }
  13.         }
  14. });
  15. addComponent(print);
  16.  
  17. *** on helper class ***
  18. public static void printReport(final String filename, long p1, Button print) {
  19.         String path = "/com/myapp/reports/";
  20.         final String reportFile = path + filename;
  21.         final HashMap parameters = new HashMap();
  22.         parameters.put("id", p1);
  23.  
  24.         try {
  25.                 StreamResource.StreamSource source = new StreamResource.StreamSource() {
  26.  
  27.                         public InputStream getStream() {
  28.                                 byte[] b = null;
  29.                                 Connection conn = null;
  30.                                 try {
  31.                                         InputStream report = getClass().getClassLoader().getResourceAsStream(reportFile);
  32.                                         if (report == null) {
  33.                                                 Notification.show("No report!", Type.ERROR_MESSAGE);
  34.                                                 return null;
  35.                                         }
  36.                                         conn = getDbHelp().getJDBCConnectionPool().reserveConnection();
  37.                                         b = JasperRunManager.runReportToPdf(report, parameters, conn);
  38.                                         conn.commit();
  39.                                 } catch (Exception e) {
  40.                                         e.printStackTrace();
  41.                                 } finally {
  42.                                         getDbHelp().getJDBCConnectionPool().releaseConnection(conn);
  43.                                 }
  44.  
  45.                                 return new ByteArrayInputStream(b);
  46.                         }
  47.                 };
  48.  
  49.                 StreamResource resource = new StreamResource(source, "report.pdf");
  50.                 //resource.getStream().setParameter("Content-Disposition", "attachment;filename=\"report.pdf\"");
  51.                 resource.setMIMEType("application/pdf");
  52.                 resource.setCacheTime(0);
  53.  
  54.                 //Page.getCurrent().open(resource, "_blank", false);
  55.  
  56.                 BrowserWindowOpener opener = new BrowserWindowOpener(resource);
  57.                 opener.extend(print);
  58.  
  59.         } catch (Exception e) {
  60.                 e.printStackTrace();
  61.         }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement