[Rapforums-developer] src/source thread2pdf.jsp,NONE,1.1
Status: Beta
Brought to you by:
brippe
From: Brad R. <br...@us...> - 2005-02-04 01:03:02
|
Update of /cvsroot/rapforums/src/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv18849 Added Files: thread2pdf.jsp Log Message: no message --- NEW FILE: thread2pdf.jsp --- <%@ page import="java.sql.Connection" %> <%@ page import="java.sql.Statement" %> <%@ page import="java.sql.ResultSet" %> <%@ page import="java.sql.SQLException" %> <%@ page import="org.jasig.portal.RDBMServices" %> <%@ page import="org.jasig.portal.services.LogService" %> <%@ page import="edu.fullcoll.uportal.channels.rap.forum.CForum" %> <%@ page import="edu.fullcoll.uportal.channels.rap.forum.filter.IFilterManager" %> <%@ page import="edu.fullcoll.uportal.channels.rap.forum.filter.RAPFilterManager" %> <%@ page import="edu.fullcoll.uportal.channels.rap.forum.xml.ViewXMLFactory" %> <%@ page import="edu.fullcoll.uportal.channels.rap.forum.xml.RAPViewXML" %> <%@ page import="edu.fullcoll.uportal.channels.rap.forum.ForumSessionData" %> <%@ page import="org.jdom.Document" %> <%@ page import="org.jdom.Element" %> <%@ page import="org.jdom.output.XMLOutputter" %> <%@ page import="org.apache.fop.apps.Driver" %> <%@ page import="org.apache.fop.apps.XSLTInputHandler" %> <%@ page import="org.apache.fop.messaging.MessageHandler" %> <%@ page import="java.net.URI" %> <%@ page import="java.io.FileWriter" %> <%@ page import="java.io.BufferedWriter" %> <%@ page import="java.io.Reader" %> <%@ page import="java.io.FileReader" %> <%@ page import="java.io.FileInputStream" %> <%@ page import="java.io.File" %> <%@ page import="java.io.StringWriter" %> <%@ page import="java.io.StringReader" %> <%@ page import="java.io.ByteArrayOutputStream" %> <%@ page import="java.util.Iterator" %> <%@ page import="org.jasig.portal.utils.ResourceLoader" %> <%@ page import="org.apache.avalon.framework.logger.NullLogger" %> <% try { final int INITITAL_BUFFER_SIZE = 5000; String xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; StringWriter writer = new StringWriter(INITITAL_BUFFER_SIZE); int lpg = 0; try { lpg = Integer.parseInt(request.getParameter("lpg")); } catch (Exception e) { lpg = 0; } String username = "temp"; try { int startRow = 1; if(lpg != 0) startRow = lpg+1; int endRow = 5; if(lpg != 0) endRow = lpg + 5; // Paging is setup to display only 5 threads at a time' RAPViewXML rapViewXML = ViewXMLFactory.createRAPViewXML(); Document doc = rapViewXML.getCommentsXML(Integer.parseInt(request.getParameter("forum")), Integer.parseInt(request.getParameter("thread")), startRow, endRow); Element forumsRootElement = doc.getRootElement(); //run the comment filters IFilterManager filterManager = RAPFilterManager.getInstance(); Iterator iterator = forumsRootElement.getChild("rapforum").getChild("rapcomments").getChildren().iterator(); //get and filter the subject and body tags Element e = null; String subject = null; String body = null; while (iterator.hasNext()) { e = (Element)iterator.next(); subject = e.getChild("subject").getText(); body = e.getChild("body").getText(); subject = filterManager.filterSubject(subject); body = filterManager.filterSubject(body); e.getChild("subject").setText(subject); e.getChild("body").setText(body); } /* Element nameElement = new Element("username"); username = (String) request.getParameter("displayname"); nameElement.setText(username); forumsRootElement.addContent(nameElement); */ Element pageElement = new Element("currentpage"); pageElement.setText( (Math.ceil(lpg / 5) + 1) + ""); forumsRootElement.addContent(pageElement); XMLOutputter outputter = new XMLOutputter(" ", true); outputter.output(forumsRootElement, writer); } catch (Exception e) { //todo write out something to the page e.printStackTrace(); LogService.instance().log(LogService.ERROR, e); } xml += writer.toString(); // Write XML to a temp file because FOP won't work otherwise Long time = new Long(System.currentTimeMillis()); String tempFileName = username+time.toString()+".xml"; FileWriter tempFW = new FileWriter(tempFileName); BufferedWriter buffWriter = new BufferedWriter(tempFW); buffWriter.write(xml); buffWriter.close(); ResourceLoader rl = new ResourceLoader(); File fisXSL = rl.getResourceAsFile(Class.forName("edu.fullcoll.uportal.channels.rap.forum.CForum"), "threadfo.xsl"); // grabs the xsl from the forums jar File fisXML = new File(tempFileName); XSLTInputHandler input = new XSLTInputHandler(fisXML, fisXSL); ByteArrayOutputStream output = new ByteArrayOutputStream(); response.setContentType("application/pdf"); Driver driver = new Driver(); driver.setLogger(new NullLogger()); driver.setRenderer(Driver.RENDER_PDF); driver.setOutputStream(output); driver.render(input.getParser(), input.getInputSource()); byte[] content = output.toByteArray(); response.setContentLength(content.length); response.getOutputStream().write(content); response.getOutputStream().flush(); // delete temp file fisXML.delete(); } catch(Exception e) { e.printStackTrace(); LogService.instance().log(LogService.ERROR, e); } %> |