1 20 package org.openi.web.controller; 21 22 import com.tonbeller.wcf.controller.*; 23 import com.tonbeller.wcf.table.*; 24 import org.apache.log4j.*; 25 import org.openi.xml.*; 26 import org.springframework.web.servlet.*; 27 import org.springframework.web.servlet.mvc.*; 28 import org.w3c.dom.*; 29 import java.io.File ; 30 import java.io.PrintWriter ; 31 import javax.servlet.http.*; 32 import javax.xml.transform.Source ; 33 import javax.xml.transform.dom.DOMSource ; 34 import javax.xml.transform.stream.StreamSource ; 35 36 37 43 public class DrillthroughDownloadController extends AbstractController { 44 private static Logger logger = Logger.getLogger(DrillthroughDownloadController.class); 45 private String xslFileName; 46 47 55 protected ModelAndView handleRequestInternal(HttpServletRequest request, 56 HttpServletResponse response) throws Exception { 57 HttpSession session; 58 59 try { 60 session = request.getSession(); 61 62 if ((session.getAttribute("query01.drillthroughtable") != null) 64 && ((EditableTableComponent) session.getAttribute( 65 "query01.drillthroughtable")).isVisible()) { 66 EditableTableComponent etc = (EditableTableComponent) session 67 .getAttribute("query01.drillthroughtable"); 68 69 boolean pageable = etc.isPageable(); 71 72 etc.setPageable(false); 74 75 Source xslt = new StreamSource (new File ( 76 this.getServletContext().getRealPath(xslFileName))); 77 78 Document doc = etc.render(RequestContext.instance()); 79 80 etc.setPageable(pageable); 82 83 DOMSource xml = new DOMSource (doc); 84 85 String result = XMLTransformer.transform(xslt, xml); 86 87 result = result.substring(0, result.lastIndexOf(",")); 88 89 result = result.replaceAll(",\\r", "\r"); 91 92 response.setContentType("text/plain"); 94 response.setHeader("Pragma", "no-cache"); 95 response.setHeader("Content-Disposition", 96 "attachment; filename=\"drillthrough.txt\""); 97 98 PrintWriter out = response.getWriter(); 99 out.print(result); 100 out.flush(); 101 response.setContentType("text/html"); 102 103 } 105 106 return new ModelAndView("drillthroughDownloadView"); 107 } catch (Exception e) { 108 logger.error("Exception:", e); 109 throw e; 110 } 111 } 112 113 public void setXslFileName(String xslFileName) { 114 this.xslFileName = xslFileName; 115 } 116 } 117 | Popular Tags |