public static String generateXYChart(String section, HttpSession session, PrintWriter pw) {
String filename = null;
try {
// Retrieve list of WebHits
WebHitDataSet whDataSet = new WebHitDataSet();
ArrayList list = whDataSet.getDataByHitDate(section);
// Throw a custom NoDataException if there is no data
if (list.size() == 0) {
System.out.println("No data has been found");
throw new NoDataException();
}
// Create and populate an XYSeries Collection
XYSeries dataSeries = new XYSeries(null);
Iterator iter = list.listIterator();
int currentPosition = 0;
while (iter.hasNext()) {
WebHit wh = (WebHit)iter.next();
dataSeries.add(wh.getHitDate().getTime(),wh.getHitCount());
currentPosition++;
}
XYSeriesCollection xyDataset = new XYSeriesCollection(dataSeries);
// Create tooltip and URL generators
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.UK);
TimeSeriesToolTipGenerator ttg = new TimeSeriesToolTipGenerator(
sdf, NumberFormat.getInstance());
TimeSeriesURLGenerator urlg = new TimeSeriesURLGenerator(
sdf, "pie_chart.jsp", "series", "hitDate");
// Create the chart object
ValueAxis timeAxis = new HorizontalDateAxis("");
NumberAxis valueAxis = new VerticalNumberAxis("");
valueAxis.setAutoRangeIncludesZero(false); // override default
XYPlot plot = new XYPlot(xyDataset, timeAxis, valueAxis);
StandardXYItemRenderer sxyir = new StandardXYItemRenderer(
StandardXYItemRenderer.LINES + StandardXYItemRenderer.SHAPES,
ttg, urlg);
// Write the chart image to the temporary directory
ChartRenderingInfo info = new ChartRenderingInfo(new StandardEntityCollection());
filename = ServletUtilities.saveChartAsPNG(chart, 500, 300, info, session);
// Write the image map to the PrintWriter
ChartUtilities.writeImageMap(pw, filename, info);
pw.flush();