Java Reference
In-Depth Information
For our moveFirst() implementation, we simply reset the values of
currentRowIndex and currentColumnIndex to 0 .
Using the Custom JRDataSource
Implementation
Writing code to take advantage of a custom JRDataSource implementation is not
much different from writing code that uses standard JasperReports datasources.
After all, both custom and standard datasources implement the JRDataSource
interface. The following example illustrates how to take advantage of our custom
CSVDataSource :
package net.ensode.jasperbook;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JasperRunManager;
public class CsvDSReportServlet extends HttpServlet
{
protected void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
ServletOutputStream servletOutputStream = response.
getOutputStream();
InputStream reportStream = getServletConfig().getServletContext()
.getResourceAsStream("/reports/AircraftReport.jasper");
try
{
CsvDataSource csvDataSource = new CsvDataSource(new
InputStreamReader(
getServletConfig().getServletContext().getResourceAsStream(
"/reports/AircraftData.csv")));
JasperRunManager.runReportToPdfStream(reportStream,
 
Search WWH ::




Custom Search