You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ab...@apache.org on 2020/03/02 23:57:05 UTC

svn commit: r1874705 - in /poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart: XDDFChartData.java XDDFDataSource.java XDDFDataSourcesFactory.java XDDFNumericalDataSource.java

Author: abearez
Date: Mon Mar  2 23:57:05 2020
New Revision: 1874705

URL: http://svn.apache.org/viewvc?rev=1874705&view=rev
Log:
Allow for numerical category in charts

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

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java?rev=1874705&r1=1874704&r2=1874705&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartData.java Mon Mar  2 23:57:05 2020
@@ -211,7 +211,7 @@ public abstract class XDDFChartData {
         public void plot() {
             if (categoryData.isNumeric()) {
                 CTNumData cache = retrieveNumCache(getAxDS(), categoryData);
-                ((XDDFNumericalDataSource<?>) categoryData).fillNumericalCache(cache);
+                categoryData.fillNumericalCache(cache);
             } else {
                 CTStrData cache = retrieveStrCache(getAxDS(), categoryData);
                 categoryData.fillStringCache(cache);

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSource.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSource.java?rev=1874705&r1=1874704&r2=1874705&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSource.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSource.java Mon Mar  2 23:57:05 2020
@@ -21,6 +21,8 @@ package org.apache.poi.xddf.usermodel.ch
 
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.Internal;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumData;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumVal;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrData;
 import org.openxmlformats.schemas.drawingml.x2006.chart.CTStrVal;
 
@@ -50,6 +52,44 @@ public interface XDDFDataSource<T> {
 
     String getFormula();
 
+    String getFormatCode();
+
+    /**
+     * @since POI 4.1.3
+     */
+    @Internal
+    default void fillNumericalCache(CTNumData cache) {
+        String formatCode = getFormatCode();
+        if (formatCode == null) {
+            if (cache.isSetFormatCode()) {
+                cache.unsetFormatCode();
+            }
+        } else {
+            cache.setFormatCode(formatCode);
+        }
+        cache.setPtArray(null); // unset old values
+        final int numOfPoints = getPointCount();
+        int effectiveNumOfPoints = 0;
+        for (int i = 0; i < numOfPoints; ++i) {
+            Object value = getPointAt(i);
+            if (value != null) {
+                CTNumVal ctNumVal = cache.addNewPt();
+                ctNumVal.setIdx(i);
+                ctNumVal.setV(value.toString());
+                effectiveNumOfPoints++;
+            }
+        }
+        if (effectiveNumOfPoints == 0) {
+            cache.unsetPtCount();
+        } else {
+            if (cache.isSetPtCount()) {
+                cache.getPtCount().setVal(numOfPoints);
+            } else {
+                cache.addNewPtCount().setVal(numOfPoints);
+            }
+        }
+    }
+
     /**
      * @since POI 4.1.2
      */

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java?rev=1874705&r1=1874704&r2=1874705&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDataSourcesFactory.java Mon Mar  2 23:57:05 2020
@@ -45,6 +45,7 @@ public class XDDFDataSourcesFactory {
         if (categoryDS.getStrRef() == null) {
             return new XDDFCategoryDataSource() {
                 private CTNumData category = (CTNumData) categoryDS.getNumRef().getNumCache().copy();
+                private String formatCode = category.isSetFormatCode() ? category.getFormatCode() : null;
 
                 @Override
                 public boolean isCellRange() {
@@ -70,6 +71,9 @@ public class XDDFDataSourcesFactory {
                 public String getPointAt(int index) {
                     return category.getPtArray(index).getV();
                 }
+
+                @Override
+                public String getFormatCode() { return formatCode; }
             };
         } else {
             return new XDDFCategoryDataSource() {
@@ -94,6 +98,9 @@ public class XDDFDataSourcesFactory {
                 public String getPointAt(int index) {
                     return category.getPtArray(index).getV();
                 }
+
+                @Override
+                public String getFormatCode() { return null; }
             };
         }
     }
@@ -287,6 +294,9 @@ public class XDDFDataSourcesFactory {
         public String getFormula() {
             return getDataRangeReference();
         }
+
+        @Override
+        public String getFormatCode() { return null; }
     }
 
     private static class LiteralNumericalArrayDataSource<T extends Number> extends NumericalArrayDataSource<T> {
@@ -430,5 +440,8 @@ public class XDDFDataSourcesFactory {
         public boolean isNumeric() {
             return false;
         }
+
+        @Override
+        public String getFormatCode() { return null; }
     }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFNumericalDataSource.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFNumericalDataSource.java?rev=1874705&r1=1874704&r2=1874705&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFNumericalDataSource.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFNumericalDataSource.java Mon Mar  2 23:57:05 2020
@@ -26,48 +26,10 @@ import org.openxmlformats.schemas.drawin
 
 @Beta
 public interface XDDFNumericalDataSource<T extends Number> extends XDDFDataSource<T> {
-    String getFormatCode();
-
     void setFormatCode(String formatCode);
 
     @Override
     default boolean isLiteral() {
         return false;
     }
-
-    /**
-     * @since POI 4.1.2
-     */
-    @Internal
-    default void fillNumericalCache(CTNumData cache) {
-        String formatCode = getFormatCode();
-        if (formatCode == null) {
-            if (cache.isSetFormatCode()) {
-                cache.unsetFormatCode();
-            }
-        } else {
-            cache.setFormatCode(formatCode);
-        }
-        cache.setPtArray(null); // unset old values
-        final int numOfPoints = getPointCount();
-        int effectiveNumOfPoints = 0;
-        for (int i = 0; i < numOfPoints; ++i) {
-            Object value = getPointAt(i);
-            if (value != null) {
-                CTNumVal ctNumVal = cache.addNewPt();
-                ctNumVal.setIdx(i);
-                ctNumVal.setV(value.toString());
-                effectiveNumOfPoints++;
-            }
-        }
-        if (effectiveNumOfPoints == 0) {
-            cache.unsetPtCount();
-        } else {
-            if (cache.isSetPtCount()) {
-                cache.getPtCount().setVal(numOfPoints);
-            } else {
-                cache.addNewPtCount().setVal(numOfPoints);
-            }
-        }
-    }
 }



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