JfreeChart自己

import java.awt.Color;
import java.awt.RenderingHints;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartRenderingInfo;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.entity.StandardEntityCollection;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.servlet.ServletUtilities;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;


/
public class ProInforAction {

// 对象及对象集合

private CompileCheckResult compileCheckResult;
private T3lintCheckResult t3lCheckResult;
private List<CompileCheck> compileCheckList;
private List<T3lintCheck> t3lintChekList;




// 业务类对象

private CompileCheckService checkService = new CompileCheckService();
private T3lintCheckService t3lintService = new T3lintCheckService();
private ProjectService projectService = new ProjectService();

private GenStatChartData genstatechartdata = new GenStatChartData();


/**
* 获取编译结果【compilecheck】【t3lintcompilecheck】。
*
* @return String
*/
public String getCompiledInfor() {

// 以下数据仅为测试,到时要调用后台数据。
compileCheckList = this.getCheckService().findAllList();
//
t3lintChekList = this.getT3lintService().findAllList();
return "success";
}

/**
* 查看历史记录
*
* @return List
*/
public String getComplileHistory() {

// 1.先获取工程编号 2.在通过工程编号获取到工程的历史编译记录

compileCheckList = this.getCheckService().findLastedMonthList(this.getCompileCheckResult().getProjectName());
return "success";
}

/**
* 查看t3lint历史记录。
*
* @return List
*/
public String getT3lintCompileHistory() {
t3lintChekList = this.getT3lintService().findLastMonth(this.getT3lCheckResult().getProjectName());
ServletActionContext.getRequest().getSession().setAttribute("proName", t3lCheckResult.getProjectName());
return "success";
}


public String generateTotalChart(HttpSession session, PrintWriter pw,int w, int h,String proName){
String filename = null;
Map<String,Integer> dataMap = genstatechartdata.getLastMonthTotalMap(proName);
if(dataMap == null){
return "";
}
CategoryDataset dataset = getTotalData(dataMap);
JFreeChart chart = ChartFactory.createLineChart(
"total趋势图",
"日期",
"数量",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);

chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);

chart.setBackgroundPaint(Color.white);

CategoryPlot plot = chart.getCategoryPlot();
plot.setDomainGridlinePaint(Color.black);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.blue);
plot.setRangeGridlinesVisible(true);

LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) plot.getRenderer();
lineandshaperenderer.setBaseShapesVisible(true);
lineandshaperenderer.setBaseLinesVisible(true);


lineandshaperenderer.setBaseItemLabelGenerator(new
StandardCategoryItemLabelGenerator());
lineandshaperenderer.setBaseItemLabelsVisible(true);
try {
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session);
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}


public String generateTestCaseChart(HttpSession session, PrintWriter pw,int w, int h,String proName){
String filename = null;
Map<String,Integer> dataMap = genstatechartdata.getLastMonthTcMap(proName);
if(dataMap == null){
return "";
}
CategoryDataset dataset = getTestcaseData(dataMap);
JFreeChart chart = ChartFactory.createLineChart(
"testcase趋势图",
"日期",
"数量",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);

chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);

chart.setBackgroundPaint(Color.white);

CategoryPlot plot = chart.getCategoryPlot();
plot.setDomainGridlinePaint(Color.black);
plot.setDomainGridlinesVisible(true);
plot.setRangeGridlinePaint(Color.blue);
plot.setRangeGridlinesVisible(true);

LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) plot.getRenderer();
lineandshaperenderer.setBaseShapesVisible(true);
lineandshaperenderer.setBaseLinesVisible(true);


lineandshaperenderer.setBaseItemLabelGenerator(new
StandardCategoryItemLabelGenerator());
lineandshaperenderer.setBaseItemLabelsVisible(true);

try {
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session);
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}

public String generateWarnChart(HttpSession session, PrintWriter pw,int w, int h,String proName){
String filename = null;
Map<String,Integer> warnMap = genstatechartdata.getLastMonthWarnMap(proName);
Map<String,Integer> errorMap = genstatechartdata.getLastMonthErrorMap(proName);
Map<String,Integer> fatalMap = genstatechartdata.getLastMonthFatalMap(proName);
Map<String,Integer> severityMap = genstatechartdata.getLastMonthSeverityMap(proName);
Map<String,Integer> hintMap = genstatechartdata.getLastMonthHintMap(proName);
if(warnMap == null && errorMap== null && fatalMap == null && severityMap== null && hintMap == null){
return "";
}
CategoryDataset dataset = getWarnData(warnMap,errorMap,fatalMap, severityMap,hintMap);
JFreeChart chart = ChartFactory.createLineChart(
"警告趋势图",// 图表标题
"日期",// 目录轴的显示标签
"数量",// 数值轴的显示标签
dataset,// 数据集
PlotOrientation.VERTICAL,// 图表方向:水平、垂直
true,// 是否显示图例(对于简单的柱状图必须是false)
false,// 是否生成工具
false// 是否生成URL链接
);
/*----------设置消除字体的锯齿渲染(解决中文问题)--------------*/
chart.getRenderingHints().put(RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
/*------------配置图表属性--------------*/
// 1,设置整个图表背景颜色
chart.setBackgroundPaint(Color.white);
/*------------设定Plot参数-------------*/
CategoryPlot plot = chart.getCategoryPlot();
// 2,设置详细图表的显示细节部分的背景颜色
//plot.setBackgroundPaint(Color.PINK);
// 3,设置垂直网格线颜色
plot.setDomainGridlinePaint(Color.black);
//4,设置是否显示垂直网格线
plot.setDomainGridlinesVisible(true);
//5,设置水平网格线颜色
plot.setRangeGridlinePaint(Color.blue);
//6,设置是否显示水平网格线
plot.setRangeGridlinesVisible(true);

LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) plot.getRenderer();
lineandshaperenderer.setBaseShapesVisible(true); // series 点(即数据点)可见
lineandshaperenderer.setBaseLinesVisible(true); // series 点(即数据点)间有连线可见


lineandshaperenderer.setBaseItemLabelGenerator(new
StandardCategoryItemLabelGenerator());
lineandshaperenderer.setBaseItemLabelsVisible(true);

try {
/*------得到chart的保存路径----*/
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, w, h, info,session);
/*------使用printWriter将文件写出----*/
ChartUtilities.writeImageMap(pw, filename, info, true);
pw.flush();
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}

/**
* PDU数据。
* @param dataMap
* @return
*/
private static CategoryDataset getTotalData(Map<String,Integer> dataMap){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
Set<String> keySet = dataMap.keySet();
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()){
String key = iter.next();
int smark = key.indexOf("-");
int emark = key.lastIndexOf("-");
StringBuilder builder = new StringBuilder();
builder.append(key.substring(smark+1, emark));
builder.append(".");
builder.append(key.substring(emark+1));
dataset.setValue(dataMap.get(key), "total", builder.toString());
}
return dataset;
}

/**
* testcase数据。
* @param dataMap
* @return
*/
private static CategoryDataset getTestcaseData(Map<String,Integer> dataMap){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
Set<String> keySet = dataMap.keySet();
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()){
String key = iter.next();
int smark = key.indexOf("-");
int emark = key.lastIndexOf("-");
StringBuilder builder = new StringBuilder();
builder.append(key.substring(smark+1, emark));
builder.append(".");
builder.append(key.substring(emark+1));
dataset.setValue(dataMap.get(key), "testcase", builder.toString());
}
return dataset;
}


/**
* warn数据。
* @param warnMap
* @return
*/
private static CategoryDataset getWarnData(Map<String,Integer> warnMap,Map<String,Integer> errorMap,Map<String,Integer> fatalMap,Map<String,Integer> severityMap,Map<String,Integer> hintMap){
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
if(warnMap != null){
Set<String> keySet = warnMap.keySet();
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()){
String key = iter.next();
int smark = key.indexOf("-");
int emark = key.lastIndexOf("-");
StringBuilder builder = new StringBuilder();
builder.append(key.substring(smark+1, emark));
builder.append(".");
builder.append(key.substring(emark+1));
dataset.setValue(warnMap.get(key), "warn", builder.toString());
}
}
if(errorMap != null){
Set<String> keySet = errorMap.keySet();
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()){
String key = iter.next();
int smark = key.indexOf("-");
int emark = key.lastIndexOf("-");
StringBuilder builder = new StringBuilder();
builder.append(key.substring(smark+1, emark));
builder.append(".");
builder.append(key.substring(emark+1));
dataset.setValue(errorMap.get(key), "error", builder.toString());
}
}
if(fatalMap != null){
Set<String> keySet = fatalMap.keySet();
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()){
String key = iter.next();
int smark = key.indexOf("-");
int emark = key.lastIndexOf("-");
StringBuilder builder = new StringBuilder();
builder.append(key.substring(smark+1, emark));
builder.append(".");
builder.append(key.substring(emark+1));
dataset.setValue(fatalMap.get(key), "fatal", builder.toString());
}
}
if(severityMap != null){
Set<String> keySet = severityMap.keySet();
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()){
String key = iter.next();
int smark = key.indexOf("-");
int emark = key.lastIndexOf("-");
StringBuilder builder = new StringBuilder();
builder.append(key.substring(smark+1, emark));
builder.append(".");
builder.append(key.substring(emark+1));
dataset.setValue(severityMap.get(key), "severity", builder.toString());
}
}
if(hintMap != null){
Set<String> keySet = hintMap.keySet();
Iterator<String> iter = keySet.iterator();
while(iter.hasNext()){
String key = iter.next();
int smark = key.indexOf("-");
int emark = key.lastIndexOf("-");
StringBuilder builder = new StringBuilder();
builder.append(key.substring(smark+1, emark));
builder.append(".");
builder.append(key.substring(emark+1));
dataset.setValue(hintMap.get(key), "hint", builder.toString());
}
}
return dataset;
}


/**
* 获取日志信息
*
* @return
*/
public String getLogs() {

return "success";
}


public T3lintCheckResult getT3lCheckResult() {
return t3lCheckResult;
}

public void setT3lCheckResult(T3lintCheckResult checkResult) {
t3lCheckResult = checkResult;
}

public List<CompileCheck> getCompileCheckList() {
return compileCheckList;
}

public void setCompileCheckList(List<CompileCheck> compileCheckList) {
this.compileCheckList = compileCheckList;
}

public List<T3lintCheck> getT3lintChekList() {
return t3lintChekList;
}

public void setT3lintChekList(List<T3lintCheck> chekList) {
t3lintChekList = chekList;
}

public CompileCheckService getCheckService() {
return checkService;
}

public void setCheckService(CompileCheckService checkService) {
this.checkService = checkService;
}

public T3lintCheckService getT3lintService() {
return t3lintService;
}

public void setT3lintService(T3lintCheckService service) {
t3lintService = service;
}

public ProjectService getProjectService() {
return projectService;
}

public void setProjectService(ProjectService projectService) {
this.projectService = projectService;
}

public CompileCheckResult getCompileCheckResult() {
return compileCheckResult;
}

public void setCompileCheckResult(CompileCheckResult compileCheckResult) {
this.compileCheckResult = compileCheckResult;
}




}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值