Browse Source

code cleanup plus fix for bug 63153

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1859590 13f79535-47bb-0310-9956-ffa450edef68
pull/139/head
Alain Béarez 5 years ago
parent
commit
ee81606ae6
23 changed files with 871 additions and 311 deletions
  1. 1
    1
      src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java
  2. 2
    2
      src/examples/src/org/apache/poi/xslf/usermodel/PieChartDemo.java
  3. 6
    6
      src/examples/src/org/apache/poi/xssf/usermodel/examples/BarAndLineChart.java
  4. 1
    1
      src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java
  5. 1
    1
      src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFLinearShadeProperties.java
  6. 48
    0
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/Shape.java
  7. 61
    16
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFArea3DChartData.java
  8. 39
    19
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFAreaChartData.java
  9. 87
    18
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBar3DChartData.java
  10. 79
    23
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java
  11. 52
    11
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
  12. 57
    14
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java
  13. 44
    9
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLine3DChartData.java
  14. 22
    9
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java
  15. 33
    14
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPie3DChartData.java
  16. 58
    14
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPieChartData.java
  17. 24
    11
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java
  18. 25
    12
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java
  19. 38
    26
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSurface3DChartData.java
  20. 38
    26
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSurfaceChartData.java
  21. 145
    68
      src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFView3D.java
  22. 5
    5
      src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java
  23. 5
    5
      src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java

+ 1
- 1
src/examples/src/org/apache/poi/xslf/usermodel/BarChartDemo.java View File

@@ -108,7 +108,7 @@ public class BarChartDemo {
values1[6] = 16.0; // if you ever want to change the underlying data
final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, 2);

XDDFChartData.Series series1 = bar.getSeries().get(0);
XDDFChartData.Series series1 = bar.getSeries(0);
series1.replaceData(categoriesData, valuesData);
series1.setTitle(series[0], chart.setSheetTitle(series[0], 0));
XDDFChartData.Series series2 = bar.addSeries(categoriesData, valuesData2);

+ 2
- 2
src/examples/src/org/apache/poi/xslf/usermodel/PieChartDemo.java View File

@@ -98,10 +98,10 @@ public class PieChartDemo {
final XDDFDataSource<?> categoriesData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange);
final XDDFNumericalDataSource<? extends Number> valuesData = XDDFDataSourcesFactory.fromArray(values, valuesDataRange);

XDDFPieChartData.Series firstSeries = (XDDFPieChartData.Series) pie.getSeries().get(0);
XDDFPieChartData.Series firstSeries = (XDDFPieChartData.Series) pie.getSeries(0);
firstSeries.replaceData(categoriesData, valuesData);
firstSeries.setTitle(chartTitle, chart.setSheetTitle(chartTitle, 0));
firstSeries.setExplosion(25);
firstSeries.setExplosion(25L);
chart.plot(pie);

// save the result

+ 6
- 6
src/examples/src/org/apache/poi/xssf/usermodel/examples/BarAndLineChart.java View File

@@ -144,16 +144,16 @@ public class BarAndLineChart {
// the line chart on secondary axis
XDDFLineChartData lines = (XDDFLineChartData) chart.createData(ChartTypes.LINE, lineCategories,
rightValues);
//uncomment below line if only primary axis required and comment above line
//uncomment below line if only primary axis required and comment above line
// the line chart on primary axis
/*XDDFLineChartData lines = (XDDFLineChartData) chart.createData(ChartTypes.LINE, lineCategories,
leftValues);*/
XDDFLineChartData.Series series2 = (XDDFLineChartData.Series) lines.addSeries(xs, ys2);
series2.updateIdXVal(1);
series2.updateOrderVal(1);
series2.setIndex(1);
series2.setOrder(1);
series2.setTitle("Lines", new CellReference("Sheet1!$C$1"));
lines.setVaryColors(true);
chart.plot(lines);

+ 1
- 1
src/examples/src/org/apache/poi/xwpf/usermodel/examples/BarChartExample.java View File

@@ -110,7 +110,7 @@ public class BarChartExample {
values1[6] = 16.0; // if you ever want to change the underlying data
final XDDFNumericalDataSource<? extends Number> valuesData2 = XDDFDataSourcesFactory.fromArray(values2, valuesDataRange2, 2);

XDDFChartData.Series series1 = bar.getSeries().get(0);
XDDFChartData.Series series1 = bar.getSeries(0);
series1.replaceData(categoriesData, valuesData);
series1.setTitle(series[0], chart.setSheetTitle(series[0], 0));
XDDFChartData.Series series2 = bar.addSeries(categoriesData, valuesData2);

+ 1
- 1
src/ooxml/java/org/apache/poi/xddf/usermodel/XDDFLinearShadeProperties.java View File

@@ -52,7 +52,7 @@ public class XDDFLinearShadeProperties {
}
}

public Boolean getScaled() {
public Boolean isScaled() {
if (props.isSetScaled()) {
return props.getScaled();
} else {

+ 48
- 0
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/Shape.java View File

@@ -0,0 +1,48 @@
/* ====================================================================
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 java.util.HashMap;

import org.openxmlformats.schemas.drawingml.x2006.chart.STShape;

public enum Shape {
BOX(STShape.BOX),
CONE(STShape.CONE),
CONE_TO_MAX(STShape.CONE_TO_MAX),
CYLINDER(STShape.CYLINDER),
PYRAMID(STShape.PYRAMID),
PYRAMID_TO_MAX(STShape.PYRAMID_TO_MAX);

final STShape.Enum underlying;

Shape(STShape.Enum grouping) {
this.underlying = grouping;
}

private final static HashMap<STShape.Enum, Shape> reverse = new HashMap<>();
static {
for (Shape value : values()) {
reverse.put(value.underlying, value);
}
}

static Shape valueOf(STShape.Enum grouping) {
return reverse.get(grouping);
}
}

+ 61
- 16
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFArea3DChartData.java View File

@@ -20,6 +20,7 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTArea3DChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAreaSer;
@@ -52,26 +53,70 @@ public class XDDFArea3DChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

public Grouping getGrouping() {
return Grouping.valueOf(chart.getGrouping().getVal());
if (chart.isSetGrouping()) {
return Grouping.valueOf(chart.getGrouping().getVal());
} else {
return null;
}
}

public void setGrouping(Grouping grouping) {
if (chart.getGrouping() != null) {
chart.getGrouping().setVal(grouping.underlying);
} else {
chart.addNewGrouping().setVal(grouping.underlying);
}
}
public void setGrouping(Grouping grouping) {
if (grouping == null) {
if (chart.isSetGrouping()) {
chart.unsetGrouping();
}
} else {
if (chart.isSetGrouping()) {
chart.getGrouping().setVal(grouping.underlying);
} else {
chart.addNewGrouping().setVal(grouping.underlying);
}
}
}

public Integer getGapDepth() {
if (chart.isSetGapDepth()) {
return chart.getGapDepth().getVal();
} else {
return null;
}
}

public void setGapDepth(Integer depth) {
if (depth == null) {
if (chart.isSetGapDepth()) {
chart.unsetGapDepth();
}
} else {
if (chart.isSetGapDepth()) {
chart.getGapDepth().setVal(depth);
} else {
chart.addNewGapDepth().setVal(depth);
}
}
}

@Override
public XDDFChartData.Series addSeries(XDDFDataSource<?> category,
@@ -155,14 +200,14 @@ public class XDDFArea3DChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 39
- 19
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFAreaChartData.java View File

@@ -20,13 +20,11 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTAreaChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAreaSer;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxDataSource;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineSer;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTMarker;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx;

@@ -55,26 +53,48 @@ public class XDDFAreaChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

public Grouping getGrouping() {
return Grouping.valueOf(chart.getGrouping().getVal());
if (chart.isSetGrouping()) {
return Grouping.valueOf(chart.getGrouping().getVal());
} else {
return null;
}
}

public void setGrouping(Grouping grouping) {
if (chart.getGrouping() != null) {
chart.getGrouping().setVal(grouping.underlying);
} else {
chart.addNewGrouping().setVal(grouping.underlying);
}
}
public void setGrouping(Grouping grouping) {
if (grouping == null) {
if (chart.isSetGrouping()) {
chart.unsetGrouping();
}
} else {
if (chart.isSetGrouping()) {
chart.getGrouping().setVal(grouping.underlying);
} else {
chart.addNewGrouping().setVal(grouping.underlying);
}
}
}

@Override
public XDDFChartData.Series addSeries(XDDFDataSource<?> category,
@@ -158,14 +178,14 @@ public class XDDFAreaChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 87
- 18
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBar3DChartData.java View File

@@ -20,6 +20,7 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTBar3DChart;
@@ -55,12 +56,24 @@ public class XDDFBar3DChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

@@ -76,31 +89,87 @@ public class XDDFBar3DChartData extends XDDFChartData {
if (chart.isSetGrouping()) {
return BarGrouping.valueOf(chart.getGrouping().getVal());
} else {
return BarGrouping.STANDARD;
return null;
}
}

public void setBarGrouping(BarGrouping grouping) {
if (chart.isSetGrouping()) {
chart.getGrouping().setVal(grouping.underlying);
if (grouping == null) {
if (chart.isSetGrouping()) {
chart.unsetGrouping();
}
} else {
if (chart.isSetGrouping()) {
chart.getGrouping().setVal(grouping.underlying);
} else {
chart.addNewGrouping().setVal(grouping.underlying);
}
}
}

public Integer getGapDepth() {
if (chart.isSetGapDepth()) {
return chart.getGapDepth().getVal();
} else {
return null;
}
}

public void setGapDepth(Integer depth) {
if (depth == null) {
if (chart.isSetGapDepth()) {
chart.unsetGapDepth();
}
} else {
chart.addNewGrouping().setVal(grouping.underlying);
if (chart.isSetGapDepth()) {
chart.getGapDepth().setVal(depth);
} else {
chart.addNewGapDepth().setVal(depth);
}
}
}

public int getGapWidth() {
public Integer getGapWidth() {
if (chart.isSetGapWidth()) {
return chart.getGapWidth().getVal();
} else {
return 0;
return null;
}
}

public void setGapWidth(int width) {
if (chart.isSetGapWidth()) {
chart.getGapWidth().setVal(width);
public void setGapWidth(Integer width) {
if (width == null) {
if (chart.isSetGapWidth()) {
chart.unsetGapWidth();
}
} else {
if (chart.isSetGapWidth()) {
chart.getGapWidth().setVal(width);
} else {
chart.addNewGapWidth().setVal(width);
}
}
}

public Shape getShape() {
if (chart.isSetShape()) {
return Shape.valueOf(chart.getShape().getVal());
} else {
chart.addNewGapWidth().setVal(width);
return null;
}
}

public void setShape(Shape shape) {
if (shape == null) {
if (chart.isSetShape()) {
chart.unsetShape();
}
} else {
if (chart.isSetShape()) {
chart.getShape().setVal(shape.underlying);
} else {
chart.addNewShape().setVal(shape.underlying);
}
}
}

@@ -187,14 +256,14 @@ public class XDDFBar3DChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 79
- 23
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFBarChartData.java View File

@@ -20,6 +20,7 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTBarChart;
@@ -55,12 +56,24 @@ public class XDDFBarChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

@@ -76,31 +89,74 @@ public class XDDFBarChartData extends XDDFChartData {
if (chart.isSetGrouping()) {
return BarGrouping.valueOf(chart.getGrouping().getVal());
} else {
return BarGrouping.STANDARD;
return null;
}
}

public void setBarGrouping(BarGrouping grouping) {
if (chart.isSetGrouping()) {
chart.getGrouping().setVal(grouping.underlying);
if (grouping == null) {
if (chart.isSetGrouping()) {
chart.unsetGrouping();
}
} else {
chart.addNewGrouping().setVal(grouping.underlying);
if (chart.isSetGrouping()) {
chart.getGrouping().setVal(grouping.underlying);
} else {
chart.addNewGrouping().setVal(grouping.underlying);
}
}
}

public int getGapWidth() {
public Integer getGapWidth() {
if (chart.isSetGapWidth()) {
return chart.getGapWidth().getVal();
} else {
return 0;
return null;
}
}

public void setGapWidth(int width) {
if (chart.isSetGapWidth()) {
chart.getGapWidth().setVal(width);
public void setGapWidth(Integer width) {
if (width == null) {
if (chart.isSetGapWidth()) {
chart.unsetGapWidth();
}
} else {
chart.addNewGapWidth().setVal(width);
if (chart.isSetGapWidth()) {
chart.getGapWidth().setVal(width);
} else {
chart.addNewGapWidth().setVal(width);
}
}
}

public Byte getOverlap() {
if (chart.isSetOverlap()) {
return chart.getOverlap().getVal();
} else {
return null;
}
}

/**
* Minimum inclusive: -100
* <br/>
* Maximum inclusive: 100
* @param overlap
*/
public void setOverlap(Byte overlap) {
if (overlap == null) {
if (chart.isSetOverlap()) {
chart.unsetOverlap();
}
} else {
if (overlap < -100 || 100 < overlap) {
return;
}
if (chart.isSetOverlap()) {
chart.getOverlap().setVal(overlap);
} else {
chart.addNewOverlap().setVal(overlap);
}
}
}

@@ -187,15 +243,15 @@ public class XDDFBarChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
series.getOrder().setVal(val);
}
protected void setIndex(long index) {
series.getIdx().setVal(index);
}
@Override
protected void setOrder(long order) {
series.getOrder().setVal(order);
}
}
}

+ 52
- 11
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java View File

@@ -57,19 +57,26 @@ import org.apache.poi.xssf.usermodel.XSSFTable;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlOptions;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTArea3DChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAreaChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBar3DChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBarChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTCatAx;
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.CTLine3DChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTLineChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPie3DChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPieChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTRadarChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTScatterChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerAx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSurface;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSurface3DChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSurfaceChart;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTitle;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTValAx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTView3D;
@@ -83,7 +90,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTTableColumns;

@Beta
public abstract class XDDFChart extends POIXMLDocumentPart implements TextContainer {
/**
* default width of chart in emu
*/
@@ -93,7 +100,7 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
* default height of chart in emu
*/
public static final int DEFAULT_HEIGHT = 500000;
/**
* default x-coordinate of chart in emu
*/
@@ -103,7 +110,7 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
* default y-coordinate value of chart in emu
*/
public static final int DEFAULT_Y = 10;
/**
* Underlying workbook
*/
@@ -390,21 +397,46 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
Map<Long, XDDFChartAxis> categories = getCategoryAxes();
Map<Long, XDDFValueAxis> values = getValueAxes();

for (int i = 0; i < plotArea.sizeOfAreaChartArray(); i++) {
CTAreaChart areaChart = plotArea.getAreaChartArray(i);
series.add(new XDDFAreaChartData(areaChart, categories, values));
}

for (int i = 0; i < plotArea.sizeOfArea3DChartArray(); i++) {
CTArea3DChart areaChart = plotArea.getArea3DChartArray(i);
series.add(new XDDFArea3DChartData(areaChart, categories, values));
}

for (int i = 0; i < plotArea.sizeOfBarChartArray(); i++) {
CTBarChart barChart = plotArea.getBarChartArray(i);
series.add(new XDDFBarChartData(barChart, categories, values));
}

for (int i = 0; i < plotArea.sizeOfBar3DChartArray(); i++) {
CTBar3DChart barChart = plotArea.getBar3DChartArray(i);
series.add(new XDDFBar3DChartData(barChart, categories, values));
}

for (int i = 0; i < plotArea.sizeOfLineChartArray(); i++) {
CTLineChart lineChart = plotArea.getLineChartArray(i);
series.add(new XDDFLineChartData(lineChart, categories, values));
}

for (int i = 0; i < plotArea.sizeOfLine3DChartArray(); i++) {
CTLine3DChart lineChart = plotArea.getLine3DChartArray(i);
series.add(new XDDFLine3DChartData(lineChart, categories, values));
}

for (int i = 0; i < plotArea.sizeOfPieChartArray(); i++) {
CTPieChart pieChart = plotArea.getPieChartArray(i);
series.add(new XDDFPieChartData(pieChart));
}

for (int i = 0; i < plotArea.sizeOfPie3DChartArray(); i++) {
CTPie3DChart pieChart = plotArea.getPie3DChartArray(i);
series.add(new XDDFPie3DChartData(pieChart));
}

for (int i = 0; i < plotArea.sizeOfRadarChartArray(); i++) {
CTRadarChart radarChart = plotArea.getRadarChartArray(i);
series.add(new XDDFRadarChartData(radarChart, categories, values));
@@ -415,7 +447,17 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
series.add(new XDDFScatterChartData(scatterChart, categories, values));
}

// TODO repeat above code for all kind of charts
for (int i = 0; i < plotArea.sizeOfSurfaceChartArray(); i++) {
CTSurfaceChart surfaceChart = plotArea.getSurfaceChartArray(i);
series.add(new XDDFSurfaceChartData(surfaceChart, categories, values));
}

for (int i = 0; i < plotArea.sizeOfSurface3DChartArray(); i++) {
CTSurface3DChart surfaceChart = plotArea.getSurface3DChartArray(i);
series.add(new XDDFSurface3DChartData(surfaceChart, categories, values));
}

// TODO repeat above code for missing charts: Bubble, Doughnut, OfPie and Stock
return series;
}

@@ -453,7 +495,7 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
}

/**
* this method will return series axis with specified position
* this method will return series axis with specified position
*
* @param pos axis position Left, Right, Top, Bottom
* @return series axis with specified position
@@ -502,13 +544,12 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
public XDDFChartData createData(ChartTypes type, XDDFChartAxis category, XDDFValueAxis values) {
Map<Long, XDDFChartAxis> categories = null;
Map<Long, XDDFValueAxis> mapValues = null;
if(ChartTypes.PIE != type && ChartTypes.PIE3D != type)
{

if (ChartTypes.PIE != type && ChartTypes.PIE3D != type) {
categories = Collections.singletonMap(category.getId(), category);
mapValues = Collections.singletonMap(values.getId(), values);
}
final CTPlotArea plotArea = getCTPlotArea();
switch (type) {
case AREA:
@@ -796,9 +837,9 @@ public abstract class XDDFChart extends POIXMLDocumentPart implements TextContai
XSSFRow row = this.getRow(sheet, 0);
XSSFCell cell = this.getCell(row, column);
cell.setCellValue(title);
CTTable ctTable = this.getSheetTable(sheet);
this.updateSheetTable(ctTable, title, column);
return new CellReference(sheet.getSheetName(), 0, column, true, true);
}

+ 57
- 14
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java View File

@@ -20,10 +20,12 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.apache.poi.ss.util.CellReference;
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.CTNumData;
@@ -75,11 +77,62 @@ public abstract class XDDFChartData {
return valueAxes;
}

/**
* Calls to <code>getSeries().add(series)</code> or to <code>getSeries().remove(series)</code>
* may corrupt the workbook.
*
* <p>
* Instead, use the following methods:
* <ul>
* <li>{@link #getSeriesCount()}</li>
* <li>{@link #getSeries(int)}</li>
* <li>{@link #addSeries(XDDFDataSource,XDDFNumericalDataSource)}</li>
* <li>{@link #removeSeries(int)}</li>
* </ul>
*
* @deprecated since POI 4.1.1
* @return
*/
@Deprecated
public List<Series> getSeries() {
return series;
}

public abstract void setVaryColors(boolean varyColors);
public final int getSeriesCount() {
return series.size();
}

public final Series getSeries(int n) {
return series.get(n);
}

public final void removeSeries(int n) {
final String procName = "removeSeries";
if (n < 0 || series.size() <= n) {
throw new IllegalArgumentException(String.format(Locale.ROOT, "%s(%d): illegal index", procName, n));
}
series.remove(n);
removeCTSeries(n);
}

/**
* This method should be implemented in every class that extends <code>XDDFChartData</code>.
* <p>
* A typical implementation would be
*
* <pre><code>
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

* </code></pre>
*
* @param n
*/
@Internal
protected abstract void removeCTSeries(int n);

public abstract void setVaryColors(Boolean varyColors);

public abstract XDDFChartData.Series addSeries(XDDFDataSource<?> category,
XDDFNumericalDataSource<? extends Number> values);
@@ -98,19 +151,9 @@ public abstract class XDDFChartData {

protected abstract CTNumDataSource getNumDS();

/**
* This method will update series id value
*
* @param val
*/
public abstract void updateIdXVal(long val);

/**
* this method will update series order value
*
* @param val
*/
public abstract void updateOrderVal(long val);
protected abstract void setIndex(long index);

protected abstract void setOrder(long order);

protected Series(XDDFDataSource<?> category, XDDFNumericalDataSource<? extends Number> values) {
replaceData(category, values);

+ 44
- 9
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLine3DChartData.java View File

@@ -20,6 +20,7 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTLine3DChart;
@@ -53,12 +54,24 @@ public class XDDFLine3DChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

@@ -74,6 +87,28 @@ public class XDDFLine3DChartData extends XDDFChartData {
}
}

public Integer getGapDepth() {
if (chart.isSetGapDepth()) {
return chart.getGapDepth().getVal();
} else {
return null;
}
}

public void setGapDepth(Integer depth) {
if (depth == null) {
if (chart.isSetGapDepth()) {
chart.unsetGapDepth();
}
} else {
if (chart.isSetGapDepth()) {
chart.getGapDepth().setVal(depth);
} else {
chart.addNewGapDepth().setVal(depth);
}
}
}

@Override
public XDDFChartData.Series addSeries(XDDFDataSource<?> category,
XDDFNumericalDataSource<? extends Number> values) {
@@ -148,7 +183,7 @@ public class XDDFLine3DChartData extends XDDFChartData {
}


public Boolean getSmooth() {
public Boolean isSmooth() {
if (series.isSetSmooth()) {
return series.getSmooth().getVal();
} else {
@@ -217,14 +252,14 @@ public class XDDFLine3DChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 22
- 9
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFLineChartData.java View File

@@ -20,6 +20,7 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTLineChart;
@@ -53,12 +54,24 @@ public class XDDFLineChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

@@ -150,7 +163,7 @@ public class XDDFLineChartData extends XDDFChartData {
/**
* @since 4.0.1
*/
public Boolean getSmooth() {
public Boolean isSmooth() {
if (series.isSetSmooth()) {
return series.getSmooth().getVal();
} else {
@@ -219,14 +232,14 @@ public class XDDFLineChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 33
- 14
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPie3DChartData.java View File

@@ -18,6 +18,7 @@
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.CTNumDataSource;
@@ -36,12 +37,24 @@ public class XDDFPie3DChartData extends XDDFChartData {
}
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

@@ -118,19 +131,25 @@ public class XDDFPie3DChartData extends XDDFChartData {
}
}

public long getExplosion() {
public Long getExplosion() {
if (series.isSetExplosion()) {
return series.getExplosion().getVal();
} else {
return 0;
return null;
}
}

public void setExplosion(long explosion) {
if (series.isSetExplosion()) {
series.getExplosion().setVal(explosion);
public void setExplosion(Long explosion) {
if (explosion == null) {
if (series.isSetExplosion()) {
series.unsetExplosion();
}
} else {
series.addNewExplosion().setVal(explosion);
if (series.isSetExplosion()) {
series.getExplosion().setVal(explosion);
} else {
series.addNewExplosion().setVal(explosion);
}
}
}

@@ -143,14 +162,14 @@ public class XDDFPie3DChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 58
- 14
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFPieChartData.java View File

@@ -18,6 +18,7 @@
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.CTNumDataSource;
@@ -36,12 +37,49 @@ public class XDDFPieChartData extends XDDFChartData {
}
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

public Integer getFirstSliceAngle() {
if (chart.isSetFirstSliceAng()) {
return chart.getFirstSliceAng().getVal();
} else {
return null;
}
}

public void setFirstSliceAngle(Integer angle) {
if (angle == null) {
if (chart.isSetFirstSliceAng()) {
chart.unsetFirstSliceAng();
}
} else {
if (angle < 0 || 360 < angle) {
throw new IllegalArgumentException("angle must be between 0 and 360");
}
if (chart.isSetFirstSliceAng()) {
chart.getFirstSliceAng().setVal(angle);
} else {
chart.addNewFirstSliceAng().setVal(angle);
}
}
}

@@ -118,19 +156,25 @@ public class XDDFPieChartData extends XDDFChartData {
}
}

public long getExplosion() {
public Long getExplosion() {
if (series.isSetExplosion()) {
return series.getExplosion().getVal();
} else {
return 0;
return null;
}
}

public void setExplosion(long explosion) {
if (series.isSetExplosion()) {
series.getExplosion().setVal(explosion);
public void setExplosion(Long explosion) {
if (explosion == null) {
if (series.isSetExplosion()) {
series.unsetExplosion();
}
} else {
series.addNewExplosion().setVal(explosion);
if (series.isSetExplosion()) {
series.getExplosion().setVal(explosion);
} else {
series.addNewExplosion().setVal(explosion);
}
}
}

@@ -143,14 +187,14 @@ public class XDDFPieChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 24
- 11
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFRadarChartData.java View File

@@ -20,6 +20,7 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTNumDataSource;
@@ -53,12 +54,24 @@ public class XDDFRadarChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

@@ -156,15 +169,15 @@ public class XDDFRadarChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
series.getOrder().setVal(val);
}
@Override
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}
}

+ 25
- 12
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFScatterChartData.java View File

@@ -20,6 +20,7 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTMarker;
@@ -54,12 +55,24 @@ public class XDDFScatterChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

@Internal
@Override
public void setVaryColors(boolean varyColors) {
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

@Override
public void setVaryColors(Boolean varyColors) {
if (varyColors == null) {
if (chart.isSetVaryColors()) {
chart.unsetVaryColors();
}
} else {
chart.addNewVaryColors().setVal(varyColors);
if (chart.isSetVaryColors()) {
chart.getVaryColors().setVal(varyColors);
} else {
chart.addNewVaryColors().setVal(varyColors);
}
}
}

@@ -119,7 +132,7 @@ public class XDDFScatterChartData extends XDDFChartData {
/**
* @since 4.0.1
*/
public Boolean getSmooth() {
public Boolean isSmooth() {
if (series.isSetSmooth()) {
return series.getSmooth().getVal();
} else {
@@ -228,15 +241,15 @@ public class XDDFScatterChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getYVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
series.getOrder().setVal(val);
}
@Override
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}
}

+ 38
- 26
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSurface3DChartData.java View File

@@ -20,9 +20,9 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTBoolean;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSurface3DChart;
@@ -52,35 +52,47 @@ public class XDDFSurface3DChartData extends XDDFChartData {
}
defineAxes(chart.getAxIdArray(), categories, values);
}
public void setSeriesAxisId(XDDFSeriesAxis seriesAxis) {
chart.addNewAxId().setVal(seriesAxis.getId());

@Internal
@Override
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

/**
* Surface chart is not supporting vary color property.
*/
@Override
public void setVaryColors(Boolean varyColors) {
// nothing to do
}
public CTBoolean getWireframe() {

public void defineSeriesAxis(XDDFSeriesAxis seriesAxis) {
chart.addNewAxId().setVal(seriesAxis.getId());
}

public Boolean isWireframe() {
if (chart.isSetWireframe()) {
return chart.getWireframe();
return chart.getWireframe().getVal();
} else {
return chart.addNewWireframe();
return null;
}
}

public void setWireframe(boolean val) {
if (chart.isSetWireframe()) {
chart.getWireframe().setVal(val);
public void setWireframe(Boolean show) {
if (show == null) {
if (chart.isSetWireframe()) {
chart.unsetWireframe();
}
} else {
chart.addNewWireframe().setVal(val);
if (chart.isSetWireframe()) {
chart.getWireframe().setVal(show);
} else {
chart.addNewWireframe().setVal(show);
}
}
}

/**
* Surface chart is not supporting vary color property
*/
@Override
public void setVaryColors(boolean varyColors) {
}

@Override
public XDDFChartData.Series addSeries(XDDFDataSource<?> category,
XDDFNumericalDataSource<? extends Number> values) {
@@ -119,11 +131,11 @@ public class XDDFSurface3DChartData extends XDDFChartData {
}

/**
* Surface chart is not supporting vary show leader lines property
* Surface chart is not supporting show leader lines property
*/
@Override
public void setShowLeaderLines(boolean showLeaderLines) {
// nothing to do
}

@Override
@@ -159,14 +171,14 @@ public class XDDFSurface3DChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 38
- 26
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSurfaceChartData.java View File

@@ -20,9 +20,9 @@ package org.apache.poi.xddf.usermodel.chart;
import java.util.Map;

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.CTBoolean;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumDataSource;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerTx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTSurfaceChart;
@@ -31,7 +31,6 @@ import org.openxmlformats.schemas.drawingml.x2006.chart.CTSurfaceSer;
@Beta
public class XDDFSurfaceChartData extends XDDFChartData {
private CTSurfaceChart chart;

public XDDFSurfaceChartData(CTSurfaceChart chart, Map<Long, XDDFChartAxis> categories,
Map<Long, XDDFValueAxis> values) {
this.chart = chart;
@@ -40,6 +39,7 @@ public class XDDFSurfaceChartData extends XDDFChartData {
}
defineAxes(categories, values);
}

private void defineAxes(Map<Long, XDDFChartAxis> categories, Map<Long, XDDFValueAxis> values) {
if (chart.sizeOfAxIdArray() == 0) {
for (Long id : categories.keySet()) {
@@ -52,34 +52,46 @@ public class XDDFSurfaceChartData extends XDDFChartData {
defineAxes(chart.getAxIdArray(), categories, values);
}

public void setSeriesAxisId(XDDFSeriesAxis seriesAxis) {
chart.addNewAxId().setVal(seriesAxis.getId());
@Internal
@Override
protected void removeCTSeries(int n) {
chart.removeSer(n);
}

/**
* Surface chart is not supporting vary color property.
*/
@Override
public void setVaryColors(Boolean varyColors) {
// nothing to do
}

public void defineSeriesAxis(XDDFSeriesAxis seriesAxis) {
chart.addNewAxId().setVal(seriesAxis.getId());
}
public CTBoolean getWireframe() {
public Boolean isWireframe() {
if (chart.isSetWireframe()) {
return chart.getWireframe();
return chart.getWireframe().getVal();
} else {
return chart.addNewWireframe();
return null;
}
}

public void setWireframe(boolean val) {
if (chart.isSetWireframe()) {
chart.getWireframe().setVal(val);
public void setWireframe(Boolean show) {
if (show == null) {
if (chart.isSetWireframe()) {
chart.unsetWireframe();
}
} else {
chart.addNewWireframe().setVal(val);
if (chart.isSetWireframe()) {
chart.getWireframe().setVal(show);
} else {
chart.addNewWireframe().setVal(show);
}
}
}

/**
* Surface chart is not supporting vary color property
*/
@Override
public void setVaryColors(boolean varyColors) {
}

@Override
public XDDFChartData.Series addSeries(XDDFDataSource<?> category,
XDDFNumericalDataSource<? extends Number> values) {
@@ -118,11 +130,11 @@ public class XDDFSurfaceChartData extends XDDFChartData {
}

/**
* Surface chart is not supporting vary show leader lines property
* Surface chart is not supporting show leader lines property
*/
@Override
public void setShowLeaderLines(boolean showLeaderLines) {
// nothing to do
}

@Override
@@ -158,14 +170,14 @@ public class XDDFSurfaceChartData extends XDDFChartData {
protected CTNumDataSource getNumDS() {
return series.getVal();
}
@Override
public void updateIdXVal(long val) {
public void setIndex(long val) {
series.getIdx().setVal(val);
}
@Override
public void updateOrderVal(long val) {
public void setOrder(long val) {
series.getOrder().setVal(val);
}
}

+ 145
- 68
src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFView3D.java View File

@@ -19,85 +19,162 @@

package org.apache.poi.xddf.usermodel.chart;

import org.apache.poi.util.Internal;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTView3D;


public class XDDFView3D {
private final CTView3D view3D;

public XDDFView3D(CTView3D view3D) {
@Internal
protected XDDFView3D(CTView3D view3D) {
this.view3D = view3D;
}
public int getXRotationAngle() {
return view3D.getRotX().getVal();

public Byte getXRotationAngle() {
if (view3D.isSetRotX()) {
return view3D.getRotX().getVal();
} else {
return null;
}
}

public void setXRotationAngle(Byte rotation) {
if (rotation == null) {
if (view3D.isSetRotX()) {
view3D.unsetRotX();
}
} else {
if (rotation < -90 || 90 < rotation) {
throw new IllegalArgumentException("rotation must be between -90 and 90");
}
if (view3D.isSetRotX()) {
view3D.getRotX().setVal(rotation);
} else {
view3D.addNewRotX().setVal(rotation);
}
}
}

public Integer getYRotationAngle() {
if (view3D.isSetRotY()) {
return view3D.getRotY().getVal();
} else {
return null;
}
}

public void setYRotationAngle(Integer rotation) {
if (rotation == null) {
if (view3D.isSetRotY()) {
view3D.unsetRotY();
}
} else {
if (rotation < 0 || 360 < rotation) {
throw new IllegalArgumentException("rotation must be between 0 and 360");
}
if (view3D.isSetRotY()) {
view3D.getRotY().setVal(rotation);
} else {
view3D.addNewRotY().setVal(rotation);
}
}
}

public Boolean hasRightAngleAxes() {
if (view3D.isSetRAngAx()) {
return view3D.getRAngAx().getVal();
} else {
return null;
}
}

public void setRightAngleAxes(Boolean rightAngles) {
if (rightAngles == null) {
if (view3D.isSetRAngAx()) {
view3D.unsetRAngAx();
}
} else {
if (view3D.isSetRAngAx()) {
view3D.getRAngAx().setVal(rightAngles);
} else {
view3D.addNewRAngAx().setVal(rightAngles);
}
}
}
public void setXRotationAngle(int val) {
if (view3D.isSetRotY()) {
view3D.getRotY().setVal(val);
} else {
view3D.addNewRotY().setVal(val);
}
}
public int getYRotationAngle() {
return view3D.getRotY().getVal();

public Short getPerspectiveAngle() {
if (view3D.isSetPerspective()) {
return view3D.getPerspective().getVal();
} else {
return null;
}
}

public void setPerspectiveAngle(Short perspective) {
if (perspective == null) {
if (view3D.isSetPerspective()) {
view3D.unsetPerspective();
}
} else {
if (perspective < 0 || 240 < perspective) {
throw new IllegalArgumentException("perspective must be between 0 and 240");
}
if (view3D.isSetPerspective()) {
view3D.getPerspective().setVal(perspective);
} else {
view3D.addNewPerspective().setVal(perspective);
}
}
}
public void setYRotationAngle(int val) {
if (view3D.isSetRotY()) {
view3D.getRotY().setVal(val);
} else {
view3D.addNewRotY().setVal(val);
}
}
public boolean getRightAngleAxes() {
return view3D.getRAngAx().getVal();

public Integer getDepthPercent() {
if (view3D.isSetDepthPercent()) {
return view3D.getDepthPercent().getVal();
} else {
return null;
}
}
public void setRightAngleAxes(boolean val) {
if (view3D.isSetRAngAx()) {
view3D.getRAngAx().setVal(val);
} else {
view3D.addNewRAngAx().setVal(val);
}
}
public short getPerspectiveAngle() {
return view3D.getPerspective().getVal();

public void setDepthPercent(Integer percent) {
if (percent == null) {
if (view3D.isSetDepthPercent()) {
view3D.unsetDepthPercent();
}
} else {
if (percent < 20 || 2000 < percent) {
throw new IllegalArgumentException("percent must be between 20 and 2000");
}
if (view3D.isSetDepthPercent()) {
view3D.getDepthPercent().setVal(percent);
} else {
view3D.addNewDepthPercent().setVal(percent);
}
}
}
public void setPerspectiveAngle(short val) {
if (view3D.isSetPerspective()) {
view3D.getPerspective().setVal(val);
} else {
view3D.addNewPerspective().setVal(val);
}
}
public int getDepthPercentVal() {
return view3D.getDepthPercent().getVal();

public Integer getHPercent() {
if (view3D.isSetHPercent()) {
return view3D.getHPercent().getVal();
} else {
return null;
}
}
public void setDepthPercent(int val) {
if (view3D.isSetDepthPercent()) {
view3D.getDepthPercent().setVal(val);
} else {
view3D.addNewDepthPercent().setVal(val);
}
}
public int getHeightPercent() {
return view3D.getHPercent().getVal();

public void setHPercent(Integer percent) {
if (percent == null) {
if (view3D.isSetHPercent()) {
view3D.unsetHPercent();
}
} else {
if (percent < 5 || 500 < percent) {
throw new IllegalArgumentException("percent must be between 5 and 500");
}
if (view3D.isSetHPercent()) {
view3D.getHPercent().setVal(percent);
} else {
view3D.addNewHPercent().setVal(percent);
}
}
}
public void setHeightPercent(int val) {
if (view3D.isSetHPercent()) {
view3D.getHPercent().setVal(val);
} else {
view3D.addNewHPercent().setVal(val);
}
}

}

+ 5
- 5
src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXSLFChart.java View File

@@ -67,9 +67,9 @@ public class TestXSLFChart {
List<XDDFChartData> data = findChartData(chart);

XDDFPieChartData pie = (XDDFPieChartData) data.get(0);
XDDFPieChartData.Series firstSeries = (XDDFPieChartData.Series) pie.getSeries().get(0);
firstSeries.setExplosion(25);
assertEquals(25, firstSeries.getExplosion());
XDDFPieChartData.Series firstSeries = (XDDFPieChartData.Series) pie.getSeries(0);
firstSeries.setExplosion(25L);
assertEquals(Long.valueOf(25), firstSeries.getExplosion());

fillChartData(chart, pie);
pptx.close();
@@ -87,7 +87,7 @@ public class TestXSLFChart {
XDDFBarChartData bar = (XDDFBarChartData) data.get(0);
assertEquals(BarDirection.BAR, bar.getBarDirection());
assertEquals(BarGrouping.CLUSTERED, bar.getBarGrouping());
assertEquals(100, bar.getGapWidth());
assertEquals(Integer.valueOf(100), bar.getGapWidth());
fillChartData(chart, bar);

XDDFBarChartData column = (XDDFBarChartData) findChartData(chart2).get(0);
@@ -153,7 +153,7 @@ public class TestXSLFChart {
final String categoryDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, 0, 0));
final String valuesDataRange = chart.formatRange(new CellRangeAddress(1, numOfPoints, 1, 1));

final XDDFChartData.Series series = data.getSeries().get(0);
final XDDFChartData.Series series = data.getSeries(0);
final XDDFDataSource<?> categoryData = XDDFDataSourcesFactory.fromArray(categories, categoryDataRange);
final XDDFNumericalDataSource<Integer> valuesData = XDDFDataSourcesFactory.fromArray(values, valuesDataRange);
series.replaceData(categoryData, valuesData);

+ 5
- 5
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFWorkbook.java View File

@@ -713,7 +713,7 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
assertNotNull(read);
assertSheetOrder(read, "Sheet1-Renamed", "Sheet2", "Sheet3");
XSSFSheet sheet = (XSSFSheet) read.getSheet("Sheet1-Renamed");
XDDFChartData.Series series = sheet.getDrawingPatriarch().getCharts().get(0).getChartSeries().get(0).getSeries().get(0);
XDDFChartData.Series series = sheet.getDrawingPatriarch().getCharts().get(0).getChartSeries().get(0).getSeries(0);
assertTrue("should be a bar chart data series", series instanceof XDDFBarChartData.Series);
String formula = ((XDDFBarChartData.Series) series).getCategoryData().getFormula();
assertTrue("should contain new sheet name", formula.startsWith("'Sheet1-Renamed'!"));
@@ -1142,7 +1142,7 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {

wb.close();
}
/**
* See bug #61700
* @throws Exception
@@ -1152,14 +1152,14 @@ public final class TestXSSFWorkbook extends BaseTestXWorkbook {
Workbook workbook = _testDataProvider.createWorkbook();
workbook.createSheet().createRow(0).createCell(0).setCellFormula("B1+C1");
workbook.getCreationHelper().createFormulaEvaluator().evaluateAll();
assertFalse(workbook.getForceFormulaRecalculation());
workbook.setForceFormulaRecalculation(true);
assertTrue(workbook.getForceFormulaRecalculation());
Workbook wbBack = _testDataProvider.writeOutAndReadBack(workbook);
assertTrue(wbBack.getForceFormulaRecalculation());
workbook.close();
wbBack.close();
}

Loading…
Cancel
Save