package org.devgateway.toolkit.web.excelcharts.util; import org.devgateway.toolkit.web.excelcharts.ChartType; import org.devgateway.toolkit.web.excelcharts.CustomChartData; import org.devgateway.toolkit.web.excelcharts.data.XSSFAreaChartData; import org.devgateway.toolkit.web.excelcharts.data.XSSFBarChartData; import org.devgateway.toolkit.web.excelcharts.data.XSSFBubbleChartData; import org.devgateway.toolkit.web.excelcharts.data.XSSFLineChartData; import org.devgateway.toolkit.web.excelcharts.data.XSSFPieChartData; import org.devgateway.toolkit.web.excelcharts.data.XSSFScatterChartData; import org.devgateway.toolkit.web.excelcharts.data.XSSFStackedBarChartData; import org.openxmlformats.schemas.drawingml.x2006.chart.STBarDir; import org.openxmlformats.schemas.drawingml.x2006.chart.STBarGrouping; /** * @author idobre * @since 8/11/16 */ public class CustomChartDataFactoryDefault implements CustomChartDataFactory { /** * @return new chart data instance */ @Override public CustomChartData createChartData(final ChartType type, final String title) { final CustomChartData chartData; switch (type) { case area: chartData = new XSSFAreaChartData(title); break; case bar: XSSFBarChartData barChartData = new XSSFBarChartData(title); barChartData.setBarDir(STBarDir.BAR); chartData = barChartData; break; case barcol: chartData = new XSSFBarChartData(title); break; case stackedcol: chartData = new XSSFStackedBarChartData(title); break; case stackedcolpercentage: XSSFStackedBarChartData stackedColChartData = new XSSFStackedBarChartData(title); stackedColChartData.setBarGrouping(STBarGrouping.PERCENT_STACKED); chartData = stackedColChartData; break; case stackedbar: XSSFStackedBarChartData stackedBarChartData = new XSSFStackedBarChartData(title); stackedBarChartData.setBarDir(STBarDir.BAR); chartData = stackedBarChartData; break; case stackedbarpercentage: XSSFStackedBarChartData stackedBarPercentageChartData = new XSSFStackedBarChartData(title); stackedBarPercentageChartData.setBarGrouping(STBarGrouping.PERCENT_STACKED); stackedBarPercentageChartData.setBarDir(STBarDir.BAR); chartData = stackedBarPercentageChartData; break; case line: chartData = new XSSFLineChartData(title); break; case pie: chartData = new XSSFPieChartData(title); break; case scatter: chartData = new XSSFScatterChartData(title); break; case bubble: chartData = new XSSFBubbleChartData(title); break; default: chartData = null; } return chartData; } }