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: commits-unsubscr...@poi.apache.org For additional commands, e-mail: commits-h...@poi.apache.org