/*
* Copyright (C) 2008 Digital Sundhed (SDSD)
*
* All source code and information supplied as part of chronos
* is copyright to its contributers.
*
* 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 Common Public License 1.0, a copy of which can
* be found at the link below.
* http://www.opensource.org/licenses/cpl.php
*
* 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
*/
package org.codehaus.mojo.chronos.chart;
import java.io.File;
import java.io.IOException;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
/**
* Utility class for performing the actual rendering of charts.
*
* @author ksr@lakeside.dk
*/
public final class ChartRendererImpl implements ChartRenderer {
private static final int HEIGHT = 400;
private static final int WIDTH = 800;
private String outputDirectory;
/**
* Constructor for the <code>ChartRendererImpl</code> class.
*
* @param outputDir
* The directory where generated charts is to be saved.
*/
public ChartRendererImpl(String outputDir) {
this.outputDirectory = outputDir;
}
/**
* Save a {@link JFreeChart} to the filesystem.
*
* @param filename
* The filename of the chart to save
* @param chart
* the {@link JFreeChart} to save as a file
* @throws IOException
* If the file cannot be saved
*/
public void renderChart(String filename, JFreeChart chart) throws IOException {
File parentDir = new File(outputDirectory);
File imageDir = new File(parentDir, "images");
if(!imageDir.exists()) {
imageDir.mkdirs();
}
File pngFile = new File(imageDir, filename + ".png");
ChartUtilities.saveChartAsPNG(pngFile, chart, WIDTH, HEIGHT);
}
}