Author: abearez
Date: Mon Feb 12 12:59:38 2018
New Revision: 1823963
URL: http://svn.apache.org/viewvc?rev=1823963&view=rev
Log:
[bug-57369] support for major and minor unit on XDDFChart axes
Added:
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSeriesAxis.java
- copied, changed from r1823920,
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChart.java
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartAxis.java
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDateAxis.java
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFValueAxis.java
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java?rev=1823963&r1=1823962&r2=1823963&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java
Mon Feb 12 12:59:38 2018
@@ -80,6 +80,36 @@ public class XDDFCategoryAxis extends XD
}
@Override
+ public boolean isSetMinorUnit() {
+ return false;
+ }
+
+ @Override
+ public void setMinorUnit(double minor) {
+ // nothing
+ }
+
+ @Override
+ public double getMinorUnit() {
+ return Double.NaN;
+ }
+
+ @Override
+ public boolean isSetMajorUnit() {
+ return false;
+ }
+
+ @Override
+ public void setMajorUnit(double major) {
+ // nothing
+ }
+
+ @Override
+ public double getMajorUnit() {
+ return Double.NaN;
+ }
+
+ @Override
public void crossAxis(XDDFChartAxis axis) {
ctCatAx.getCrossAx().setVal(axis.getId());
}
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=1823963&r1=1823962&r2=1823963&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
Mon Feb 12 12:59:38 2018
@@ -62,6 +62,7 @@ import org.openxmlformats.schemas.drawin
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.CTValAx;
import org.openxmlformats.schemas.drawingml.x2006.chart.ChartSpaceDocument;
@@ -359,18 +360,47 @@ public abstract class XDDFChart extends
}
private void parseAxes() {
- // TODO: add other axis types
for (CTCatAx catAx : chart.getPlotArea().getCatAxArray()) {
axes.add(new XDDFCategoryAxis(catAx));
}
for (CTDateAx dateAx : chart.getPlotArea().getDateAxArray()) {
axes.add(new XDDFDateAxis(dateAx));
}
+ for (CTSerAx serAx : chart.getPlotArea().getSerAxArray()) {
+ axes.add(new XDDFSeriesAxis(serAx));
+ }
for (CTValAx valAx : chart.getPlotArea().getValAxArray()) {
axes.add(new XDDFValueAxis(valAx));
}
}
+ /**
+ * Set value range (basic Axis Options)
+ * @param axisIndex 0 - primary axis, 1 - secondary axis
+ * @param minimum minimum value; Double.NaN - automatic; null - no change
+ * @param maximum maximum value; Double.NaN - automatic; null - no change
+ * @param majorUnit major unit value; Double.NaN - automatic; null - no
change
+ * @param minorUnit minor unit value; Double.NaN - automatic; null - no
change
+ */
+ public void setValueRange(int axisIndex, Double minimum, Double maximum,
Double majorUnit, Double minorUnit) {
+ XDDFChartAxis axis = getAxes().get(axisIndex);
+ if (axis == null) {
+ return;
+ }
+ if (minimum != null) {
+ axis.setMinimum(minimum);
+ }
+ if (maximum != null) {
+ axis.setMaximum(maximum);
+ }
+ if (majorUnit != null) {
+ axis.setMajorUnit(majorUnit);
+ }
+ if (minorUnit != null) {
+ axis.setMinorUnit(minorUnit);
+ }
+ }
+
/**
* method to create relationship with embedded part
* for example writing xlsx file stream into output stream
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartAxis.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartAxis.java?rev=1823963&r1=1823962&r2=1823963&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartAxis.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFChartAxis.java
Mon Feb 12 12:59:38 2018
@@ -24,7 +24,6 @@ import org.openxmlformats.schemas.drawin
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartLines;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTCrosses;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTLogBase;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumFmt;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTScaling;
@@ -58,6 +57,38 @@ public abstract class XDDFChartAxis impl
public abstract XDDFShapeProperties getOrAddMinorGridProperties();
/**
+ * @return true if minor unit value is defined, false otherwise
+ */
+ public abstract boolean isSetMinorUnit();
+
+ /**
+ * @param minor
+ * axis minor unit
+ */
+ public abstract void setMinorUnit(double minor);
+
+ /**
+ * @return axis minor unit or NaN if not set
+ */
+ public abstract double getMinorUnit();
+
+ /**
+ * @return true if major unit value is defined, false otherwise
+ */
+ public abstract boolean isSetMajorUnit();
+
+ /**
+ * @param major
+ * axis major unit
+ */
+ public abstract void setMajorUnit(double major);
+
+ /**
+ * @return axis major unit or NaN if not set
+ */
+ public abstract double getMajorUnit();
+
+ /**
* @return axis id
*/
public long getId() {
@@ -132,14 +163,14 @@ public abstract class XDDFChartAxis impl
}
/**
- * @return axis log base or 0.0 if not set
+ * @return axis log base or NaN if not set
*/
public double getLogBase() {
- CTLogBase logBase = getCTScaling().getLogBase();
- if (logBase != null) {
- return logBase.getVal();
+ CTScaling scaling = getCTScaling();
+ if (scaling.isSetLogBase()) {
+ return scaling.getLogBase().getVal();
}
- return 0.0;
+ return Double.NaN;
}
/**
@@ -155,22 +186,28 @@ public abstract class XDDFChartAxis impl
*/
public void setMinimum(double min) {
CTScaling scaling = getCTScaling();
- if (scaling.isSetMin()) {
- scaling.getMin().setVal(min);
+ if (Double.isNaN(min)) {
+ if (scaling.isSetMin()) {
+ scaling.unsetMin();
+ }
} else {
- scaling.addNewMin().setVal(min);
+ if (scaling.isSetMin()) {
+ scaling.getMin().setVal(min);
+ } else {
+ scaling.addNewMin().setVal(min);
+ }
}
}
/**
- * @return axis minimum or 0.0 if not set
+ * @return axis minimum or NaN if not set
*/
public double getMinimum() {
CTScaling scaling = getCTScaling();
if (scaling.isSetMin()) {
return scaling.getMin().getVal();
} else {
- return 0.0;
+ return Double.NaN;
}
}
@@ -187,22 +224,28 @@ public abstract class XDDFChartAxis impl
*/
public void setMaximum(double max) {
CTScaling scaling = getCTScaling();
- if (scaling.isSetMax()) {
- scaling.getMax().setVal(max);
+ if (Double.isNaN(max)) {
+ if (scaling.isSetMax()) {
+ scaling.unsetMax();
+ }
} else {
- scaling.addNewMax().setVal(max);
+ if (scaling.isSetMax()) {
+ scaling.getMax().setVal(max);
+ } else {
+ scaling.addNewMax().setVal(max);
+ }
}
}
/**
- * @return axis maximum or 0.0 if not set
+ * @return axis maximum or NaN if not set
*/
public double getMaximum() {
CTScaling scaling = getCTScaling();
if (scaling.isSetMax()) {
return scaling.getMax().getVal();
} else {
- return 0.0;
+ return Double.NaN;
}
}
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDateAxis.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDateAxis.java?rev=1823963&r1=1823962&r2=1823963&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDateAxis.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFDateAxis.java
Mon Feb 12 12:59:38 2018
@@ -83,6 +83,64 @@ public class XDDFDateAxis extends XDDFCh
}
@Override
+ public boolean isSetMinorUnit() {
+ return ctDateAx.isSetMinorUnit();
+ }
+
+ @Override
+ public void setMinorUnit(double minor) {
+ if (Double.isNaN(minor)) {
+ if (ctDateAx.isSetMinorUnit()) {
+ ctDateAx.unsetMinorUnit();
+ }
+ } else {
+ if (ctDateAx.isSetMinorUnit()) {
+ ctDateAx.getMinorUnit().setVal(minor);
+ } else {
+ ctDateAx.addNewMinorUnit().setVal(minor);
+ }
+ }
+ }
+
+ @Override
+ public double getMinorUnit() {
+ if (ctDateAx.isSetMinorUnit()) {
+ return ctDateAx.getMinorUnit().getVal();
+ } else {
+ return Double.NaN;
+ }
+ }
+
+ @Override
+ public boolean isSetMajorUnit() {
+ return ctDateAx.isSetMajorUnit();
+ }
+
+ @Override
+ public void setMajorUnit(double major) {
+ if (Double.isNaN(major)) {
+ if (ctDateAx.isSetMajorUnit()) {
+ ctDateAx.unsetMajorUnit();
+ }
+ } else {
+ if (ctDateAx.isSetMajorUnit()) {
+ ctDateAx.getMajorUnit().setVal(major);
+ } else {
+ ctDateAx.addNewMajorUnit().setVal(major);
+ }
+ }
+ }
+
+ @Override
+ public double getMajorUnit() {
+ if (ctDateAx.isSetMajorUnit()) {
+ return ctDateAx.getMajorUnit().getVal();
+ } else {
+ return Double.NaN;
+ }
+ }
+
+ @Override
public void crossAxis(XDDFChartAxis axis) {
ctDateAx.getCrossAx().setVal(axis.getId());
}
Copied:
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSeriesAxis.java
(from r1823920,
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java)
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSeriesAxis.java?p2=poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSeriesAxis.java&p1=poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java&r1=1823920&r2=1823963&rev=1823963&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFCategoryAxis.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFSeriesAxis.java
Mon Feb 12 12:59:38 2018
@@ -21,37 +21,37 @@ import org.apache.poi.util.Beta;
import org.apache.poi.xddf.usermodel.XDDFShapeProperties;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTAxPos;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
-import org.openxmlformats.schemas.drawingml.x2006.chart.CTCatAx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTChartLines;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTCrosses;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTNumFmt;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTPlotArea;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTScaling;
+import org.openxmlformats.schemas.drawingml.x2006.chart.CTSerAx;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTTickMark;
import org.openxmlformats.schemas.drawingml.x2006.chart.CTUnsignedInt;
import org.openxmlformats.schemas.drawingml.x2006.chart.STTickLblPos;
import org.openxmlformats.schemas.drawingml.x2006.main.CTShapeProperties;
@Beta
-public class XDDFCategoryAxis extends XDDFChartAxis {
+public class XDDFSeriesAxis extends XDDFChartAxis {
- private CTCatAx ctCatAx;
+ private CTSerAx ctSerAx;
- public XDDFCategoryAxis(CTPlotArea plotArea, AxisPosition position) {
+ public XDDFSeriesAxis(CTPlotArea plotArea, AxisPosition position) {
initializeAxis(plotArea, position);
}
- public XDDFCategoryAxis(CTCatAx ctCatAx) {
- this.ctCatAx = ctCatAx;
+ public XDDFSeriesAxis(CTSerAx ctSerAx) {
+ this.ctSerAx = ctSerAx;
}
@Override
public XDDFShapeProperties getOrAddMajorGridProperties() {
CTChartLines majorGridlines;
- if (ctCatAx.isSetMajorGridlines()) {
- majorGridlines = ctCatAx.getMajorGridlines();
+ if (ctSerAx.isSetMajorGridlines()) {
+ majorGridlines = ctSerAx.getMajorGridlines();
} else {
- majorGridlines = ctCatAx.addNewMajorGridlines();
+ majorGridlines = ctSerAx.addNewMajorGridlines();
}
return new
XDDFShapeProperties(getOrAddLinesProperties(majorGridlines));
}
@@ -59,10 +59,10 @@ public class XDDFCategoryAxis extends XD
@Override
public XDDFShapeProperties getOrAddMinorGridProperties() {
CTChartLines minorGridlines;
- if (ctCatAx.isSetMinorGridlines()) {
- minorGridlines = ctCatAx.getMinorGridlines();
+ if (ctSerAx.isSetMinorGridlines()) {
+ minorGridlines = ctSerAx.getMinorGridlines();
} else {
- minorGridlines = ctCatAx.addNewMinorGridlines();
+ minorGridlines = ctSerAx.addNewMinorGridlines();
}
return new
XDDFShapeProperties(getOrAddLinesProperties(minorGridlines));
}
@@ -70,53 +70,83 @@ public class XDDFCategoryAxis extends XD
@Override
public XDDFShapeProperties getOrAddShapeProperties() {
CTShapeProperties properties;
- if (ctCatAx.isSetSpPr()) {
- properties = ctCatAx.getSpPr();
+ if (ctSerAx.isSetSpPr()) {
+ properties = ctSerAx.getSpPr();
} else {
- properties = ctCatAx.addNewSpPr();
+ properties = ctSerAx.addNewSpPr();
}
return new XDDFShapeProperties(properties);
}
@Override
+ public boolean isSetMinorUnit() {
+ return false;
+ }
+
+ @Override
+ public void setMinorUnit(double minor) {
+ // nothing
+ }
+
+ @Override
+ public double getMinorUnit() {
+ return Double.NaN;
+ }
+
+ @Override
+ public boolean isSetMajorUnit() {
+ return false;
+ }
+
+ @Override
+ public void setMajorUnit(double major) {
+ // nothing
+ }
+
+ @Override
+ public double getMajorUnit() {
+ return Double.NaN;
+ }
+
+ @Override
public void crossAxis(XDDFChartAxis axis) {
- ctCatAx.getCrossAx().setVal(axis.getId());
+ ctSerAx.getCrossAx().setVal(axis.getId());
}
@Override
protected CTUnsignedInt getCTAxId() {
- return ctCatAx.getAxId();
+ return ctSerAx.getAxId();
}
@Override
protected CTAxPos getCTAxPos() {
- return ctCatAx.getAxPos();
+ return ctSerAx.getAxPos();
}
@Override
public boolean hasNumberFormat() {
- return ctCatAx.isSetNumFmt();
+ return ctSerAx.isSetNumFmt();
}
@Override
protected CTNumFmt getCTNumFmt() {
- if (ctCatAx.isSetNumFmt()) {
- return ctCatAx.getNumFmt();
+ if (ctSerAx.isSetNumFmt()) {
+ return ctSerAx.getNumFmt();
}
- return ctCatAx.addNewNumFmt();
+ return ctSerAx.addNewNumFmt();
}
@Override
protected CTScaling getCTScaling() {
- return ctCatAx.getScaling();
+ return ctSerAx.getScaling();
}
@Override
protected CTCrosses getCTCrosses() {
- CTCrosses crosses = ctCatAx.getCrosses();
+ CTCrosses crosses = ctSerAx.getCrosses();
if (crosses == null) {
- return ctCatAx.addNewCrosses();
+ return ctSerAx.addNewCrosses();
} else {
return crosses;
}
@@ -124,39 +154,31 @@ public class XDDFCategoryAxis extends XD
@Override
protected CTBoolean getDelete() {
- return ctCatAx.getDelete();
+ return ctSerAx.getDelete();
}
@Override
protected CTTickMark getMajorCTTickMark() {
- return ctCatAx.getMajorTickMark();
+ return ctSerAx.getMajorTickMark();
}
@Override
protected CTTickMark getMinorCTTickMark() {
- return ctCatAx.getMinorTickMark();
- }
-
- public AxisLabelAlignment getLabelAlignment() {
- return AxisLabelAlignment.valueOf(ctCatAx.getLblAlgn().getVal());
- }
-
- public void setLabelAlignment(AxisLabelAlignment labelAlignment) {
- ctCatAx.getLblAlgn().setVal(labelAlignment.underlying);
+ return ctSerAx.getMinorTickMark();
}
private void initializeAxis(CTPlotArea plotArea, AxisPosition position) {
final long id = getNextAxId(plotArea);
- ctCatAx = plotArea.addNewCatAx();
- ctCatAx.addNewAxId().setVal(id);
- ctCatAx.addNewAxPos();
- ctCatAx.addNewScaling();
- ctCatAx.addNewCrosses();
- ctCatAx.addNewCrossAx();
- ctCatAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);
- ctCatAx.addNewDelete();
- ctCatAx.addNewMajorTickMark();
- ctCatAx.addNewMinorTickMark();
+ ctSerAx = plotArea.addNewSerAx();
+ ctSerAx.addNewAxId().setVal(id);
+ ctSerAx.addNewAxPos();
+ ctSerAx.addNewScaling();
+ ctSerAx.addNewCrosses();
+ ctSerAx.addNewCrossAx();
+ ctSerAx.addNewTickLblPos().setVal(STTickLblPos.NEXT_TO);
+ ctSerAx.addNewDelete();
+ ctSerAx.addNewMajorTickMark();
+ ctSerAx.addNewMinorTickMark();
setPosition(position);
setOrientation(AxisOrientation.MIN_MAX);
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFValueAxis.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFValueAxis.java?rev=1823963&r1=1823962&r2=1823963&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFValueAxis.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/xddf/usermodel/chart/XDDFValueAxis.java
Mon Feb 12 12:59:38 2018
@@ -79,6 +79,64 @@ public class XDDFValueAxis extends XDDFC
}
@Override
+ public boolean isSetMinorUnit() {
+ return ctValAx.isSetMinorUnit();
+ }
+
+ @Override
+ public void setMinorUnit(double minor) {
+ if (Double.isNaN(minor)) {
+ if (ctValAx.isSetMinorUnit()) {
+ ctValAx.unsetMinorUnit();
+ }
+ } else {
+ if (ctValAx.isSetMinorUnit()) {
+ ctValAx.getMinorUnit().setVal(minor);
+ } else {
+ ctValAx.addNewMinorUnit().setVal(minor);
+ }
+ }
+ }
+
+ @Override
+ public double getMinorUnit() {
+ if (ctValAx.isSetMinorUnit()) {
+ return ctValAx.getMinorUnit().getVal();
+ } else {
+ return Double.NaN;
+ }
+ }
+
+ @Override
+ public boolean isSetMajorUnit() {
+ return ctValAx.isSetMajorUnit();
+ }
+
+ @Override
+ public void setMajorUnit(double major) {
+ if (Double.isNaN(major)) {
+ if (ctValAx.isSetMajorUnit()) {
+ ctValAx.unsetMajorUnit();
+ }
+ } else {
+ if (ctValAx.isSetMajorUnit()) {
+ ctValAx.getMajorUnit().setVal(major);
+ } else {
+ ctValAx.addNewMajorUnit().setVal(major);
+ }
+ }
+ }
+
+ @Override
+ public double getMajorUnit() {
+ if (ctValAx.isSetMajorUnit()) {
+ return ctValAx.getMajorUnit().getVal();
+ } else {
+ return Double.NaN;
+ }
+ }
+
+ @Override
public void crossAxis(XDDFChartAxis axis) {
ctValAx.getCrossAx().setVal(axis.getId());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]