KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > openi > web > controller > DrillthroughDownloadController


1 /*********************************************************************************
2  * The contents of this file are subject to the OpenI Public License Version 1.0
3  * ("License"); You may not use this file except in compliance with the
4  * License. You may obtain a copy of the License at
5  * http://www.openi.org/docs/LICENSE.txt
6  *
7  * Software distributed under the License is distributed on an "AS IS" basis,
8  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
9  * the specific language governing rights and limitations under the License.
10  *
11  * The Original Code is: OpenI Open Source
12  *
13  * The Initial Developer of the Original Code is Loyalty Matrix, Inc.
14  * Portions created by Loyalty Matrix, Inc. are
15  * Copyright (C) 2005 Loyalty Matrix, Inc.; All Rights Reserved.
16  *
17  * Contributor(s): ______________________________________.
18  *
19  ********************************************************************************/

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 JavaDoc;
30 import java.io.PrintWriter JavaDoc;
31 import javax.servlet.http.*;
32 import javax.xml.transform.Source JavaDoc;
33 import javax.xml.transform.dom.DOMSource JavaDoc;
34 import javax.xml.transform.stream.StreamSource JavaDoc;
35
36
37 /**
38  * @author Uddhab Pant <br>
39  *
40  * Controller to handle drillthrough download request.
41  *
42  */

43 public class DrillthroughDownloadController extends AbstractController {
44     private static Logger logger = Logger.getLogger(DrillthroughDownloadController.class);
45     private String JavaDoc xslFileName;
46
47     /**
48      * Process the request and return a ModelAndView object which the DispatcherServlet will render.
49      *
50      * @param httpServletRequest HttpServletRequest
51      * @param httpServletResponse HttpServletResponse
52      * @return ModelAndView
53      * @throws Exception
54      */

55     protected ModelAndView handleRequestInternal(HttpServletRequest request,
56         HttpServletResponse response) throws Exception JavaDoc {
57         HttpSession session;
58
59         try {
60             session = request.getSession();
61
62             // if drillthrough table is visible,
63
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                     // get pageable state
70
boolean pageable = etc.isPageable();
71
72                     // pagebale property set to false in order to get list.
73
etc.setPageable(false);
74
75                     Source JavaDoc xslt = new StreamSource JavaDoc(new File JavaDoc(
76                                 this.getServletContext().getRealPath(xslFileName)));
77
78                     Document doc = etc.render(RequestContext.instance());
79
80                     // restore pageable state.
81
etc.setPageable(pageable);
82
83                     DOMSource JavaDoc xml = new DOMSource JavaDoc(doc);
84
85                     String JavaDoc result = XMLTransformer.transform(xslt, xml);
86
87                     result = result.substring(0, result.lastIndexOf(","));
88
89                     // replace comma
90
result = result.replaceAll(",\\r", "\r");
91
92                     // make result downloadable
93
response.setContentType("text/plain");
94                     response.setHeader("Pragma", "no-cache");
95                     response.setHeader("Content-Disposition",
96                         "attachment; filename=\"drillthrough.txt\"");
97
98                     PrintWriter JavaDoc out = response.getWriter();
99                     out.print(result);
100                     out.flush();
101                     response.setContentType("text/html");
102
103                     //logger.debug(result);
104
}
105
106                 return new ModelAndView("drillthroughDownloadView");
107             } catch (Exception JavaDoc e) {
108                 logger.error("Exception:", e);
109                 throw e;
110             }
111         }
112
113         public void setXslFileName(String JavaDoc xslFileName) {
114             this.xslFileName = xslFileName;
115         }
116     }
117
Popular Tags