Wednesday, 4 July 2012

JFree Chart Portlet In Liferay 
note:-
image
these are two important jars


This example uses resource serving to generate PNG image from a portlet




ChartPortlet.java:

import java.io.IOException;
import java.io.OutputStream;

import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
import javax.portlet.ResourceRequest;
import javax.portlet.ResourceResponse;
import javax.portlet.ResourceURL;

import org.jfree.chart.*;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.DefaultCategoryDataset;

/**
 * Portlet implementation class ChartPortlet
 */
public class ChartPortlet extends GenericPortlet {

    public void init() {
        viewJSP = getInitParameter("view-jsp");
    }
    
    
    @Override
 public void serveResource(ResourceRequest request, ResourceResponse response)
   throws PortletException, IOException {
 
  // super.serveResource(request, response);
     String resourceID = request.getResourceID();
      
        if (resourceID.equals("chart-image")) {
         response.setContentType("image/png");
            OutputStream out = response.getPortletOutputStream();
     
            DefaultCategoryDataset dataset = new DefaultCategoryDataset();
            dataset.addValue(1.0, "Row 1", "Column 1");
            dataset.addValue(2.0, "Row 1", "Column 2");
            dataset.addValue(3.0, "Row 1", "Column 3");
     
            dataset.addValue(4.0, "Row 2", "Column 1");
            dataset.addValue(5.0, "Row 2", "Column 2");
            dataset.addValue(6.0, "Row 2", "Column 3");
     
            try {
                JFreeChart chart = ChartFactory.createBarChart("Bar Chart", "Category", "Value", dataset, PlotOrientation.VERTICAL, true, true, false);
     
                if (chart != null) {
                    CategoryPlot plot = (CategoryPlot) chart.getPlot();
                    BarRenderer renderer = (BarRenderer) plot.getRenderer();
                    renderer.setItemMargin(0.0);
                    ChartUtilities.writeChartAsPNG(out, chart, 400, 300);
                }
            } catch (Exception e) {
                System.err.println(e.toString());
            } finally {
                out.close();
            }
     

        }

 }



 public void doView(
            RenderRequest renderRequest, RenderResponse renderResponse)
        throws IOException, PortletException {
        
  // Pass the resource URL as a Java bean named resourceUrl to the view JSP
        ResourceURL chartUrl = renderResponse.createResourceURL();
        chartUrl.setResourceID("chart-image");
        String resourceUrl = chartUrl.toString();
        renderRequest.setAttribute("resourceUrl", resourceUrl);

  
        include(viewJSP, renderRequest, renderResponse);
    }

    protected void include(
            String path, RenderRequest renderRequest,
            RenderResponse renderResponse)
        throws IOException, PortletException {

        PortletRequestDispatcher portletRequestDispatcher =
            getPortletContext().getRequestDispatcher(path);
        

        portletRequestDispatcher.include(renderRequest, renderResponse);
        
    }
 
    protected String viewJSP;

}




view.jsp:
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ page import="javax.portlet.*"%>

<portlet:defineObjects />
<img src="${resourceUrl}"/>




portlet.xml:
<?xml version="1.0"?>

<portlet-app
 version="2.0"
 xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd"
>
 
 <portlet>
  <portlet-name>chartportlet</portlet-name>
  <display-name>ChartPortlet</display-name>
  <portlet-class>ChartPortlet</portlet-class>
  <init-param>
   <name>view-jsp</name>
   <value>/html/chartportlet/view.jsp</value>
  </init-param>
  <expiration-cache>0</expiration-cache>
  <supports>
   <mime-type>text/html</mime-type>
   <portlet-mode>VIEW</portlet-mode>
  </supports>
  <portlet-info>
   <title>ChartPortlet</title>
   <short-title>ChartPortlet</short-title>
   <keywords></keywords>
  </portlet-info>
  <security-role-ref>
   <role-name>administrator</role-name>
  </security-role-ref>
  <security-role-ref>
   <role-name>guest</role-name>
  </security-role-ref>
  <security-role-ref>
   <role-name>power-user</role-name>
  </security-role-ref>
  <security-role-ref>
   <role-name>user</role-name>
  </security-role-ref>
 </portlet>
</portlet-app>

No comments:

Post a Comment