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