indzi
6/12/2017 - 7:12 AM

Java Class for Jasper Report generation

Java Class for Jasper Report generation

package org.parsysis.base.JAM.bean;

import java.io.ByteArrayOutputStream;

import java.sql.Connection;
import java.sql.Date;
import java.sql.SQLException;

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import javax.faces.context.FacesContext;

import javax.naming.Context;
import javax.naming.InitialContext;

import javax.servlet.ServletContext;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;

import javax.sql.DataSource;

import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

public class GenerateReport {
    public GenerateReport() {
        super();
    }

    public Connection getDataSourceConnection(String dataSourceName) throws Exception {
        Context ctx = new InitialContext();
        DataSource ds = (DataSource)ctx.lookup(dataSourceName);
        return ds.getConnection();
    }

    private Connection getConnection() throws Exception {
      //TODO: check this connction;
        return getDataSourceConnection("jdbc/JamDS"); // datasource name should be defined in weblogic
    }

    public ServletContext getContext() {
        return (ServletContext)getFacesContext().getExternalContext().getContext();
    }

    public HttpServletResponse getResponse() {
        return (HttpServletResponse)getFacesContext().getExternalContext().getResponse();
    }

    public static FacesContext getFacesContext() {
        return FacesContext.getCurrentInstance();
    }
    
    public String shamsiToday(){
        ShamsiUtilities shamsiUtilities = new ShamsiUtilities();
        String date = shamsiUtilities.getCurrentShamsidate();
        return date;
    }

   /**
     *
     * @param repPath
     * @param param
     * @throws Exception
     */
    public void runReport(String repPath,
                          java.util.Map param) throws Exception {
        Connection conn = null;
        HttpServletResponse response = getResponse();
      
        ServletOutputStream out = response.getOutputStream();
        response.setHeader("Cache-Control", "max-age=0");
        response.setContentType("application/pdf");
        ServletContext context = getContext();
        System.out.println(context.getRealPath("/"));
        JasperDesign design =
            JRXmlLoader.load(context.getRealPath("/") + "/Report/" + repPath +
                             ".jrxml");
        JasperReport report = JasperCompileManager.compileReport(design);
        conn = getConnection();
        param.put("imagePath", context.getRealPath("/"));
        String date = shamsiToday();    
        param.put("Date", date);
        JasperPrint print = JasperFillManager.fillReport(report, param, conn);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        JasperExportManager.exportReportToPdfStream(print, out);
        JasperExportManager.exportReportToPdf(print);
        JasperExportManager.exportReportToXml(print);
        out.write(baos.toByteArray());
        out.flush();
        out.close();
        close(conn);
    }

    public void close(Connection con) throws SQLException {
        con.close();
    }

    public void runReportAction(FacesContext facesContext,
                                java.io.OutputStream outputStream) {
    }
}