KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > pentaho > ui > servlet > HttpWebService


1 /*
2  * Copyright 2006 Pentaho Corporation. All rights reserved.
3  * This software was developed by Pentaho Corporation and is provided under the terms
4  * of the Mozilla Public License, Version 1.1, or any later version. You may not use
5  * this file except in compliance with the license. If you need a copy of the license,
6  * please go to http://www.mozilla.org/MPL/MPL-1.1.txt. The Original Code is the Pentaho
7  * BI Platform. The Initial Developer is Pentaho Corporation.
8  *
9  * Software distributed under the Mozilla Public License is distributed on an "AS IS"
10  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. Please refer to
11  * the license for the specific language governing your rights and limitations.
12  *
13  * @created Jul 12, 2005
14  * @author James Dixon
15  *
16  */

17
18 package org.pentaho.ui.servlet;
19
20 import java.io.ByteArrayOutputStream JavaDoc;
21 import java.io.IOException JavaDoc;
22 import java.io.InputStream JavaDoc;
23 import java.io.OutputStream JavaDoc;
24 import java.util.ArrayList JavaDoc;
25 import java.util.HashMap JavaDoc;
26 import java.util.List JavaDoc;
27
28 import org.dom4j.*;
29 import javax.servlet.ServletException JavaDoc;
30 import javax.servlet.http.HttpServletRequest JavaDoc;
31 import javax.servlet.http.HttpServletResponse JavaDoc;
32
33 import org.apache.commons.logging.Log;
34 import org.apache.commons.logging.LogFactory;
35 import org.pentaho.messages.Messages;
36 import org.pentaho.core.runtime.IRuntimeContext;
37 import org.pentaho.core.services.HttpWebServiceRequestHandler;
38 import org.pentaho.core.session.IPentahoSession;
39 import org.pentaho.core.solution.HttpRequestParameterProvider;
40 import org.pentaho.core.solution.IParameterProvider;
41 import org.pentaho.core.solution.SimpleOutputHandler;
42 import org.pentaho.core.solution.SimpleParameterProvider;
43 import org.pentaho.core.system.PentahoSystem;
44 import org.pentaho.plugin.jfreechart.ChartDefinition;
45 import org.pentaho.core.ui.SimpleUrlFactory;
46 import org.pentaho.core.util.SoapUtil;
47 import org.pentaho.core.util.UIUtil;
48 import org.pentaho.ui.ChartHelper;
49 import org.pentaho.ui.component.INavigationComponent;
50 import org.pentaho.ui.component.NavigationComponentFactory;
51 import org.pentaho.messages.util.LocaleHelper;
52
53 /**
54  * Servlet Class
55  *
56  * web.servlet name="ViewAction" display-name="Name for ViewAction"
57  * description="Description for ViewAction" web.servlet-mapping
58  * url-pattern="/ViewAction" web.servlet-init-param name="A parameter" value="A
59  * value"
60  */

61 public class HttpWebService extends ServletBase {
62
63     /**
64      *
65      */

66     private static final long serialVersionUID = -2011812808062152707L;
67
68     private static final Log logger = LogFactory.getLog(HttpWebService.class);
69
70     public Log getLogger() {
71         return logger;
72     }
73
74     /**
75      *
76      */

77     public HttpWebService() {
78         super();
79     }
80
81     protected void doGet(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
82
83         PentahoSystem.systemEntryPoint();
84         try {
85
86             String JavaDoc solutionName = request.getParameter("solution"); //$NON-NLS-1$
87
String JavaDoc actionPath = request.getParameter("path"); //$NON-NLS-1$
88
String JavaDoc actionName = request.getParameter("action"); //$NON-NLS-1$
89
String JavaDoc component = request.getParameter("component"); //$NON-NLS-1$
90
InputStream JavaDoc is = request.getInputStream();
91             ByteArrayOutputStream JavaDoc os = new ByteArrayOutputStream JavaDoc();
92             String JavaDoc content = null;
93             try {
94                 byte buffer[] = new byte[2048];
95                 int b = is.read(buffer);
96                 while (b > 0) {
97                     os.write(buffer, 0, b);
98                     b = is.read(buffer);
99                 }
100                 content = os.toString(LocaleHelper.getSystemEncoding());
101             } catch (Exception JavaDoc e) {
102                 // TODO Auto-generated catch block
103
e.printStackTrace();
104             }
105             IParameterProvider parameterProvider = null;
106             HashMap JavaDoc parameters = new HashMap JavaDoc();
107             if (content != null && content.length() > 0) {
108                 Document doc = org.pentaho.core.util.XmlHelper.getDocFromString(content);
109                 List JavaDoc parameterNodes = doc.selectNodes("//SOAP-ENV:Body/*/*"); //$NON-NLS-1$
110
for (int i = 0; i < parameterNodes.size(); i++) {
111                     Node parameterNode = (Node) parameterNodes.get(i);
112                     String JavaDoc parameterName = parameterNode.getName();
113                     String JavaDoc parameterValue = parameterNode.getText();
114 // String type = parameterNode.selectSingleNode( "@type" );
115
// if( "xml-data".equalsIgnoreCase( ) )
116
if ("action".equals(parameterName)) { //$NON-NLS-1$
117
String JavaDoc info[] = PentahoSystem.parseActionString(parameterValue);
118                         solutionName = info[0];
119                         actionPath = info[1];
120                         actionName = info[2];
121                     } else if ("component".equals(parameterName)) { //$NON-NLS-1$
122
component = parameterValue;
123                     } else {
124                         parameters.put(parameterName, parameterValue);
125                     }
126
127                 }
128                 parameterProvider = new SimpleParameterProvider(parameters);
129             } else {
130                 parameterProvider = new HttpRequestParameterProvider(request);
131             }
132
133             response.setContentType("text/xml"); //$NON-NLS-1$
134
response.setCharacterEncoding(LocaleHelper.getSystemEncoding());
135             // PentahoHttpSession userSession = new PentahoHttpSession(
136
// request.getRemoteUser(), request.getSession(),
137
// request.getLocale() );
138
IPentahoSession userSession = getPentahoSession(request);
139
140             String JavaDoc instanceId = request.getParameter("instance-id"); //$NON-NLS-1$
141
String JavaDoc processId = this.getClass().getName();
142
143             OutputStream JavaDoc contentStream = new ByteArrayOutputStream JavaDoc();
144
145             SimpleOutputHandler outputHandler = new SimpleOutputHandler(contentStream, false);
146
147             // send the header of the message to prevent time-outs while we are
148
// working
149
OutputStream JavaDoc outputStream = response.getOutputStream();
150             if (component == null) {
151                 // assume this is an action sequence execute
152
HttpWebServiceRequestHandler requestHandler = new HttpWebServiceRequestHandler(userSession, null, outputHandler, parameterProvider, null);
153
154                 requestHandler.setInstanceId(instanceId);
155                 requestHandler.setProcessId(processId);
156                 requestHandler.setAction(actionPath, actionName);
157                 requestHandler.setSolutionName(solutionName);
158
159                 if (debug)
160                     debug(Messages.getString("HttpWebService.DEBUG_WEB_SERVICE_START")); //$NON-NLS-1$
161
IRuntimeContext runtime = null;
162                 outputStream.write(SoapUtil.getSoapHeader().getBytes(LocaleHelper.getSystemEncoding()));
163                 try {
164                     runtime = requestHandler.handleActionRequest(0, 0);
165                     SoapUtil.generateSoapResponse(runtime, outputStream, outputHandler, contentStream, requestHandler.getMessages());
166                     outputStream.write(SoapUtil.getSoapFooter().getBytes(LocaleHelper.getSystemEncoding()));
167                 } finally {
168                     if (runtime != null) {
169                         runtime.dispose();
170                     }
171                 }
172             } else if ("dial".equals(component)) { //$NON-NLS-1$
173
doDial(solutionName, actionPath, actionName, parameterProvider, outputStream, userSession);
174             } else if ("chart".equals(component)) { //$NON-NLS-1$
175
doChart(solutionName, actionPath, actionName, parameterProvider, outputStream, userSession);
176             } else if ("navigate".equals( component )) { //$NON-NLS-1$
177
doNavigate( solutionName, actionPath, actionName, parameterProvider, outputStream, userSession );
178             }
179
180         } catch (Throwable JavaDoc t) {
181             error(Messages.getErrorString("HttpWebService.ERROR_0001_ERROR_DURING_WEB_SERVICE"), t); //$NON-NLS-1$
182
} finally {
183             PentahoSystem.systemExitPoint();
184         }
185         if (debug)
186             debug(Messages.getString("HttpWebService.DEBUG_WEB_SERVICE_END")); //$NON-NLS-1$
187

188     }
189
190     protected void doPost(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws ServletException JavaDoc, IOException JavaDoc {
191
192         doGet(request, response);
193
194     }
195
196     private void doNavigate(String JavaDoc solutionName, String JavaDoc actionPath, String JavaDoc actionName, IParameterProvider parameterProvider, OutputStream JavaDoc outputStream, IPentahoSession userSession) {
197         
198         String JavaDoc baseUrl = PentahoSystem.getApplicationContext().getBaseUrl();
199         String JavaDoc hrefUrl = baseUrl;
200         String JavaDoc onClick = ""; //$NON-NLS-1$
201
String JavaDoc thisUrl = baseUrl + "./Navigate?"; //$NON-NLS-1$
202

203         SimpleUrlFactory urlFactory = new SimpleUrlFactory( thisUrl );
204         ArrayList JavaDoc messages = new ArrayList JavaDoc();
205
206         if( "".equals( solutionName ) ) { //$NON-NLS-1$
207
solutionName = null;
208         }
209
210         INavigationComponent navigate = NavigationComponentFactory.getNavigationComponent();
211         navigate.setHrefUrl(hrefUrl);
212         navigate.setOnClick(onClick);
213         navigate.setSolutionParamName("solution"); //$NON-NLS-1$
214
navigate.setPathParamName("path"); //$NON-NLS-1$
215
navigate.setAllowNavigation(new Boolean JavaDoc (false) );
216         navigate.setOptions(""); //$NON-NLS-1$
217
navigate.setUrlFactory(urlFactory);
218         navigate.setMessages(messages);
219         // This line will override the default setting of the navigate component
220
// to allow debugging of the generated HTML.
221
// navigate.setLoggingLevel( org.pentaho.util.logging.ILogger.DEBUG );
222
navigate.validate( userSession, null );
223         navigate.setParameterProvider( "request", parameterProvider ); //$NON-NLS-1$
224

225             Document doc = navigate.getXmlContent();
226             try {
227             outputStream.write(SoapUtil.getSoapHeader().getBytes(LocaleHelper.getSystemEncoding()));
228             outputStream.write(SoapUtil.openSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
229             outputStream.write("<content><".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
230
outputStream.write(doc.asXML().getBytes(LocaleHelper.getSystemEncoding() ));
231             outputStream.write("</content>".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
232
outputStream.write(SoapUtil.closeSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
233             outputStream.write(SoapUtil.getSoapFooter().getBytes(LocaleHelper.getSystemEncoding()));
234         } catch (IOException JavaDoc e) {
235             // not much we can do here...
236
}
237
238    }
239         
240     private void doDial(String JavaDoc solutionName, String JavaDoc actionPath, String JavaDoc actionName, IParameterProvider parameterProvider, OutputStream JavaDoc outputStream, IPentahoSession userSession) {
241
242         ArrayList JavaDoc messages = new ArrayList JavaDoc();
243         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
244         boolean ok = ChartHelper.doDial( solutionName, actionPath, actionName, parameterProvider, buffer, userSession, messages, this );
245         if( !ok ) {
246             UIUtil.formatErrorMessage("text/html", Messages.getString("Widget.ERROR_0001_COULD_NOT_CREATE_WIDGET"), messages, buffer); //$NON-NLS-1$ //$NON-NLS-2$
247
}
248         
249         try {
250             outputStream.write(SoapUtil.getSoapHeader().getBytes(LocaleHelper.getSystemEncoding()));
251             outputStream.write(SoapUtil.openSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
252             outputStream.write("<content><![CDATA[".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
253
outputStream.write(buffer.toString().getBytes(LocaleHelper.getSystemEncoding() ));
254             outputStream.write("]]></content>".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
255
outputStream.write(SoapUtil.closeSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
256             outputStream.write(SoapUtil.getSoapFooter().getBytes(LocaleHelper.getSystemEncoding()));
257         } catch (IOException JavaDoc e) {
258             // not much we can do here...
259
}
260         
261             /*
262         String linkUrl = parameterProvider.getStringParameter("drill-url", null); //$NON-NLS-1$
263         String imageUrl = parameterProvider.getStringParameter("image-url", null); //$NON-NLS-1$
264         if (imageUrl == null) {
265             imageUrl = PentahoSystem.getApplicationContext().getBaseUrl();
266         }
267
268         if (linkUrl == null) {
269             linkUrl = ""; //$NON-NLS-1$
270         }
271
272         int width = (int) parameterProvider.getLongParameter("image-width", 150); //$NON-NLS-1$
273         int height = (int) parameterProvider.getLongParameter("image-height", 150); //$NON-NLS-1$
274
275         SimpleUrlFactory urlFactory = new SimpleUrlFactory(linkUrl);
276
277         ArrayList messages = new ArrayList();
278         DashboardWidgetComponent widget = new DashboardWidgetComponent(DashboardWidgetComponent.TYPE_DIAL, solutionName + File.separator + actionPath + File.separator + actionName, width, height, urlFactory, messages); //$NON-NLS-1$
279         widget.validate(userSession, null);
280
281         widget.setParameterProvider("request", parameterProvider); //$NON-NLS-1$
282
283         double value = Double.parseDouble(parameterProvider.getStringParameter("value", "0")); //$NON-NLS-1$ //$NON-NLS-2$
284         widget.setValue(value);
285
286         String title = parameterProvider.getStringParameter("title", ""); //$NON-NLS-1$ //$NON-NLS-2$
287         widget.setTitle(title); //$NON-NLS-1$
288
289         String content = widget.getContent("text/html"); //$NON-NLS-1$
290
291         if (content == null) {
292             StringBuffer buffer = new StringBuffer();
293             UIUtil.formatErrorMessage("text/html", Messages.getString("Widget.ERROR_0001_COULD_NOT_CREATE_WIDGET"), messages, buffer); //$NON-NLS-1$ //$NON-NLS-2$
294             content = buffer.toString();
295         }
296
297         if (content == null || content.equals("")) { //$NON-NLS-1$
298             content = "&nbsp;"; //$NON-NLS-1$
299         }
300         try {
301             outputStream.write(SoapUtil.getSoapHeader().getBytes(LocaleHelper.getSystemEncoding()));
302             outputStream.write(SoapUtil.openSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
303             outputStream.write("<content><![CDATA[".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
304             outputStream.write(content.getBytes(LocaleHelper.getSystemEncoding()));
305             outputStream.write("]]></content>".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
306             outputStream.write(SoapUtil.closeSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
307             outputStream.write(SoapUtil.getSoapFooter().getBytes(LocaleHelper.getSystemEncoding()));
308         } catch (IOException e) {
309             // not much we acn do here...
310         }
311         */

312     }
313
314     private void doChart(String JavaDoc solutionName, String JavaDoc actionPath, String JavaDoc actionName, IParameterProvider parameterProvider, OutputStream JavaDoc outputStream, IPentahoSession userSession) {
315
316         String JavaDoc chartTypeStr = parameterProvider.getStringParameter("chart-type", ""); //$NON-NLS-1$ //$NON-NLS-2$
317
if (ChartDefinition.PIE_CHART_STR.equals(chartTypeStr)) {
318             doPieChart(solutionName, actionPath, actionName, parameterProvider, outputStream, userSession);
319         } else {
320             doOtherChart(solutionName, actionPath, actionName, parameterProvider, outputStream, userSession);
321         }
322     }
323
324     private void doPieChart(String JavaDoc solutionName, String JavaDoc actionPath, String JavaDoc actionName, IParameterProvider parameterProvider, OutputStream JavaDoc outputStream, IPentahoSession userSession) {
325
326         ArrayList JavaDoc messages = new ArrayList JavaDoc();
327         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
328         boolean ok = ChartHelper.doPieChart( solutionName, actionPath, actionName, parameterProvider, buffer, userSession, messages, this );
329         if( !ok ) {
330             UIUtil.formatErrorMessage("text/html", Messages.getString("Widget.ERROR_0001_COULD_NOT_CREATE_WIDGET"), messages, buffer); //$NON-NLS-1$ //$NON-NLS-2$
331
}
332         
333         try {
334             outputStream.write(SoapUtil.getSoapHeader().getBytes(LocaleHelper.getSystemEncoding()));
335             outputStream.write(SoapUtil.openSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
336             outputStream.write("<content><![CDATA[".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
337
outputStream.write(buffer.toString().getBytes(LocaleHelper.getSystemEncoding() ));
338             outputStream.write("]]></content>".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
339
outputStream.write(SoapUtil.closeSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
340             outputStream.write(SoapUtil.getSoapFooter().getBytes(LocaleHelper.getSystemEncoding()));
341         } catch (IOException JavaDoc e) {
342             // not much we can do here...
343
}
344         
345         /*
346         String outerParams = parameterProvider.getStringParameter("outer-params", null); //$NON-NLS-1$
347         String innerParam = parameterProvider.getStringParameter("inner-param", null); //$NON-NLS-1$
348
349         String urlDrillTemplate = parameterProvider.getStringParameter("drill-url", null); //$NON-NLS-1$
350         String imageUrl = parameterProvider.getStringParameter("image-url", null); //$NON-NLS-1$
351         if (imageUrl == null) {
352             imageUrl = PentahoSystem.getApplicationContext().getBaseUrl();
353         }
354
355         if (urlDrillTemplate == null) {
356             urlDrillTemplate = ""; //$NON-NLS-1$
357         }
358
359         SimpleUrlFactory urlFactory = new SimpleUrlFactory(urlDrillTemplate);
360
361         PieDatasetChartComponent chartComponent = null;
362         try {
363             ArrayList messages = new ArrayList();
364             String chartDefinitionStr = solutionName + File.separator + actionPath + File.separator + actionName;
365             chartComponent = new PieDatasetChartComponent(chartDefinitionStr, urlFactory, messages); //$NON-NLS-1$
366             chartComponent.setUrlTemplate(urlDrillTemplate);
367             if (outerParams != null) {
368                 StringTokenizer tokenizer = new StringTokenizer(outerParams, ";"); //$NON-NLS-1$
369                 while (tokenizer.hasMoreTokens()) {
370                     chartComponent.addOuterParamName(tokenizer.nextToken());
371                 }
372             }
373             chartComponent.setParamName(innerParam);
374
375             chartComponent.setDataAction(chartDefinitionStr);
376             chartComponent.validate(userSession, null);
377
378             chartComponent.setParameterProvider("request", parameterProvider); //$NON-NLS-1$
379
380             String content = chartComponent.getContent("text/html"); //$NON-NLS-1$
381
382             if (content == null || content.equals("")) { //$NON-NLS-1$
383                 content = "&nbsp;"; //$NON-NLS-1$
384             }
385             if (content == null) {
386                 StringBuffer buffer = new StringBuffer();
387                 UIUtil.formatErrorMessage("text/html", Messages.getString("Widget.ERROR_0001_COULD_NOT_CREATE_WIDGET"), messages, buffer); //$NON-NLS-1$ //$NON-NLS-2$
388                 content = buffer.toString();
389             }
390
391             try {
392                 outputStream.write(SoapUtil.getSoapHeader().getBytes(LocaleHelper.getSystemEncoding()));
393                 outputStream.write(SoapUtil.openSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
394                 outputStream.write("<content><![CDATA[".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
395                 outputStream.write(content.getBytes(LocaleHelper.getSystemEncoding()));
396                 outputStream.write("]]></content>".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
397                 outputStream.write(SoapUtil.closeSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
398                 outputStream.write(SoapUtil.getSoapFooter().getBytes(LocaleHelper.getSystemEncoding()));
399             } catch (IOException e) {
400                 // not much we acn do here...
401             }
402         } finally {
403             if (chartComponent != null)
404                 chartComponent.dispose();
405         }
406         */

407     }
408
409     private void doOtherChart(String JavaDoc solutionName, String JavaDoc actionPath, String JavaDoc actionName, IParameterProvider parameterProvider, OutputStream JavaDoc outputStream, IPentahoSession userSession) {
410
411         ArrayList JavaDoc messages = new ArrayList JavaDoc();
412         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc();
413         boolean ok = ChartHelper.doChart( solutionName, actionPath, actionName, parameterProvider, buffer, userSession, messages, this );
414         if( !ok ) {
415             UIUtil.formatErrorMessage("text/html", Messages.getString("Widget.ERROR_0001_COULD_NOT_CREATE_WIDGET"), messages, buffer); //$NON-NLS-1$ //$NON-NLS-2$
416
}
417         
418         try {
419             outputStream.write(SoapUtil.getSoapHeader().getBytes(LocaleHelper.getSystemEncoding()));
420             outputStream.write(SoapUtil.openSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
421             outputStream.write("<content><![CDATA[".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
422
outputStream.write(buffer.toString().getBytes(LocaleHelper.getSystemEncoding() ));
423             outputStream.write("]]></content>".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
424
outputStream.write(SoapUtil.closeSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
425             outputStream.write(SoapUtil.getSoapFooter().getBytes(LocaleHelper.getSystemEncoding()));
426         } catch (IOException JavaDoc e) {
427             // not much we can do here...
428
}
429         
430         /*
431         String outerParams = parameterProvider.getStringParameter("outer-params", null); //$NON-NLS-1$
432         String innerParam = parameterProvider.getStringParameter("inner-param", null); //$NON-NLS-1$
433
434         String urlDrillTemplate = parameterProvider.getStringParameter("drill-url", null); //$NON-NLS-1$
435         String imageUrl = parameterProvider.getStringParameter("image-url", null); //$NON-NLS-1$
436         if (imageUrl == null) {
437             imageUrl = PentahoSystem.getApplicationContext().getBaseUrl();
438         }
439
440         if (urlDrillTemplate == null) {
441             urlDrillTemplate = ""; //$NON-NLS-1$
442         }
443
444         int width = (int) parameterProvider.getLongParameter("image-width", 150); //$NON-NLS-1$
445         int height = (int) parameterProvider.getLongParameter("image-height", 150); //$NON-NLS-1$
446
447         SimpleUrlFactory urlFactory = new SimpleUrlFactory(urlDrillTemplate);
448
449         CategoryDatasetChartComponent chartComponent = null;
450         try {
451             String content = null;
452             ArrayList messages = new ArrayList();
453             try {
454                 String chartDefinitionStr = solutionName + File.separator + actionPath + File.separator + actionName;
455                 String chartTypeStr = parameterProvider.getStringParameter("chart-type", null); //$NON-NLS-1$
456                 int chartType = CategoryDatasetChartDefinition.getChartType(chartTypeStr);
457                 chartComponent = new CategoryDatasetChartComponent(chartType, chartDefinitionStr, width, height, urlFactory, messages); //$NON-NLS-1$
458
459                 String connectionName = parameterProvider.getStringParameter("connection", null); //$NON-NLS-1$
460                 String query = parameterProvider.getStringParameter("query", null); //$NON-NLS-1$
461                 String dataAction = parameterProvider.getStringParameter("data-process", null); //$NON-NLS-1$
462                 IPentahoConnection connection = null; //$NON-NLS-1$
463                 try {
464                     if (connectionName != null && query != null) {
465                         connection = new SQLConnection(connectionName, this); //$NON-NLS-1$
466                         try {
467                             query = TemplateUtil.applyTemplate(query, TemplateUtil.parametersToProperties(parameterProvider));
468                             IPentahoResultSet results = connection.executeQuery(query);
469                             chartComponent.setValues(results);
470                         } finally {
471                         }
472                         chartComponent.setUrlTemplate(urlDrillTemplate);
473                         if (outerParams != null) {
474                             StringTokenizer tokenizer = new StringTokenizer(outerParams, ";"); //$NON-NLS-1$
475                             while (tokenizer.hasMoreTokens()) {
476                                 chartComponent.addOuterParamName(tokenizer.nextToken());
477                             }
478                         }
479
480                         chartComponent.setParamName(innerParam);
481
482                         chartComponent.setDataAction(chartDefinitionStr);
483                         chartComponent.validate(userSession, null);
484
485                         chartComponent.setParameterProvider("request", parameterProvider); //$NON-NLS-1$
486
487                         content = chartComponent.getContent("text/html"); //$NON-NLS-1$
488                     } else if (dataAction != null) {
489                         String actionInfo[] = PentahoSystem.parseActionString(dataAction);
490                         if (actionInfo != null && actionInfo.length == 3) {
491                             chartComponent.setDataAction(actionInfo[0], actionInfo[1], actionInfo[2], "rule-result"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
492                         }
493                     } else {
494                         error("'query' and 'connection' must be specified");
495                     }
496
497                 } finally {
498                     if (connection != null) {
499                         connection.close();
500                     }
501                 }
502
503                 // String query = "select department, actual, budget, variance
504                 // from quadrant_actuals"; //$NON-NLS-1$
505
506             } catch (Exception e) {
507                 // not much we can do here...
508             }
509             try {
510                 if (content == null) {
511                     StringBuffer buffer = new StringBuffer();
512                     UIUtil.formatErrorMessage("text/html", Messages.getString("Widget.ERROR_0001_COULD_NOT_CREATE_WIDGET"), messages, buffer); //$NON-NLS-1$ //$NON-NLS-2$
513                     content = buffer.toString();
514                 }
515                 outputStream.write(SoapUtil.getSoapHeader().getBytes(LocaleHelper.getSystemEncoding()));
516                 outputStream.write(SoapUtil.openSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
517                 outputStream.write("<content><![CDATA[".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
518                 outputStream.write(content.getBytes(LocaleHelper.getSystemEncoding()));
519                 outputStream.write("]]></content>".getBytes(LocaleHelper.getSystemEncoding())); //$NON-NLS-1$
520                 outputStream.write(SoapUtil.closeSoapResponse().getBytes(LocaleHelper.getSystemEncoding()));
521                 outputStream.write(SoapUtil.getSoapFooter().getBytes(LocaleHelper.getSystemEncoding()));
522             } catch (Exception e) {
523
524             }
525         } finally {
526             if (chartComponent != null)
527                 chartComponent.dispose();
528         }
529         */

530     }
531
532 }
Popular Tags