org.codehaus.mojo.dashboard.report.plugin.chart.BarChartRenderer.java Source code

Java tutorial

Introduction

Here is the source code for org.codehaus.mojo.dashboard.report.plugin.chart.BarChartRenderer.java

Source

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.Paint;
import java.text.NumberFormat;
import java.util.Locale;

import org.codehaus.mojo.dashboard.report.plugin.utils.ChartUtils;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.StandardCategoryItemLabelGenerator;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.data.category.CategoryDataset;
import org.jfree.ui.RectangleInsets;

/**
 * 
 * @author <a href="dvicente72@gmail.com">David Vicente</a>
 * 
 */
public class BarChartRenderer extends AbstractChartRenderer {

    private static final double NUMBER_AXIS_RANGE = 1.0D;

    public BarChartRenderer(IChartStrategy strategy) {
        super(strategy);
    }

    public BarChartRenderer(IChartStrategy strategy, int width, int height) {
        super(strategy, width, height);
    }

    public void createChart() {
        CategoryDataset categorydataset = (CategoryDataset) this.datasetStrategy.getDataset();
        report = ChartFactory.createBarChart(this.datasetStrategy.getTitle(), this.datasetStrategy.getYAxisLabel(),
                this.datasetStrategy.getXAxisLabel(), categorydataset, PlotOrientation.HORIZONTAL, true, true,
                false);
        // report.setBackgroundPaint( Color.lightGray );
        report.setPadding(new RectangleInsets(5.0d, 5.0d, 5.0d, 5.0d));
        CategoryPlot categoryplot = (CategoryPlot) report.getPlot();
        categoryplot.setBackgroundPaint(Color.white);
        categoryplot.setRangeGridlinePaint(Color.lightGray);
        categoryplot.setDomainGridlinePaint(Color.lightGray);
        categoryplot.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
        NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis();
        if (datasetStrategy instanceof CoberturaBarChartStrategy
                || datasetStrategy instanceof CloverBarChartStrategy
                || datasetStrategy instanceof MultiCloverBarChartStrategy) {
            numberaxis.setRange(0.0D, BarChartRenderer.NUMBER_AXIS_RANGE);
            numberaxis.setNumberFormatOverride(NumberFormat.getPercentInstance());
        } else {
            numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
        }
        numberaxis.setLowerMargin(0.0D);
        CategoryAxis axis = categoryplot.getDomainAxis();
        axis.setLowerMargin(0.02); // two percent
        axis.setCategoryMargin(0.10); // ten percent
        axis.setUpperMargin(0.02); // two percent
        BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer();
        barrenderer.setItemMargin(0.10);
        barrenderer.setDrawBarOutline(false);
        barrenderer.setBaseItemLabelsVisible(true);
        if (datasetStrategy instanceof CoberturaBarChartStrategy
                || datasetStrategy instanceof CloverBarChartStrategy
                || datasetStrategy instanceof MultiCloverBarChartStrategy) {
            barrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator("{2}",
                    NumberFormat.getPercentInstance(Locale.getDefault())));
        } else {
            barrenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
        }

        int height = (categorydataset.getColumnCount() * ChartUtils.STANDARD_BARCHART_ENTRY_HEIGHT
                * categorydataset.getRowCount());
        if (height > ChartUtils.MINIMUM_HEIGHT) {
            super.setHeight(height);
        } else {
            super.setHeight(ChartUtils.MINIMUM_HEIGHT);
        }

        Paint[] paints = this.datasetStrategy.getPaintColor();

        for (int i = 0; i < categorydataset.getRowCount() && i < paints.length; i++) {
            barrenderer.setSeriesPaint(i, paints[i]);
        }

    }

}