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) {
}
}