org.codehaus.mojo.chronos.chart.SummaryGCChartSource.java Source code

Java tutorial

Introduction

Here is the source code for org.codehaus.mojo.chronos.chart.SummaryGCChartSource.java

Source

/*
 * Chronos - Copyright (C) 2011 National Board of e-Health (NSI), Denmark (http://www.nsi.dk)
 *
 * All source code and information supplied as part of Chronos is
 * copyright to National Board of e-Health.
 *
 * The source code has been released under a dual license - meaning you can
 * use either licensed version of the library with your code.
 *
 * It is released under the LGPL (GNU Lesser General Public License), either
 * version 2.1 of the License, or (at your option) any later version. A copy
 * of which can be found at the link below.
 * http://www.gnu.org/copyleft/lesser.html
 *
 * $HeadURL$
 * $Id$
 */
package org.codehaus.mojo.chronos.chart;

import java.text.SimpleDateFormat;
import java.util.ResourceBundle;

import org.codehaus.mojo.chronos.ReportConfig;
import org.codehaus.mojo.chronos.gc.GCSamples;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.time.Millisecond;
import org.jfree.data.time.TimeSeries;
import org.jfree.data.time.TimeSeriesCollection;

/**
 * Source for garbage collection charts.
 * 
 * @author ksr@lakeside.dk
 */
public final class SummaryGCChartSource implements ChartSource {
    private GCSamples samples;

    public SummaryGCChartSource(GCSamples samples) {
        this.samples = samples;
    }

    public boolean isEnabled(ResourceBundle bundle, ReportConfig config) {
        return config.isShowgc() && config.isShowsummary();
    }

    public String getFileName(ResourceBundle bundle, ReportConfig config) {
        return "gc-" + config.getId();
    }

    public JFreeChart getChart(ResourceBundle bundle, ReportConfig config) {
        String beforeLabel = bundle.getString("chronos.label.gc.before");
        String afterLabel = bundle.getString("chronos.label.gc.after");
        TimeSeriesCollection dataset1 = new TimeSeriesCollection();
        TimeSeries heapBeforeSeries = new TimeSeries(beforeLabel, Millisecond.class);
        samples.extractHeapBefore(heapBeforeSeries);
        TimeSeries heapAfterSeries = new TimeSeries(afterLabel, Millisecond.class);
        samples.extractHeapAfter(heapAfterSeries);

        dataset1.addSeries(heapBeforeSeries);
        dataset1.addSeries(heapAfterSeries);
        TimeSeriesCollection dataset = dataset1;

        String title = bundle.getString("chronos.label.gc");
        String timeLabel = bundle.getString("chronos.label.gc.time");
        String valueLabel = bundle.getString("chronos.label.gc.mem");
        JFreeChart chart = ChartFactory.createTimeSeriesChart(title, timeLabel, valueLabel, dataset, true, true,
                false);
        ChartUtil.setupXYPlot(chart, new SimpleDateFormat("HH:mm:ss"));
        return chart;
    }

}