Skip to content

Instantly share code, notes, and snippets.

@regispires
Created June 16, 2013 15:44
Show Gist options
  • Save regispires/5792429 to your computer and use it in GitHub Desktop.
Save regispires/5792429 to your computer and use it in GitHub Desktop.
package org.jgenesis.reportserver;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import net.sf.jasperreports.engine.JREmptyDataSource;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
public class ReportGenerator extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doRequest(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doRequest(request, response);
}
public void doRequest(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
try {
Connection conn = null;
try {
// Get parameters
Map<String,String> params = new HashMap<String,String>();
Enumeration<String> enumeration = request.getParameterNames();
while(enumeration.hasMoreElements()) {
String key = enumeration.nextElement();
params.put(key, request.getParameter(key));
}
params.put("absolutePath", this.getServletContext().getRealPath("/"));
// If dsname is set on parameters, get connection
String dsName = params.get("datasource");
if (dsName != null) {
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/" + dsName);
conn = (ds == null ? null : ds.getConnection());
}
// Generate Report
String reportName = "/reports/" + params.get("report") + ".jasper";
String reportFileName = this.getServletContext().getRealPath(reportName);
JasperPrint jasperPrint = null;
response.setContentType("application/pdf");
//response.addHeader("Content-Disposition", "attachment; filename="+params.get("report"));
//response.addHeader("Content-Disposition", "inline; filename="+params.get("report"));
if (conn == null) {
jasperPrint = JasperFillManager.fillReport(reportFileName, params, new JREmptyDataSource());
} else {
jasperPrint = JasperFillManager.fillReport(reportFileName, params, conn);
}
JasperExportManager.exportReportToPdfStream(jasperPrint, response.getOutputStream());
} catch (Exception e) {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Report Server</title>");
out.println("</head>");
out.println("<body>");
out.println("<p>Problema ao gerar o relatório.</p>");
out.println("<p>" + e.getMessage() + "</p>");
out.println("</body>");
out.println("</html>");
e.printStackTrace();
} finally {
if (conn != null) {
conn.close();
}
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment