1 16 17 package org.pentaho.ui.portlet.charting; 18 19 import java.io.IOException ; 20 import java.util.ArrayList ; 21 import java.util.StringTokenizer ; 22 import javax.portlet.ActionRequest; 23 import javax.portlet.ActionResponse; 24 import javax.portlet.PortletException; 25 import javax.portlet.RenderRequest; 26 import javax.portlet.RenderResponse; 27 import org.apache.commons.logging.Log; 28 import org.apache.commons.logging.LogFactory; 29 import org.pentaho.messages.Messages; 30 import org.pentaho.core.util.UIUtil; 31 import org.pentaho.ui.component.charting.CategoryDatasetChartComponent; 32 import org.pentaho.ui.portlet.PentahoPortletSession; 33 import org.pentaho.ui.portlet.PortletRequestParameterProvider; 34 import org.pentaho.ui.portlet.PortletSessionParameterProvider; 35 import org.pentaho.ui.portlet.PortletUrlFactory; 36 import org.pentaho.ui.portlet.ViewPortlet; 37 38 public class CategoryDatasetChartPortlet extends ViewPortlet { 39 40 private static final String CHART = "chart"; 42 private static final Log portletLogger = LogFactory.getLog(CategoryDatasetChartPortlet.class); 43 44 public Log getLogger() { 45 return portletLogger; 46 } 47 48 public void processPortletAction(ActionRequest request, ActionResponse response, PentahoPortletSession userSession) throws PortletException, IOException { 49 50 } 51 52 public void doPortletView(RenderRequest request, RenderResponse response, PentahoPortletSession userSession) throws PortletException, IOException { 53 response.setContentType("text/html"); 55 PortletUrlFactory urlFactory = new PortletUrlFactory(response, request.getWindowState(), request.getPortletMode()); 56 57 PortletRequestParameterProvider requestParameters = new PortletRequestParameterProvider(request); 58 PortletSessionParameterProvider sessionParameters = new PortletSessionParameterProvider(userSession); 59 60 String chartDefinitionStr = getSetting(CHART, null, request, requestParameters); 61 62 if (chartDefinitionStr == null) { 63 response.getWriter().print(Messages.getString("CategoryDatasetChartPortlet.ERROR_0001.NO_CHART_DEF")); return; 65 } 66 67 ArrayList messages = new ArrayList (); 68 CategoryDatasetChartComponent chartComponent = null; 69 String urlDrillTemplate = getSetting("drill-url", null, request, null); String outerParams = getSetting("outer-params", null, request, null); String innerParam = getSetting("inner-param", null, request, null); 73 try { 74 chartComponent = new CategoryDatasetChartComponent(chartDefinitionStr, urlFactory, messages); 75 chartComponent.validate(userSession, null); 76 chartComponent.setUrlTemplate(urlDrillTemplate); 77 StringTokenizer tokenizer = new StringTokenizer (outerParams, ";"); while (tokenizer.hasMoreTokens()) { 79 chartComponent.addOuterParamName(tokenizer.nextToken()); 80 } 81 chartComponent.setParamName(innerParam); 82 83 chartComponent.setDataAction(chartDefinitionStr); 84 85 chartComponent.setParameterProvider("request", requestParameters); chartComponent.setParameterProvider("session", sessionParameters); 88 String content = chartComponent.getContent("text/html"); 90 if (content == null || content.equals("")) { content = " "; } 93 response.getWriter().print(content); 94 95 if (content == null) { 96 StringBuffer buffer = new StringBuffer (); 97 UIUtil.formatErrorMessage("text/html", Messages.getString("CategoryDatasetChartPortlet.ERROR_0002.COULD_NOT_CREATE"), messages, buffer); content = buffer.toString(); 99 } 100 } finally { 101 if (chartComponent != null) 102 chartComponent.dispose(); 103 } 104 } 105 } 106 | Popular Tags |