From 2a52f123b7325339d203152d8405c10d4b10ece1 Mon Sep 17 00:00:00 2001 From: Alain FAGOT BEAREZ Date: Tue, 25 Sep 2018 03:18:19 +0100 Subject: [PATCH 1/2] adapting some contributions by Axel Richter on SO --- .../poi/xslf/usermodel/BarChartDemo.java | 3 ++ .../poi/xssf/usermodel/examples/BarChart.java | 30 ++++++++++++++----- ...tExampleDOCX.java => BarChartExample.java} | 7 +++-- .../usermodel/chart/XDDFBarChartData.java | 18 ++++++++++- .../poi/xddf/usermodel/chart/XDDFChart.java | 24 ++++++++++++++- .../usermodel/chart/XDDFLineChartData.java | 14 ++++++++- .../usermodel/chart/XDDFRadarChartData.java | 14 ++++++++- .../usermodel/chart/XDDFScatterChartData.java | 30 ++++++++++++++++++- 8 files changed, 125 insertions(+), 15 deletions(-) rename src/examples/src/org/apache/poi/xwpf/usermodel/examples/{BarChartExampleDOCX.java => BarChartExample.java} (95%) diff --git a/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java b/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java index 3b45f166c2f..ac1d68a7dfa 100644 --- a/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java +++ b/src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java @@ -115,6 +115,9 @@ private static void setColumnData(XSLFChart chart, String chartTitle) { // in order to transform a bar chart into a column chart, you just need to change the bar direction bar.setBarDirection(BarDirection.COL); + // looking for "Stacked Bar Chart"? uncomment the following line + // bar.setBarGrouping(BarGrouping.STACKED); + // additionally, you can adjust the axes bar.getCategoryAxis().setOrientation(AxisOrientation.MAX_MIN); bar.getValueAxes().get(0).setPosition(AxisPosition.TOP); diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java index e05599f9fb0..8f1400d4a14 100644 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java @@ -28,8 +28,11 @@ Licensed to the Apache Software Foundation (ASF) under one or more import org.apache.poi.xddf.usermodel.XDDFSolidFillProperties; import org.apache.poi.xddf.usermodel.chart.AxisCrosses; import org.apache.poi.xddf.usermodel.chart.AxisPosition; +import org.apache.poi.xddf.usermodel.chart.BarDirection; +import org.apache.poi.xddf.usermodel.chart.BarGrouping; import org.apache.poi.xddf.usermodel.chart.ChartTypes; import org.apache.poi.xddf.usermodel.chart.LegendPosition; +import org.apache.poi.xddf.usermodel.chart.XDDFBarChartData; import org.apache.poi.xddf.usermodel.chart.XDDFCategoryAxis; import org.apache.poi.xddf.usermodel.chart.XDDFChartData; import org.apache.poi.xddf.usermodel.chart.XDDFChartLegend; @@ -85,15 +88,15 @@ public static void main(String[] args) throws IOException { data.addSeries(xs, ys1); data.addSeries(xs, ys2); chart.plot(data); + + // in order to transform a bar chart into a column chart, you just need to change the bar direction + XDDFBarChartData bar = (XDDFBarChartData) data; + bar.setBarDirection(BarDirection.COL); + // looking for "Stacked Bar Chart"? uncomment the following line + // bar.setBarGrouping(BarGrouping.STACKED); - XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(PresetColor.CHARTREUSE)); - XDDFChartData.Series firstSeries = data.getSeries().get(0); - XDDFShapeProperties properties = firstSeries.getShapeProperties(); - if (properties == null) { - properties = new XDDFShapeProperties(); - } - properties.setFillProperties(fill); - firstSeries.setShapeProperties(properties); + solidFillSeries(data, 0, PresetColor.CHARTREUSE); + solidFillSeries(data, 1, PresetColor.TURQUOISE); // Write the output to a file try (FileOutputStream fileOut = new FileOutputStream("ooxml-bar-chart.xlsx")) { @@ -101,4 +104,15 @@ public static void main(String[] args) throws IOException { } } } + + private static void solidFillSeries(XDDFChartData data, int index, PresetColor color) { + XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color)); + XDDFChartData.Series firstSeries = data.getSeries().get(index); + XDDFShapeProperties properties = firstSeries.getShapeProperties(); + if (properties == null) { + properties = new XDDFShapeProperties(); + } + properties.setFillProperties(fill); + firstSeries.setShapeProperties(properties); + } } diff --git a/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExampleDOCX.java b/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java similarity index 95% rename from src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExampleDOCX.java rename to src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java index a2fa59cda05..12a271811ba 100644 --- a/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExampleDOCX.java +++ b/src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java @@ -43,9 +43,9 @@ /** * Build a bar chart from a template docx */ -public class BarChartExampleDOCX { +public class BarChartExample { private static void usage(){ - System.out.println("Usage: BarChartDemo "); + System.out.println("Usage: BarChartExample "); System.out.println(" bar-chart-template.docx template with a bar chart"); System.out.println(" bar-chart-data.txt the model to set. First line is chart title, " + "then go pairs {axis-label value}"); @@ -119,6 +119,9 @@ private static void setColumnData(XWPFChart chart, String chartTitle) { // in order to transform a bar chart into a column chart, you just need to change the bar direction bar.setBarDirection(BarDirection.COL); + + // looking for "Stacked Bar Chart"? uncomment the following line + // bar.setBarGrouping(BarGrouping.STACKED); // additionally, you can adjust the axes bar.getCategoryAxis().setOrientation(AxisOrientation.MAX_MIN); diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java index a696a3b8f47..ff39e1d6183 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java @@ -23,6 +23,7 @@ Licensed to the Apache Software Foundation (ASF) under one or more import org.apache.poi.xddf.usermodel.XDDFShapeProperties; import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource; import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarChart; +import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarDir; import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarSer; import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource; import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx; @@ -34,12 +35,27 @@ public class XDDFBarChartData extends XDDFChartData { public XDDFBarChartData(CTBarChart chart, Map categories, Map values) { this.chart = chart; + if (chart.getBarDir() == null) { + chart.addNewBarDir().setVal(BarDirection.BAR.underlying); + } for (CTBarSer series : chart.getSerList()) { this.series.add(new Series(series, series.getCat(), series.getVal())); } - defineAxes(chart.getAxIdArray(), categories, values); + defineAxes(categories, values); } + private void defineAxes(Map categories, Map values) { + if (chart.sizeOfAxIdArray() == 0) { + for (Long id : categories.keySet()) { + chart.addNewAxId().setVal(id); + } + for (Long id : values.keySet()) { + chart.addNewAxId().setVal(id); + } + } + super.defineAxes(chart.getAxIdArray(), categories, values); + } + @Override public void setVaryColors(boolean varyColors) { if (chart.isSetVaryColors()) { diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java index f23ce6d23a3..524f2f1ff04 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java @@ -214,6 +214,28 @@ public void setAutoTitleDeleted(boolean deleted) { chart.getAutoTitleDeleted().setVal(deleted); } + public Boolean getTitleOverlay() { + if (chart.isSetTitle()) { + CTTitle title = chart.getTitle(); + if (title.isSetOverlay()) { + return title.getOverlay().getVal(); + } + } + return null; + } + + public void setTitleOverlay(boolean overlay) { + if (!chart.isSetTitle()) { + chart.addNewTitle(); + } + CTTitle title = chart.getTitle(); + if (title.isSetOverlay()) { + title.getOverlay().setVal(overlay); + } else { + title.addNewOverlay().setVal(overlay); + } + } + /** * Get the chart title body if there is one, i.e. title is set and is not a * formula. @@ -327,7 +349,7 @@ public List getChartSeries() { private Map getCategoryAxes() { CTPlotArea plotArea = getCTPlotArea(); int sizeOfArray = plotArea.sizeOfCatAxArray(); - Map axes = new HashMap(sizeOfArray); + Map axes = new HashMap<>(sizeOfArray); for (int i = 0; i < sizeOfArray; i++) { CTCatAx category = plotArea.getCatAxArray(i); axes.put(category.getAxId().getVal(), new XDDFCategoryAxis(category)); diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java index 03ee375e93c..776ae29ef43 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java @@ -38,7 +38,19 @@ public XDDFLineChartData(CTLineChart chart, Map categories, for (CTLineSer series : chart.getSerList()) { this.series.add(new Series(series, series.getCat(), series.getVal())); } - defineAxes(chart.getAxIdArray(), categories, values); + defineAxes(categories, values); + } + + private void defineAxes(Map categories, Map values) { + if (chart.sizeOfAxIdArray() == 0) { + for (Long id : categories.keySet()) { + chart.addNewAxId().setVal(id); + } + for (Long id : values.keySet()) { + chart.addNewAxId().setVal(id); + } + } + super.defineAxes(chart.getAxIdArray(), categories, values); } @Override diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java index a189391346c..78612bc2bba 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java @@ -38,7 +38,19 @@ public XDDFRadarChartData(CTRadarChart chart, Map categorie for (CTRadarSer series : chart.getSerList()) { this.series.add(new Series(series, series.getCat(), series.getVal())); } - defineAxes(chart.getAxIdArray(), categories, values); + defineAxes(categories, values); + } + + private void defineAxes(Map categories, Map values) { + if (chart.sizeOfAxIdArray() == 0) { + for (Long id : categories.keySet()) { + chart.addNewAxId().setVal(id); + } + for (Long id : values.keySet()) { + chart.addNewAxId().setVal(id); + } + } + super.defineAxes(chart.getAxIdArray(), categories, values); } @Override diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java index bd6c69b21c5..dd9c2d930b6 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java @@ -38,7 +38,19 @@ public XDDFScatterChartData(CTScatterChart chart, Map categ for (CTScatterSer series : chart.getSerList()) { this.series.add(new Series(series, series.getXVal(), series.getYVal())); } - defineAxes(chart.getAxIdArray(), categories, values); + defineAxes(categories, values); + } + + private void defineAxes(Map categories, Map values) { + if (chart.sizeOfAxIdArray() == 0) { + for (Long id : categories.keySet()) { + chart.addNewAxId().setVal(id); + } + for (Long id : values.keySet()) { + chart.addNewAxId().setVal(id); + } + } + super.defineAxes(chart.getAxIdArray(), categories, values); } @Override @@ -99,6 +111,22 @@ protected CTSerTx getSeriesText() { return series.getTx(); } + public Boolean getSmooth() { + if (series.isSetSmooth()) { + return series.getSmooth().getVal(); + } else { + return null; + } + } + + public void setSmooth(boolean smooth) { + if (series.isSetSmooth()) { + series.getSmooth().setVal(smooth); + } else { + series.addNewSmooth().setVal(smooth); + } + } + @Override public void setShowLeaderLines(boolean showLeaderLines) { if (!series.isSetDLbls()) { From a0341d0013812e92b9173c5c7dc3069097e66427 Mon Sep 17 00:00:00 2001 From: Alain FAGOT BEAREZ Date: Tue, 25 Sep 2018 22:47:14 +0100 Subject: [PATCH 2/2] code review suggestions --- .../poi/xssf/usermodel/examples/BarChart.java | 23 ++++++++-------- .../usermodel/chart/XDDFBarChartData.java | 27 +++++++++---------- .../poi/xddf/usermodel/chart/XDDFChart.java | 6 +++++ .../usermodel/chart/XDDFLineChartData.java | 18 ++++++------- .../usermodel/chart/XDDFRadarChartData.java | 18 ++++++------- .../usermodel/chart/XDDFScatterChartData.java | 24 ++++++++++------- 6 files changed, 63 insertions(+), 53 deletions(-) diff --git a/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java b/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java index 8f1400d4a14..d9090d7dd1f 100644 --- a/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java +++ b/src/examples/src/org/apache/poi/xssf/usermodel/examples/BarChart.java @@ -29,7 +29,6 @@ Licensed to the Apache Software Foundation (ASF) under one or more import org.apache.poi.xddf.usermodel.chart.AxisCrosses; import org.apache.poi.xddf.usermodel.chart.AxisPosition; import org.apache.poi.xddf.usermodel.chart.BarDirection; -import org.apache.poi.xddf.usermodel.chart.BarGrouping; import org.apache.poi.xddf.usermodel.chart.ChartTypes; import org.apache.poi.xddf.usermodel.chart.LegendPosition; import org.apache.poi.xddf.usermodel.chart.XDDFBarChartData; @@ -88,7 +87,7 @@ public static void main(String[] args) throws IOException { data.addSeries(xs, ys1); data.addSeries(xs, ys2); chart.plot(data); - + // in order to transform a bar chart into a column chart, you just need to change the bar direction XDDFBarChartData bar = (XDDFBarChartData) data; bar.setBarDirection(BarDirection.COL); @@ -105,14 +104,14 @@ public static void main(String[] args) throws IOException { } } - private static void solidFillSeries(XDDFChartData data, int index, PresetColor color) { - XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color)); - XDDFChartData.Series firstSeries = data.getSeries().get(index); - XDDFShapeProperties properties = firstSeries.getShapeProperties(); - if (properties == null) { - properties = new XDDFShapeProperties(); - } - properties.setFillProperties(fill); - firstSeries.setShapeProperties(properties); - } + private static void solidFillSeries(XDDFChartData data, int index, PresetColor color) { + XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color)); + XDDFChartData.Series firstSeries = data.getSeries().get(index); + XDDFShapeProperties properties = firstSeries.getShapeProperties(); + if (properties == null) { + properties = new XDDFShapeProperties(); + } + properties.setFillProperties(fill); + firstSeries.setShapeProperties(properties); + } } diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java index ff39e1d6183..5e89e775fab 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java @@ -23,7 +23,6 @@ Licensed to the Apache Software Foundation (ASF) under one or more import org.apache.poi.xddf.usermodel.XDDFShapeProperties; import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource; import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarChart; -import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarDir; import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarSer; import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource; import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx; @@ -35,9 +34,9 @@ public class XDDFBarChartData extends XDDFChartData { public XDDFBarChartData(CTBarChart chart, Map categories, Map values) { this.chart = chart; - if (chart.getBarDir() == null) { - chart.addNewBarDir().setVal(BarDirection.BAR.underlying); - } + if (chart.getBarDir() == null) { + chart.addNewBarDir().setVal(BarDirection.BAR.underlying); + } for (CTBarSer series : chart.getSerList()) { this.series.add(new Series(series, series.getCat(), series.getVal())); } @@ -45,17 +44,17 @@ public XDDFBarChartData(CTBarChart chart, Map categories, } private void defineAxes(Map categories, Map values) { - if (chart.sizeOfAxIdArray() == 0) { - for (Long id : categories.keySet()) { - chart.addNewAxId().setVal(id); - } - for (Long id : values.keySet()) { - chart.addNewAxId().setVal(id); - } - } - super.defineAxes(chart.getAxIdArray(), categories, values); + if (chart.sizeOfAxIdArray() == 0) { + for (Long id : categories.keySet()) { + chart.addNewAxId().setVal(id); + } + for (Long id : values.keySet()) { + chart.addNewAxId().setVal(id); + } + } + defineAxes(chart.getAxIdArray(), categories, values); } - + @Override public void setVaryColors(boolean varyColors) { if (chart.isSetVaryColors()) { diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java index 524f2f1ff04..d7d6105b79e 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java @@ -214,6 +214,9 @@ public void setAutoTitleDeleted(boolean deleted) { chart.getAutoTitleDeleted().setVal(deleted); } + /* + * @since 4.0.1 + */ public Boolean getTitleOverlay() { if (chart.isSetTitle()) { CTTitle title = chart.getTitle(); @@ -224,6 +227,9 @@ public Boolean getTitleOverlay() { return null; } + /* + * @since 4.0.1 + */ public void setTitleOverlay(boolean overlay) { if (!chart.isSetTitle()) { chart.addNewTitle(); diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java index 776ae29ef43..687bc44abe9 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java @@ -42,15 +42,15 @@ public XDDFLineChartData(CTLineChart chart, Map categories, } private void defineAxes(Map categories, Map values) { - if (chart.sizeOfAxIdArray() == 0) { - for (Long id : categories.keySet()) { - chart.addNewAxId().setVal(id); - } - for (Long id : values.keySet()) { - chart.addNewAxId().setVal(id); - } - } - super.defineAxes(chart.getAxIdArray(), categories, values); + if (chart.sizeOfAxIdArray() == 0) { + for (Long id : categories.keySet()) { + chart.addNewAxId().setVal(id); + } + for (Long id : values.keySet()) { + chart.addNewAxId().setVal(id); + } + } + defineAxes(chart.getAxIdArray(), categories, values); } @Override diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java index 78612bc2bba..ce1cd59656c 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java @@ -42,15 +42,15 @@ public XDDFRadarChartData(CTRadarChart chart, Map categorie } private void defineAxes(Map categories, Map values) { - if (chart.sizeOfAxIdArray() == 0) { - for (Long id : categories.keySet()) { - chart.addNewAxId().setVal(id); - } - for (Long id : values.keySet()) { - chart.addNewAxId().setVal(id); - } - } - super.defineAxes(chart.getAxIdArray(), categories, values); + if (chart.sizeOfAxIdArray() == 0) { + for (Long id : categories.keySet()) { + chart.addNewAxId().setVal(id); + } + for (Long id : values.keySet()) { + chart.addNewAxId().setVal(id); + } + } + defineAxes(chart.getAxIdArray(), categories, values); } @Override diff --git a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java index dd9c2d930b6..7383226b74c 100644 --- a/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java +++ b/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java @@ -42,15 +42,15 @@ public XDDFScatterChartData(CTScatterChart chart, Map categ } private void defineAxes(Map categories, Map values) { - if (chart.sizeOfAxIdArray() == 0) { - for (Long id : categories.keySet()) { - chart.addNewAxId().setVal(id); - } - for (Long id : values.keySet()) { - chart.addNewAxId().setVal(id); - } - } - super.defineAxes(chart.getAxIdArray(), categories, values); + if (chart.sizeOfAxIdArray() == 0) { + for (Long id : categories.keySet()) { + chart.addNewAxId().setVal(id); + } + for (Long id : values.keySet()) { + chart.addNewAxId().setVal(id); + } + } + defineAxes(chart.getAxIdArray(), categories, values); } @Override @@ -111,6 +111,9 @@ protected CTSerTx getSeriesText() { return series.getTx(); } + /* + * @since 4.0.1 + */ public Boolean getSmooth() { if (series.isSetSmooth()) { return series.getSmooth().getVal(); @@ -119,6 +122,9 @@ public Boolean getSmooth() { } } + /* + * @since 4.0.1 + */ public void setSmooth(boolean smooth) { if (series.isSetSmooth()) { series.getSmooth().setVal(smooth);