import java.io.File;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRPdfExporterParameter;
import net.sf.jasperreports.engine.export.JRRtfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
public class ReportGenerator
{
private Connection jdbcConnection;
private String format;
private Map parameters;
public static String PDF_FORMAT = "pdf";
public static String HTML_FORMAT = "html";
public static String RTF_FORMAT = "rtf";
public static String EXCEL_FORMAT = "xls";
public ReportGenerator(Connection jdbcConnection1, String format)
{
this.format = null;
parameters = null;
jdbcConnection = jdbcConnection1;
this.format = format;
}
public void showInBrowser(File fichier, HttpServletResponse out)
{
try
{
// parameters.put("paramunite","11%");
ServletOutputStream out2 = out.getOutputStream();
net.sf.jasperreports.engine.design.JasperDesign jasperDesign = JRXmlLoader.load(fichier);
net.sf.jasperreports.engine.JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
net.sf.jasperreports.engine.JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, jdbcConnection);
if(format == null)
{
out.setContentType("application/pdf");
out.setHeader("Content-disposition", "filename=etat.pdf");
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out2);
exporter.exportReport();
out2.flush();
out2.close();
} else
if(format.equalsIgnoreCase(PDF_FORMAT))
{
out.setContentType("application/pdf");
out.setHeader("Content-disposition", "filename=etat.pdf");
JRPdfExporter exporter = new JRPdfExporter();
exporter.setParameter(JRPdfExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out2);
exporter.exportReport();
out2.flush();
out2.close();
} else
if(format.equalsIgnoreCase(HTML_FORMAT))
{
out.setContentType("text/html");
out.setHeader("Content-disposition", "filename=etats.html");
JRHtmlExporter exporter = new JRHtmlExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out2);
exporter.exportReport();
} else
if(format.equalsIgnoreCase(RTF_FORMAT))
{
out.setContentType("application/ms-word");
out.setHeader("Content-disposition", "filename=etat.rtf");
JRRtfExporter exporter = new JRRtfExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out2);
exporter.exportReport();
} else
if(format.equalsIgnoreCase(EXCEL_FORMAT))
{
out.setContentType("application/ms-excel");
out.setHeader("Content-disposition", "filename=etat.xls");
JRXlsExporter exporter = new JRXlsExporter();
// JRGraphics2DExporter exporter = new JRGraphics2DExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out2);
exporter.exportReport();
out2.flush();
out2.close();
}
out2.flush();
out2.close();
}
catch(Exception ex)
{
String connectMsg = (new StringBuilder("Ne peut creer le stream du report")).append(ex.getMessage()).append(" ").append(ex.getLocalizedMessage()).toString();
System.out.println(connectMsg);
}
}
public Connection getJdbcConnection()
{
return jdbcConnection;
}
public void setJdbcConnection(Connection jdbcConnection)
{
this.jdbcConnection = jdbcConnection;
}
public String getFormat()
{
return format;
}
public void setFormat(String format)
{
this.format = format;
}
public Map getParameters()
{
return parameters;
}
public void ajouterParametre(String nom, Object valeur)
{
if(parameters == null)
parameters = new HashMap();
parameters.put(nom, valeur);
}
public void setParameters(Map parameters)
{
this.parameters = parameters;
}
}
Partager