1 package ar.com.jiji.kaya.reports; 2 3 import java.io.InputStream; 4 import java.io.OutputStream; 5 import java.util.Map; 6 7 import net.sf.jasperreports.engine.JRDataSource; 8 import net.sf.jasperreports.engine.JRException; 9 import net.sf.jasperreports.engine.JasperCompileManager; 10 import net.sf.jasperreports.engine.JasperExportManager; 11 import net.sf.jasperreports.engine.JasperFillManager; 12 import net.sf.jasperreports.engine.JasperPrint; 13 14 /** 15 * Facade para JasperReports. * TODO: documentar y hacer tests 16 * 17 * @author ldebole 18 * @author lparra 19 * 20 */ 21 public class JasperFacade { 22 23 private JasperFacade() { 24 } 25 26 /** 27 * Compila un reporte. 28 * 29 * @param fileName 30 * El nombre del archivo, sin extension. Genera un archivo con 31 * igual nombre pero con la extension .jasper 32 * @throws ReportException 33 */ 34 public static void compile(String fileName) throws ReportException { 35 try { 36 JasperCompileManager.compileReportToFile(fileName + ".jrxml", 37 fileName + ".jasper"); 38 } catch (JRException e) { 39 throw new ReportException(e); 40 } 41 42 } 43 44 /** 45 * Genera un reporte a partir de un reporte ya compilado. 46 * 47 * @param format 48 * El formato del reporte a generar. 49 * @param reportResource 50 * El path dentro del classpath donde esta el reporte compilado. 51 * @param params 52 * Los parametros del reporte. Si no tiene se puede enviar null. 53 * @param dataSource 54 * @param out 55 * El stream donde se escriben el reporte. 56 * @throws ReportException 57 * En caso de error. 58 */ 59 public static void export(ReportFormat format, String reportResource, 60 Map params, JRDataSource dataSource, OutputStream out) 61 throws ReportException { 62 InputStream reportStream = JasperFacade.class 63 .getResourceAsStream(reportResource); 64 if (reportStream == null) 65 throw new ReportException("Report not found " + reportResource); 66 67 try { 68 JasperPrint jprint = JasperFillManager.fillReport(reportStream, 69 params, dataSource); 70 switch (format) { 71 case PDF: 72 JasperExportManager.exportReportToPdfStream(jprint, out); 73 case HTML: 74 JasperExportManager.exportReportToPdfStream(jprint, out); 75 } 76 } catch (JRException e) { 77 throw new ReportException(e); 78 } 79 } 80 81 public static void export(ReportFormat tipo, String fileName, Map args, 82 JRDataSource dataSource) throws ReportException { 83 try { 84 switch (tipo) { 85 case PDF: 86 exportToPdf(fileName, args, dataSource); 87 case HTML: 88 exportToHtml(fileName, args, dataSource); 89 } 90 } catch (JRException e) { 91 throw new ReportException(e); 92 } 93 94 } 95 96 public static void export(ReportFormat tipo, String fileName, 97 JRDataSource dataSource) throws ReportException { 98 export(tipo, fileName, null, dataSource); 99 } 100 101 private static void exportToPdf(String fileName, Map args, 102 JRDataSource dataSource) throws JRException { 103 JasperExportManager.exportReportToPdfFile(JasperFillManager 104 .fillReportToFile(fileName + ".jasper", args, dataSource), 105 fileName + ".pdf"); 106 } 107 108 private static void exportToHtml(String fileName, Map args, 109 JRDataSource dataSource) throws JRException { 110 JasperExportManager.exportReportToHtmlFile(JasperFillManager 111 .fillReportToFile(fileName + ".jasper", args, dataSource), 112 fileName + ".html"); 113 } 114 115 }