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