You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ce...@apache.org on 2021/09/10 06:15:30 UTC

svn commit: r1893212 - in /poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart: XDDFChartData.java XDDFDataSourcesFactory.java

Author: centic
Date: Fri Sep 10 06:15:30 2021
New Revision: 1893212

URL: http://svn.apache.org/viewvc?rev=1893212&view=rev
Log:
Improve error messages when charting data is not valid

Modified:
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java
    poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java?rev=1893212&r1=1893211&r2=1893212&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java Fri Sep 10 06:15:30 2021
@@ -166,7 +166,8 @@ public abstract class XDDFChartData {
             if (categoryData != null && values != null) {
                 int numOfPoints = category.getPointCount();
                 if (numOfPoints != values.getPointCount()) {
-                    throw new IllegalStateException("Category and values must have the same point count.");
+                    throw new IllegalStateException("Category and values must have the same point count, but had " +
+							numOfPoints + " categories and " + values.getPointCount() + " values.");
                 }
             }
             this.categoryData = category;

Modified: poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java?rev=1893212&r1=1893211&r2=1893212&view=diff
==============================================================================
--- poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java (original)
+++ poi/trunk/poi-ooxml/src/main/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java Fri Sep 10 06:15:30 2021
@@ -47,8 +47,8 @@ public class XDDFDataSourcesFactory {
         }
         if (categoryDS.getNumRef() != null && categoryDS.getNumRef().getNumCache() != null) {
             return new XDDFCategoryDataSource() {
-                private CTNumData category = (CTNumData) categoryDS.getNumRef().getNumCache().copy();
-                private String formatCode = category.isSetFormatCode() ? category.getFormatCode() : null;
+                private final CTNumData category = (CTNumData) categoryDS.getNumRef().getNumCache().copy();
+                private final String formatCode = category.isSetFormatCode() ? category.getFormatCode() : null;
 
                 @Override
                 public boolean isCellRange() {
@@ -72,6 +72,10 @@ public class XDDFDataSourcesFactory {
 
                 @Override
                 public String getPointAt(int index) {
+					if (category.getPtArray().length <= index) {
+						throw new IllegalArgumentException("Cannot access 0-based index " + index +
+								" in point-array with " + category.getPtArray().length + " items");
+					}
                     return category.getPtArray(index).getV();
                 }
 
@@ -80,7 +84,7 @@ public class XDDFDataSourcesFactory {
             };
         } else if (categoryDS.getStrRef() != null && categoryDS.getStrRef().getStrCache() != null) {
             return new XDDFCategoryDataSource() {
-                private CTStrData category = (CTStrData) categoryDS.getStrRef().getStrCache().copy();
+                private final CTStrData category = (CTStrData) categoryDS.getStrRef().getStrCache().copy();
 
                 @Override
                 public boolean isCellRange() {
@@ -107,8 +111,8 @@ public class XDDFDataSourcesFactory {
             };
         } else if (categoryDS.getNumLit() != null) {
             return new XDDFCategoryDataSource() {
-                private CTNumData category = (CTNumData) categoryDS.getNumLit().copy();
-                private String formatCode = category.isSetFormatCode() ? category.getFormatCode() : null;
+                private final CTNumData category = (CTNumData) categoryDS.getNumLit().copy();
+                private final String formatCode = category.isSetFormatCode() ? category.getFormatCode() : null;
 
                 @Override
                 public boolean isCellRange() {
@@ -150,7 +154,7 @@ public class XDDFDataSourcesFactory {
             };
         } else if (categoryDS.getStrLit() != null) {
             return new XDDFCategoryDataSource() {
-                private CTStrData category = (CTStrData) categoryDS.getStrLit().copy();
+                private final CTStrData category = (CTStrData) categoryDS.getStrLit().copy();
 
                 @Override
                 public boolean isCellRange() {
@@ -196,7 +200,7 @@ public class XDDFDataSourcesFactory {
         }
         if (valuesDS.getNumRef() != null && valuesDS.getNumRef().getNumCache() != null) {
             return new XDDFNumericalDataSource<Double>() {
-                private CTNumData values = (CTNumData) valuesDS.getNumRef().getNumCache().copy();
+                private final CTNumData values = (CTNumData) valuesDS.getNumRef().getNumCache().copy();
                 private String formatCode = values.isSetFormatCode() ? values.getFormatCode() : null;
 
                 @Override
@@ -246,7 +250,7 @@ public class XDDFDataSourcesFactory {
             };
         } else if (valuesDS.getNumLit() != null) {
             return new XDDFNumericalDataSource<Double>() {
-                private CTNumData values = (CTNumData) valuesDS.getNumLit().copy();
+                private final CTNumData values = (CTNumData) valuesDS.getNumLit().copy();
                 private String formatCode = values.isSetFormatCode() ? values.getFormatCode() : null;
 
                 @Override
@@ -457,7 +461,7 @@ public class XDDFDataSourcesFactory {
         private final XSSFSheet sheet;
         private final CellRangeAddress cellRangeAddress;
         private final int numOfCells;
-        private XSSFFormulaEvaluator evaluator;
+        private final XSSFFormulaEvaluator evaluator;
 
         protected AbstractCellRangeDataSource(XSSFSheet sheet, CellRangeAddress cellRangeAddress) {
             this.sheet = sheet;
@@ -530,7 +534,7 @@ public class XDDFDataSourcesFactory {
         public Double getPointAt(int index) {
             CellValue cellValue = getCellValueAt(index);
             if (cellValue != null && cellValue.getCellType() == CellType.NUMERIC) {
-                return Double.valueOf(cellValue.getNumberValue());
+                return cellValue.getNumberValue();
             } else {
                 return null;
             }



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org