1 13 28 29 package org.pentaho.ui.portlet.charting; 30 31 import java.io.IOException ; 32 import java.util.ArrayList ; 33 import java.util.StringTokenizer ; 34 import javax.portlet.ActionRequest; 35 import javax.portlet.ActionResponse; 36 import javax.portlet.PortletException; 37 import javax.portlet.RenderRequest; 38 import javax.portlet.RenderResponse; 39 import org.apache.commons.logging.Log; 40 import org.apache.commons.logging.LogFactory; 41 import org.pentaho.messages.Messages; 42 import org.pentaho.core.util.UIUtil; 43 import org.pentaho.ui.component.charting.TimeSeriesCollectionChartComponent; 44 import org.pentaho.ui.portlet.PentahoPortletSession; 45 import org.pentaho.ui.portlet.PortletRequestParameterProvider; 46 import org.pentaho.ui.portlet.PortletSessionParameterProvider; 47 import org.pentaho.ui.portlet.PortletUrlFactory; 48 import org.pentaho.ui.portlet.ViewPortlet; 49 50 public class TimeSeriesCollectionChartPortlet extends ViewPortlet { 51 52 private static final String CHART = "chart"; 54 private static final Log portletLogger = LogFactory.getLog(XYSeriesCollectionChartPortlet.class); 55 56 public Log getLogger() { 57 return portletLogger; 58 } 59 60 public void processPortletAction(ActionRequest request, ActionResponse response, PentahoPortletSession userSession) throws PortletException, IOException { 61 62 } 63 64 public void doPortletView(RenderRequest request, RenderResponse response, PentahoPortletSession userSession) throws PortletException, IOException { 65 response.setContentType("text/html"); 67 PortletUrlFactory urlFactory = new PortletUrlFactory(response, request.getWindowState(), request.getPortletMode()); 68 69 PortletRequestParameterProvider requestParameters = new PortletRequestParameterProvider(request); 70 PortletSessionParameterProvider sessionParameters = new PortletSessionParameterProvider(userSession); 71 72 String chartDefinitionStr = getSetting(CHART, null, request, requestParameters); 73 74 if (chartDefinitionStr == null) { 75 response.getWriter().print(Messages.getString("TimeSeriesCollectionChartPortlet.ERROR_0001.NO_CHART_DEF")); return; 77 } 78 79 ArrayList messages = new ArrayList (); 80 TimeSeriesCollectionChartComponent chartComponent = null; 81 String urlDrillTemplate = getSetting("drill-url", null, request, null); String outerParams = getSetting("outer-params", null, request, null); String innerParam = getSetting("inner-param", null, request, null); 85 try { 86 chartComponent = new TimeSeriesCollectionChartComponent(chartDefinitionStr, urlFactory, messages); 87 chartComponent.validate(userSession, null); 88 chartComponent.setUrlTemplate(urlDrillTemplate); 89 StringTokenizer tokenizer = new StringTokenizer (outerParams, ";"); while (tokenizer.hasMoreTokens()) { 91 chartComponent.addOuterParamName(tokenizer.nextToken()); 92 } 93 chartComponent.setParamName(innerParam); 94 95 chartComponent.setDataAction(chartDefinitionStr); 96 97 chartComponent.setParameterProvider("request", requestParameters); chartComponent.setParameterProvider("session", sessionParameters); 100 String content = chartComponent.getContent("text/html"); 102 if (content == null || content.equals("")) { content = " "; } 105 response.getWriter().print(content); 106 107 if (content == null) { 108 StringBuffer buffer = new StringBuffer (); 109 UIUtil.formatErrorMessage("text/html", Messages.getString("TimeSeriesCollectionChartPortlet.ERROR_0002.COULD_NOT_CREATE"), messages, buffer); content = buffer.toString(); 111 } 112 } finally { 113 if (chartComponent != null) 114 chartComponent.dispose(); 115 } 116 } 117 } 118 | Popular Tags |