09620171005
package com.tiger.action;
import java.io.FileOutputStream;
import java.util.List;
import org.jfree.chart.*;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.general.DefaultPieDataset;
import com.opensymphony.xwork2.ActionSupport;
import com.tiger.bean.*;
import com.tiger.dao.*;
import com.tiger.daoFactory.DaoFactory;
public class VoteResultAction extends ActionSupport {
private static final long serialVersionUID = 1L;
/**
* 表单提交的参数
*/
private int vote_id;//投票ID
public int getVote_id() {
return vote_id;
}
public void setVote_id(int vote_id) {
this.vote_id = vote_id;
}
/**
* getChart方法名必须与struts.xml配置文件中相对应
* @return
*/
public JFreeChart getChart() {
VoteDao voteDao = DaoFactory.getVoteDaoInstance();//获得VoteDAO实例
VoteOptionDao optionDao = DaoFactory.getVoteOptionDaoInstance();//获得voteOption实例
//根据投票ID得到的投票
Vote vote = voteDao.findVoteById(vote_id);
String voteName = vote.getVoteName(); //得到投票名称
//根据投票ID得到所有的投票选项
List
voteOptions = optionDao.findVoteOptionByVoteID(vote_id);
// DefaultCategoryDataset bardata = new DefaultCategoryDataset();//柱状图
DefaultPieDataset piedata = new DefaultPieDataset(); //饼图数据源
//设置数据
for(VoteOption voteOption : voteOptions) {
// bardata.setValue(voteOption.getTicketNum(), //数值
// "", //行标签名
// voteOption.getVoteOptionName()); //列标签名
piedata.setValue(voteOption.getVoteOptionName(),voteOption.getTicketNum() );//饼图
}
// JFreeChart chart = ChartFactory.createBarChart3D( //柱状图
// voteName, //标题
// "投票选项", //目录轴的显示标签
// "投票数", //数值轴的显示标签
// bardata, //数据集
// PlotOrientation.VERTICAL ,//图表方向
// false, //是否显示图例,对于简单的柱状图必须是false
// true, //是否生成工具
// true); //是否生成uri链接
JFreeChart chart = ChartFactory.createPieChart3D( //饼图
voteName,piedata,true, false, false);
return chart;
}
public String execute() throws Exception {
System.out.println("图片输出");
FileOutputStream fos = null;
try {
fos = new FileOutputStream("D:\\tiger.jpg");
ChartUtilities.writeChartAsJPEG(fos, 100, getChart(), 400, 300);
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
}