/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License 3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl.html * ******************************************************************************/ package com.opendoorlogistics.components.barchart; import java.awt.Color; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.DefaultCategoryDataset; import com.opendoorlogistics.api.ODLApi; import com.opendoorlogistics.api.tables.ODLTableReadOnly; import com.opendoorlogistics.components.barchart.basechart.BaseChartPanel; import com.opendoorlogistics.core.utils.strings.Strings; class BarchartPanel extends BaseChartPanel { BarchartPanel(ODLApi api,BarchartConfig config,ODLTableReadOnly table ) { super(api,config, table); } @Override protected JFreeChart createChart(ODLTableReadOnly table, int [] rowFilter) { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); if(rowFilter!=null){ for(int row:rowFilter){ createRowData( table, dataset, row); } }else{ int n = table.getRowCount(); for (int row = 0; row < n; row++) { createRowData(table, dataset, row); } } // create the chart... JFreeChart chart = ChartFactory.createBarChart(Strings.isEmpty(config.getTitle()) ? null : config.getTitle(),// chart title config.getXLabel(), // domain axis label config.getYLabel(), // range axis label dataset, // data PlotOrientation.VERTICAL, // orientation true, // include legend true, // tooltips? false // URLs? ); // set the background color for the chart... chart.setBackgroundPaint(Color.WHITE); // don't show legend for just one series if (((BarchartConfig)config).getSeriesNames().size() <= 1) { chart.removeLegend(); } return chart; } /** * @param bc * @param table * @param dataset * @param row */ protected void createRowData( ODLTableReadOnly table, DefaultCategoryDataset dataset, int row) { String category = readGroupVal(table, row, config.getNbFilterGroupLevels()); for (int series = 0; series < ((BarchartConfig)config).getSeriesNames().size(); series++) { Double val = (Double) table.getValueAt(row,config.getNbFilterGroupLevels() + 1 + series); if (val == null) { throw new RuntimeException("Empty numeric value passed into barcode component input table."); } dataset.addValue(val, ((BarchartConfig)config).getSeriesNames().get(series), category); } } }