JfreeChart with seam (ToolTip problem)
itays100 Nov 13, 2011 7:43 AMI am trying to generate chart from seam application and I used the code below from the JFreeChart war file.
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("Hits");
        Iterator iter = list.listIterator();
        while (iter.hasNext()) {
            WebHit wh = (WebHit)iter.next();
            dataSeries.add(wh.getHitDate().getTime(),wh.getHitCount());
        }
        XYSeriesCollection xyDataset = new XYSeriesCollection(dataSeries);
        //  Create tooltip and URL generators
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yyyy", Locale.UK);
        StandardXYToolTipGenerator ttg = new StandardXYToolTipGenerator(
                StandardXYToolTipGenerator.DEFAULT_TOOL_TIP_FORMAT,
                sdf, NumberFormat.getInstance());
        TimeSeriesURLGenerator urlg = new TimeSeriesURLGenerator(
                sdf, "pie_chart.jsp", "series", "hitDate");
        //  Create the chart object
        ValueAxis timeAxis = new DateAxis("");
        NumberAxis valueAxis = new NumberAxis("");
        valueAxis.setAutoRangeIncludesZero(false);  // override default
        StandardXYItemRenderer renderer = new StandardXYItemRenderer(
                StandardXYItemRenderer.LINES + StandardXYItemRenderer.SHAPES,
                ttg, urlg);
        renderer.setShapesFilled(true);
        XYPlot plot = new XYPlot(xyDataset, timeAxis, valueAxis, renderer);
        JFreeChart chart = new JFreeChart("", JFreeChart.DEFAULT_TITLE_FONT, plot, false);
        chart.setBackgroundPaint(java.awt.Color.white);
        //  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();
    } catch (NoDataException e) {
        System.out.println(e.toString());
        filename = "public_nodata_500x300.png";
    } catch (Exception e) {
        System.out.println("Exception - " + e.toString());
        e.printStackTrace(System.out);
        filename = "public_error_500x300.png";
    }
    return filename;
}
I have this code in my seam entity:
@Entity
@Table(name = "myobject", catalog = "my_object")
public class MyObject implements java.io.Serializable {
.....
@Transient
        public String getChartFileName() {
                PrintWriter pw = new PrintWriter(System.out);
                ExternalContext extCtxt = FacesContext.getCurrentInstance().getExternalContext();
                javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest)extCtxt.getRequest();
        String reqUrl = request.getRequestURL().toString();
        this.fileName = WebHitChart.generateXYChart("Service", request.getSession(), pw);
                System.out.println("filename - " + fileName);
                String graphURL = reqUrl + "/servlet/DisplayChart?filename=" + fileName;
                return graphURL;
        }
And I have this in my .xhtml:
<img  id="myChartId" src="#{myobject.chartFileName}" usemap="##{myobject.chartShortName}">
I able to see the chart on the page but the tooltip is not shown on mouseover like the example.
The map tag is not generated as I check the generated html.
I should be able to see something like this:
<MAP NAME="jfreechart-3299886008362407185.png"> <AREA SHAPE="POLY" COORDS="92,242,98,242,98,248,92,248,92,242,92,242" title="Hits: (01-Aug-2002, 235,059)" href="pie_chart.jsp?series=Hits&hitDate=01-Aug-2002"> <AREA SHAPE="POLY" COORDS="106,234,112,234,112,240,106,240,106,234,106,234" title="Hits: (02-Aug-2002, 240,635)" href="pie_chart.jsp?series=Hits&hitDate=02-Aug-2002"> <AREA SHAPE="POLY" COORDS="148,223,154,223,154,229,148,229,148,223,148,223" title="Hits: (05-Aug-2002, 248,903)" href="pie_chart.jsp?series=Hits&hitDate=05-Aug-2002">
I'm not sure if it seam related or not but hopefully someone here had the same situation before.
Thanks.
 
    