package com.ordobill.webapp.report;
import java.awt.Container;
import java.awt.Font;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import com.ordobill.webapp.beans.Report;
import com.ordobill.webapp.beans.Sampleform;
public class PieChart {
/**
* Creates a sample dataset.
*
* @return A sample dataset.
*/
public static PieDataset createDataset(Sampleform sampleform) {
DefaultPieDataset dataset = new DefaultPieDataset();
/*dataset.setValue("One", new Double(43.2));
dataset.setValue("Two", new Double(10.0));
dataset.setValue("Three", new Double(27.5));
dataset.setValue("Four", new Double(17.5));
dataset.setValue("Five", new Double(11.0));
dataset.setValue("Six", new Double(19.4));*/
String[] dataArr = rangeData(sampleform.getStepFigName());
for (int i=0;i<dataArr.length;i++) {
dataset.setValue(dataArr[i].split(";;;")[0], Double.valueOf(dataArr[i].split(";;;")[1]));
}
/*for (int i=0;i<10;i++) {
dataset.setValue(sampleform.getStepAve()[0][i], Double.valueOf(sampleform.getStepAve()[1][i]));
}*/
return dataset;
}
/**
* Creates a chart.
*
* @param dataset the dataset.
*
* @return A chart.
*/
public static JFreeChart createChart(PieDataset dataset) {
JFreeChart chart = ChartFactory.createPieChart(
"Pie Chart", // chart title
dataset, // data
true, // include legend
true,
false
);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
plot.setNoDataMessage("No data available");
plot.setCircular(false);
plot.setLabelGap(0.02);
return chart;
}
/**
* Creates a panel for the demo (used by SuperDemo.java).
*
* @return A panel.
*/
public static JFreeChart createPanel(Report reportBean,Sampleform sampleform) {
JFreeChart chart = createChart(createDataset(sampleform));
/*ChartPanel chartPanel = new ChartPanel(chart);
chartPanel.setPreferredSize(new Dimension(200, 100));
JInternalFrame frame = new JInternalFrame("Frame 1", true);
frame.getContentPane().add(chartPanel);*/
Container cont = new Container();
ChartFrame frame = new ChartFrame("pie chart", chart);
frame.pack();
frame.setVisible(true);
return chart;
}
/**
*
* @param dataArr
* @return resultArr
*/
public static String[] rangeData(String[] dataArr) {
String[] resultArr = null;
if (dataArr.length < 10) {
resultArr = new String[dataArr.length];
} else {
resultArr = new String[10];
}
for (int i=0; i<dataArr.length;i++) {
System.out.println(dataArr[i].split(";;;")[0]);
if (i<10) {
resultArr[i] = dataArr[i];
} else {
for (int k=0;k<resultArr.length;k++) {
if (Double.valueOf(resultArr[k].split(";;;")[1])>Double.valueOf(dataArr[i].split(";;;")[1])) {
resultArr[k] = dataArr[i];
break;
}
}
}
}
return resultArr;
}
}