webwork/src/main/webwork/view/jasperreports ValueStackDataSource.java,NONE,1.1 JasperReportViewServlet.java,NONE,1.1
[email protected] Sun, 14 Jul 2002 21:21:01 -0700
| Newsgroups | gmane.comp.java.webwork.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/webwork/webwork/src/main/webwork/view/jasperreports
In directory usw-pr-cvs1:/tmp/cvs-serv25884/src/main/webwork/view/jasperreports
Added Files:
ValueStackDataSource.java JasperReportViewServlet.java
Log Message:
added preliminary support for JasperReports
--- NEW FILE: ValueStackDataSource.java ---
package webwork.view.jasperreports;
import java.io.Serializable;
import java.util.Iterator;
import java.util.Map;
import webwork.util.MakeIterator;
import webwork.util.ValueStack;
import dori.jasper.engine.JRDataSource;
import dori.jasper.engine.JRException;
import dori.jasper.engine.JRField;
public class ValueStackDataSource implements JRDataSource
{
ValueStack valueStack;
Iterator iterator;
boolean firstTimeThrough = true;
public ValueStackDataSource(ValueStack valueStack, String dataSource)
{
this.valueStack = valueStack;
Object dataSourceValue = valueStack.findValue(dataSource);
if (dataSourceValue != null)
{
iterator = MakeIterator.convert(dataSourceValue);
}
}
public boolean next() throws JRException
{
if (firstTimeThrough)
{
firstTimeThrough = false;
} else
{
valueStack.popValue();
}
if (iterator.hasNext())
{
valueStack.pushValue(iterator.next());
return true;
} else
{
return false;
}
}
public Object getFieldValue(JRField field) throws JRException
{
Object value = valueStack.findValue(field.getName());
// System.out.println("field: " + field.getName() + "/" + value.toString());
return value;
}
}
--- NEW FILE: JasperReportViewServlet.java ---
/*
* WebWork, Web Application Framework
*
* Distributable under Apache license.
* See terms of license at opensource.org
*/
package webwork.view.jasperreports;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import webwork.util.ValueStack;
import dori.jasper.engine.JREmptyDataSource;
import dori.jasper.engine.JRException;
import dori.jasper.engine.JasperManager;
import dori.jasper.engine.JasperPrint;
import dori.jasper.engine.JasperReport;
import dori.jasper.engine.JasperRunManager;
public class JasperReportViewServlet extends HttpServlet
{
private final String SAX_DRIVER = "org.xml.sax.driver";
private final String SAX_PARSER = "org.apache.xerces.parsers.SAXParser";
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException
{
ValueStack stack = ValueStack.getStack(request);
String dataSource = request.getParameter("dataSource");
ValueStackDataSource stackDataSource = new ValueStackDataSource(stack, dataSource);
String systemId = getServletContext().getRealPath(request.getServletPath());
String jasperRequest = systemId.substring(0, systemId.lastIndexOf(".jr"));
Map parameters = new HashMap();
parameters.put("ReportTitle", "JasperReports Project Description");
File directory = new File(systemId.substring(0, systemId.lastIndexOf('/')));
parameters.put("reportDirectory", directory);
if (System.getProperty(SAX_DRIVER) == null)
{
System.setProperty(SAX_DRIVER, SAX_PARSER);
}
byte[] pdf;
try
{
JasperReport jasperReport = JasperManager.compileReport(jasperRequest + ".xml");
pdf = JasperRunManager.runReportToPdf(jasperReport, parameters, stackDataSource);
} catch (JRException e)
{
e.printStackTrace();
throw new ServletException(e.getMessage());
}
response.setContentType("application/pdf");
response.setContentLength(pdf.length);
ServletOutputStream ouputStream;
try
{
ouputStream = response.getOutputStream();
ouputStream.write(pdf);
ouputStream.flush();
ouputStream.close();
} catch (IOException e)
{
e.printStackTrace();
throw new ServletException(e.getMessage());
}
}
}
-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf