Hi! Usually in my struts applications I use the compiled jasper file
(.jasper), without recompiling the .jrxml at each request. I've
created a class named JasperReportExporter:

package utils.report;

import java.sql.Connection;
import java.util.HashMap;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRCsvExporter;
import net.sf.jasperreports.engine.export.JRExportProgressMonitor;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.export.JRXlsExporter;

public class JasperReportExporter implements Runnable, JRExportProgressMonitor {

        
        //Output format. Default: PDF
        private int exportFormat = "pdf";
        
        //Path for the .jasper file
        private String jasperPath = null;
        
        //.jasper filename
        private String jasperFile = null;
        
        //Path for the output file
        private String exportPath = null;
        
        //Output filename
        private String exportFile = null;
        
        //Report parameters hashmap
        private HashMap reportParameters = null;
        
        //Connection to the database
        private Connection connection = null;
        
        public void run() {
        
                boolean canrun = true;
                String filename = null;
                String outputfile = null;
                
                //Performs checks
                if(jasperPath != null){
                    if(jasperFile != null){
                        filename = jasperPath + jasperFile;
                    }
                    else{
                        canrun = false;
                    }
                }
                else{
                    if(jasperFile != null){
                        filename = jasperFile;
                    }
                    else{
                        canrun = false;
                    }
                }
                
                if(exportPath != null){
                    if(exportFile != null){
                        outputfile = exportPath + exportFile;
                    }
                    else{
                        canrun = false;
                    }
                }
                else{
                    if(exportFile != null){
                        outputfile = exportFile;
                    }
                    else{
                        canrun = false;
                    }
                }
        
        
                if(canrun == true){
        
                        if(reportParameters == null){
                                reportParameters = new HashMap();
                        }
                        
                        JasperPrint print = null;
                        
                        if (connection == null) {
                                //If I set from outside a null connection, I 
want to use an empty datasource
                                print = JasperFillManager.fillReport(filename, 
reportParameters,
new JREmptyDataSource());
                        } else {
                                print = JasperFillManager.fillReport(filename, 
reportParameters,
connection);
                        }
                        JRExporter exporter = null;
                        
                        //Checks for the required export format and 
instantiates the correct exporter
                        if(exportFormat.equals("pdf") == true){
                                exporter = new JRPdfExporter();
                                outputfile += ".pdf";
                        }
                        if(exportFormat.equals("html") == true){
                                exporter = new JRHtmlExporter();
                                outputfile += ".html";
                        }
                        if(exportFormat.equals("xls") == true){
                                exporter = new JRXlsExporter();
                                outputfile += ".xls";
                        }
                        if(exportFormat.equals("csv") == true){
                                exporter = new JRCsvExporter();
                                outputfile += ".csv";
                        }
                        
                        //Sets report parameters, run report and create the 
output
                        
exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, outputfile);
                        exporter.setParameter(JRExporterParameter.JASPER_PRINT, 
print);
                        
exporter.setParameter(JRExporterParameter.PROGRESS_MONITOR, this);
                        exporter.exportReport();
                }
                else{
                        System.out.println("JasperReportExporter : export 
failed. Please
fill the jasperFile and the exportFilename properties");
                }
                
        }
        
        public void afterPageExport() {
        }
        
        //GETTERS AND SETTERS FOR PRIVATE PROPERTIES OMITTED
}

Then, from my action classes I instantiate a JasperReportExporter,
then I set all JasperReportExporter properties, finally I invoke the
run method

Hope this helps

Bye, Marco ;)

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to