Author: abearez Date: Sat Nov 30 15:46:48 2019 New Revision: 1870628 URL: http://svn.apache.org/viewvc?rev=1870628&view=rev Log: Add Doughnut chart data series to XDDF
Added: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDoughnutChartData.java Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/ChartTypes.java poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestNecessaryOOXMLClasses.java Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/ChartTypes.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/ChartTypes.java?rev=1870628&r1=1870627&r2=1870628&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/ChartTypes.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/ChartTypes.java Sat Nov 30 15:46:48 2019 @@ -21,6 +21,7 @@ public enum ChartTypes { AREA3D, BAR, BAR3D, + DOUGHNUT, LINE, LINE3D, PIE, Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java?rev=1870628&r1=1870627&r2=1870628&view=diff ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java (original) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java Sat Nov 30 15:46:48 2019 @@ -65,6 +65,7 @@ import org.openxmlformats.schemas.drawin import org.openxmlformats.schemas.drawingml.x2006.chart.CTChart; import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartSpace; import org.openxmlformats.schemas.drawingml.x2006.chart.CTDateAx; +import org.openxmlformats.schemas.drawingml.x2006.chart.CTDoughnutChart; import org.openxmlformats.schemas.drawingml.x2006.chart.CTLine3DChart; import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart; import org.openxmlformats.schemas.drawingml.x2006.chart.CTPie3DChart; @@ -426,6 +427,11 @@ public abstract class XDDFChart extends series.add(new XDDFBar3DChartData(this, barChart, categories, values)); } + for (int i = 0; i < plotArea.sizeOfDoughnutChartArray(); i++) { + CTDoughnutChart doughnutChart = plotArea.getDoughnutChartArray(i); + series.add(new XDDFDoughnutChartData(this, doughnutChart)); + } + for (int i = 0; i < plotArea.sizeOfLineChartArray(); i++) { CTLineChart lineChart = plotArea.getLineChartArray(i); series.add(new XDDFLineChartData(this, lineChart, categories, values)); @@ -465,7 +471,7 @@ public abstract class XDDFChart extends CTSurface3DChart surfaceChart = plotArea.getSurface3DChartArray(i); series.add(new XDDFSurface3DChartData(this, surfaceChart, categories, values)); } - // TODO repeat above code for missing charts: Bubble, Doughnut, OfPie and Stock + // TODO repeat above code for missing charts: Bubble, OfPie and Stock seriesCount = series.size(); return series; @@ -578,6 +584,8 @@ public abstract class XDDFChart extends return new XDDFBarChartData(this, plotArea.addNewBarChart(), categories, mapValues); case BAR3D: return new XDDFBar3DChartData(this, plotArea.addNewBar3DChart(), categories, mapValues); + case DOUGHNUT: + return new XDDFDoughnutChartData(this, plotArea.addNewDoughnutChart()); case LINE: return new XDDFLineChartData(this, plotArea.addNewLineChart(), categories, mapValues); case LINE3D: @@ -594,7 +602,7 @@ public abstract class XDDFChart extends return new XDDFSurfaceChartData(this, plotArea.addNewSurfaceChart(), categories, mapValues); case SURFACE3D: return new XDDFSurface3DChartData(this, plotArea.addNewSurface3DChart(), categories, mapValues); - // TODO repeat above code for missing charts: Bubble, Doughnut, OfPie and Stock + // TODO repeat above code for missing charts: Bubble, OfPie and Stock default: return null; } Added: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDoughnutChartData.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDoughnutChartData.java?rev=1870628&view=auto ============================================================================== --- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDoughnutChartData.java (added) +++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDoughnutChartData.java Sat Nov 30 15:46:48 2019 @@ -0,0 +1,172 @@ +/* ==================================================================== + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You 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. +==================================================================== */ + +package org.apache.poi.xddf.usermodel.chart; + +import org.apache.poi.util.Beta; +import org.apache.poi.util.Internal; +import org.apache.poi.xddf.usermodel.XDDFShapeProperties; +import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource; +import org.openxmlformats.schemas.drawingml.x2006.chart.CTDoughnutChart; +import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource; +import org.openxmlformats.schemas.drawingml.x2006.chart.CTPieSer; +import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx; + +@Beta +public class XDDFDoughnutChartData extends XDDFChartData { + private CTDoughnutChart chart; + + @Internal + protected XDDFDoughnutChartData(XDDFChart parent, CTDoughnutChart chart) { + super(parent); + this.chart = chart; + for (CTPieSer series : chart.getSerList()) { + this.series.add(new Series(series, series.getCat(), series.getVal())); + } + } + + @Internal + @Override + protected void removeCTSeries(int n) { + chart.removeSer(n); + } + + @Override + public void setVaryColors(Boolean varyColors) { + if (varyColors == null) { + if (chart.isSetVaryColors()) { + chart.unsetVaryColors(); + } + } else { + if (chart.isSetVaryColors()) { + chart.getVaryColors().setVal(varyColors); + } else { + chart.addNewVaryColors().setVal(varyColors); + } + } + } + + @Override + public XDDFChartData.Series addSeries(XDDFDataSource<?> category, + XDDFNumericalDataSource<? extends Number> values) { + final int index = this.series.size(); + final CTPieSer ctSer = this.chart.addNewSer(); + ctSer.addNewCat(); + ctSer.addNewVal(); + ctSer.addNewIdx().setVal(index); + ctSer.addNewOrder().setVal(index); + final Series added = new Series(ctSer, category, values); + this.series.add(added); + return added; + } + + public class Series extends XDDFChartData.Series { + private CTPieSer series; + + protected Series(CTPieSer series, XDDFDataSource<?> category, + XDDFNumericalDataSource<? extends Number> values) { + super(category, values); + this.series = series; + } + + protected Series(CTPieSer series, CTAxDataSource category, CTNumDataSource values) { + super(XDDFDataSourcesFactory.fromDataSource(category), XDDFDataSourcesFactory.fromDataSource(values)); + this.series = series; + } + + @Override + protected CTSerTx getSeriesText() { + if (series.isSetTx()) { + return series.getTx(); + } else { + return series.addNewTx(); + } + } + + @Override + public void setShowLeaderLines(boolean showLeaderLines) { + if (!series.isSetDLbls()) { + series.addNewDLbls(); + } + if (series.getDLbls().isSetShowLeaderLines()) { + series.getDLbls().getShowLeaderLines().setVal(showLeaderLines); + } else { + series.getDLbls().addNewShowLeaderLines().setVal(showLeaderLines); + } + } + + @Override + public XDDFShapeProperties getShapeProperties() { + if (series.isSetSpPr()) { + return new XDDFShapeProperties(series.getSpPr()); + } else { + return null; + } + } + + @Override + public void setShapeProperties(XDDFShapeProperties properties) { + if (properties == null) { + if (series.isSetSpPr()) { + series.unsetSpPr(); + } + } else { + if (series.isSetSpPr()) { + series.setSpPr(properties.getXmlObject()); + } else { + series.addNewSpPr().set(properties.getXmlObject()); + } + } + } + + public long getExplosion() { + if (series.isSetExplosion()) { + return series.getExplosion().getVal(); + } else { + return 0; + } + } + + public void setExplosion(long explosion) { + if (series.isSetExplosion()) { + series.getExplosion().setVal(explosion); + } else { + series.addNewExplosion().setVal(explosion); + } + } + + @Override + protected CTAxDataSource getAxDS() { + return series.getCat(); + } + + @Override + protected CTNumDataSource getNumDS() { + return series.getVal(); + } + + @Override + protected void setIndex(long val) { + series.getIdx().setVal(val); + } + + @Override + protected void setOrder(long val) { + series.getOrder().setVal(val); + } + } +} Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestNecessaryOOXMLClasses.java URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestNecessaryOOXMLClasses.java?rev=1870628&r1=1870627&r2=1870628&view=diff ============================================================================== --- poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestNecessaryOOXMLClasses.java (original) +++ poi/trunk/src/ooxml/testcases/org/apache/poi/xddf/usermodel/TestNecessaryOOXMLClasses.java Sat Nov 30 15:46:48 2019 @@ -97,6 +97,8 @@ public class TestNecessaryOOXMLClasses { Assert.assertNotNull(ctArea3DChart); CTSurfaceChart ctSurfaceChart = CTSurfaceChart.Factory.newInstance(); Assert.assertNotNull(ctSurfaceChart); + CTDoughnutChart ctDoughnutChart = CTDoughnutChart.Factory.newInstance(); + Assert.assertNotNull(ctDoughnutChart); CTBar3DChart ctBar3DChart = CTBar3DChart.Factory.newInstance(); Assert.assertNotNull(ctBar3DChart); CTLine3DChart ctLine3DChart = CTLine3DChart.Factory.newInstance(); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org