package org.codehaus.mojo.dashboard.report.plugin.chart; /* * Copyright 2006 David Vicente * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.awt.Color; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import org.codehaus.mojo.dashboard.report.plugin.utils.ChartUtils; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; /** * * @author <a href="dvicente72@gmail.com">David Vicente</a> * */ public abstract class AbstractChartRenderer implements IChartRenderer { /** * Wrapped chart. */ protected JFreeChart report = null; /** * Width of the resulting chart file. */ private int width = ChartUtils.STANDARD_WIDTH; /** * Height of the resulting chart file. */ private int height = ChartUtils.STANDARD_HEIGHT; /** * */ protected IChartStrategy datasetStrategy; protected AbstractChartRenderer() { } /** * * @param strategy */ public AbstractChartRenderer( IChartStrategy strategy ) { this.datasetStrategy = strategy; createChart(); } /** * * @param strategy * @param width * @param height */ public AbstractChartRenderer( IChartStrategy strategy, int width, int height ) { this( strategy ); this.width = width; this.height = height; } /** * create the chart with the IChartStrategy * */ public abstract void createChart(); /** * create the chart with the IChartStrategy * */ public JFreeChart getChart(){ return report; } /* (non-Javadoc) * @see org.codehaus.mojo.dashboard.report.plugin.chart.IChartRenderer#isEmpty() */ public boolean isEmpty() { return this.datasetStrategy.isDatasetEmpty(); } /* (non-Javadoc) * @see org.codehaus.mojo.dashboard.report.plugin.chart.IChartRenderer#getFileExtension() */ public String getFileExtension() { return "png"; } /* (non-Javadoc) * @see org.codehaus.mojo.dashboard.report.plugin.chart.IChartRenderer#getMimeType() */ public String getMimeType() { return "image/png"; } /* (non-Javadoc) * @see org.codehaus.mojo.dashboard.report.plugin.chart.IChartRenderer#saveToFile(java.lang.String) */ public void saveToFile( String filename ) throws IOException { report.setBackgroundPaint( getBackgroundColor() ); File imageFile = new File( filename ); imageFile.getParentFile().mkdirs(); ChartUtilities.saveChartAsPNG( new File( filename ), report, width, height ); } public Color getBackgroundColor() { return (Color) ChartUtils.BLUE_STEEL2_LIGHT; } /* (non-Javadoc) * @see org.codehaus.mojo.dashboard.report.plugin.chart.IChartRenderer#createBufferedImage(int, int) */ public BufferedImage createBufferedImage( int imageWidth, int imageHeight ) { return report.createBufferedImage( imageWidth, imageHeight ); } /* (non-Javadoc) * @see org.codehaus.mojo.dashboard.report.plugin.chart.IChartRenderer#setHeight(int) */ public void setHeight( int _height ) { this.height = _height; } /* (non-Javadoc) * @see org.codehaus.mojo.dashboard.report.plugin.chart.IChartRenderer#setWidth(int) */ public void setWidth( int _width ) { this.width = _width; } }