Created
June 16, 2013 15:44
-
-
Save regispires/5792429 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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