Jfreechart与Tapestry4.0 结合实现
5)Java类文件:
5-1)StatChartServic.java类: java 代码
package com.ce.jfreechart.service;
![]()
import java.awt.Color;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
![]()
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
![]()
import org.apache.tapestry.IRequestCycle;
import org.apache.tapestry.engine.IEngineService;
import org.apache.tapestry.engine.ILink;
import org.apache.tapestry.services.Infrastructure;
import org.apache.tapestry.services.LinkFactory;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.DateAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PiePlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.category.BarRenderer3D;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.urls.StandardPieURLGenerator;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.time.Day;
import org.jfree.data.time.Hour;
import org.jfree.data.time.Minute;
import org.jfree.data.time.Month;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;
import org.jfree.ui.RectangleInsets;
import com.ce.jfreechart.vo.PieChartVO;
![]()
/**//**
* 功能描述:生成统计结果图的服务类(现主要针对胼图)
*/
public class StatChartService implements IEngineService ...{
private HttpServletRequest request;
![]()
private HttpServletResponse response;
![]()
private LinkFactory linkFactory;
![]()
private Infrastructure infrastructure;
![]()
private final static String SERVICE_NAME = "chart";
![]()
public final static String CHART_PARAS_OBJ_NAME = "pcVo";
![]()
public void setResponse(HttpServletResponse response) ...{
this.response = response;
}
![]()
public void setRequest(HttpServletRequest request) ...{
this.request = request;
}
![]()
public void setLinkFactory(LinkFactory linkFactory) ...{
this.linkFactory = linkFactory;
}
![]()
public ILink getLink(boolean post, Object parameter) ...{
Map parameters = new HashMap();
return linkFactory.constructLink(this, post, parameters, false);
}
![]()
public void setInfrastructure(Infrastructure infrastructure) ...{
this.infrastructure = infrastructure;
}
![]()
public String getName() ...{
return SERVICE_NAME;
}
![]()
public void service(IRequestCycle cycle) throws IOException ...{
PieChartVO pcVo = (PieChartVO) request.getSession()
.getAttribute(CHART_PARAS_OBJ_NAME);
if (pcVo == null) ...{
return;
}
![]()
Chart chart = new Chart();
![]()
try ...{
chart.getPieChart3D(request, response, pcVo);
} finally ...{
request.getSession().removeAttribute(CHART_PARAS_OBJ_NAME);
}
}
}
![]()
/**//**
* 功能描述:输出JFreeChart图的类
*/
class Chart ...{
![]()
/**//**
* 方法描述:生成3D胼状图的方法
*
* @param request
* :HttpServletRequest
* @param response
* :HttpServletResponse
* @param PieChartVO
* :参数传递vo
* @throws IOException
*/
public void getPieChart3D(HttpServletRequest request,
HttpServletResponse response, PieChartVO pcVo) throws IOException ...{
response.setDateHeader("Expires", 0);
response.setContentType("image/jpeg");
![]()
String title = pcVo.getTitle();
![]()
String[] name = pcVo.getName();
![]()
double[] value = pcVo.getValue();
![]()
int width = pcVo.getWidth();
![]()
int hight = pcVo.getHight();
![]()
if (title == null || "".equals(title)) ...{
title = " ";
}
if (name == null || name.length == 0 || value == null
|| value.length == 0) ...{
return;
}
if (width <= 0) ...{
width = 400;
}
if (hight <= 0) ...{
hight = 400;
}
![]()
DefaultPieDataset defaultpiedataset = new DefaultPieDataset();
int j = name.length <= value.length ? name.length : value.length;
for (int i = 0; i < j; i++) ...{
defaultpiedataset.setValue(name[i], value[i]);
}
![]()
JFreeChart chart = ChartFactory.createPieChart3D(title,
defaultpiedataset, true, true, false);
![]()
chart.setBackgroundPaint(Color.WHITE);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setNoDataMessage("No data available");
ChartUtilities.writeChartAsJPEG(response.getOutputStream(), chart,
width, hight);
}
![]()
}
PieChartPage.java页面类,java 代码
package com.ce.jfreechart.page;
![]()
import javax.servlet.http.HttpServletRequest;
![]()
import org.apache.tapestry.annotations.InjectObject;
import org.apache.tapestry.event.PageBeginRenderListener;
import org.apache.tapestry.event.PageEvent;
![]()
import com.ce.jfreechart.service.StatChartService;
import com.ce.jfreechart.vo.PieChartVO;
![]()
/**//**
* 功能描述:公司人员统计页
*/
public abstract class PieChartPage extends org.apache.tapestry.html.BasePage implements PageBeginRenderListener...{
private final String title = "公司人员统计饼状图";
![]()
@InjectObject("service:tapestry.globals.HttpServletRequest)
public abstract HttpServletRequest getRequest();
![]()
/**//**
* 页面开始表现时触发,或form重表现时也会触发
*/
public void pageBeginRender(PageEvent event) ...{
![]()
if (!event.getRequestCycle().isRewinding()) ...{
try...{
![]()
//画饼图
String[] name = ...{"管理人员","市场人员","开发人员","OEM人员","其他人员"};
double[] value = ...{10.02D,20.23D,56.80D,12.30D,5.98D};
PieChartVO pcVo = new PieChartVO();
pcVo.setTitle(title);
pcVo.setName(name);
pcVo.setValue(value);
pcVo.setWidth(450);
pcVo.setHight(300);
if(this.getRequest().getSession().getAttribute(StatChartService.CHART_PARAS_OBJ_NAME)==null)
this.getRequest().getSession().setAttribute(StatChartService.CHART_PARAS_OBJ_NAME, pcVo);
}catch(Exception e)...{
e.printStackTrace();
}
}
}
}
参数Vo对象: java 代码
/**//**
* 功能描述:生成JFreeChart饼图的参数Vo对象
*/
public class PieChartVO implements Serializable ...{
![]()
private static final long serialVersionUID = 1L;
![]()
/**//**
* 图表标题
*/
private String title;
![]()
/**//**
* 具体项名称数组
*/
private String[] name;
![]()
/**//**
* 具体项值数组
*/
private double[] value;
![]()
/**//**
* 图表宽度
*/
private int width;
![]()
/**//**
* 图表高度
*/
private int hight;
![]()
//方法略......
}
PieChart.html页面文件,xml 代码
<html>
<head>
<title>PieChart.html<!--</span-->title>
![]()
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
![]()
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
![]()
<!--</span-->head>
![]()
<body>
<!--图片输出-->
<div align="center"><img src="app?service=chart" border="0"/><!--</span-->div>
<!--</span-->body>
<!--</span-->html>
PieChart.page文件,xml 代码
<xml version="1.0" encoding="GBK"?>
"-//Apache Software Foundation//Tapestry Specification 4.0//EN"
"http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd">
<page-specification class="com.ce.jfreechart.page.PieChartPage">
<!--</span-->page-specification>
0
相关文章
