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