From 9fdda0ed2cbe731613c7d52e4cd31fb0ad8d26de Mon Sep 17 00:00:00 2001
From: Andreas Beeker
Date: Sun, 13 Dec 2020 17:48:31 +0000
Subject: [PATCH] #64981 - Upgrade OOXML schema to 5th edition (transitional)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1884386 13f79535-47bb-0310-9956-ffa450edef68
---
maven/poi-ooxml-full.pom | 2 +-
.../poi/examples/xslf/LinkVideoToPptx.java | 2 +-
.../poi/examples/xssf/usermodel/BarChart.java | 2 +-
.../examples/xssf/usermodel/LineChart.java | 2 +-
.../examples/xssf/usermodel/ScatterChart.java | 2 +-
.../ooxml-full/java9/module-info.class | Bin 2280 -> 2212 bytes
.../ooxml-full/java9/module-info.java | 1 -
.../poi/xssf/usermodel/XSSFCellStyle.java | 2 +-
.../extensions/XSSFCellAlignment.java | 22 ++--
.../poi/xwpf/usermodel/XWPFAbstractSDT.java | 20 +--
.../xwpf/usermodel/XWPFDefaultRunStyle.java | 4 +-
.../apache/poi/xwpf/usermodel/XWPFRun.java | 122 +++++++++---------
.../apache/poi/xwpf/usermodel/XWPFStyles.java | 11 +-
.../OfficeOpenXML-XMLSchema-Transitional.zip | Bin 99115 -> 105808 bytes
.../poi/xslf/usermodel/TestXSLFExamples.java | 2 +-
.../poi/xssf/usermodel/TestXSSFCellStyle.java | 16 ++-
.../poi/xwpf/usermodel/TestXWPFRun.java | 28 ++--
17 files changed, 117 insertions(+), 121 deletions(-)
diff --git a/maven/poi-ooxml-full.pom b/maven/poi-ooxml-full.pom
index d35d8f7ddc..76d38e799e 100644
--- a/maven/poi-ooxml-full.pom
+++ b/maven/poi-ooxml-full.pom
@@ -28,7 +28,7 @@
@VERSION@
jar
Apache POI - OOXML schemas (full)
- XmlBeans generated from the Ecma supplied xsds (since POI 5.0.0, the 3rd edition is used):
+ XmlBeans generated from the Ecma supplied xsds (since POI 5.0.0, the 5th edition is used):
https://www.ecma-international.org/publications/standards/Ecma-376.htm
https://poi.apache.org/
diff --git a/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java b/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java
index db7f453019..d2988478d2 100644
--- a/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java
+++ b/src/examples/src/org/apache/poi/examples/xslf/LinkVideoToPptx.java
@@ -107,7 +107,7 @@ public class LinkVideoToPptx {
ctn.setFill(STTLTimeNodeFillType.HOLD);
ctn.setDisplay(false);
ctn.addNewStCondLst().addNewCond().setDelay(STTLTimeIndefinite.INDEFINITE);
- cmedia.addNewTgtEl().addNewSpTgt().setSpid(""+pic1.getShapeId());
+ cmedia.addNewTgtEl().addNewSpTgt().setSpid(pic1.getShapeId());
try (FileOutputStream fos = new FileOutputStream("mp4test/mp4test-poi.pptx")) {
diff --git a/src/examples/src/org/apache/poi/examples/xssf/usermodel/BarChart.java b/src/examples/src/org/apache/poi/examples/xssf/usermodel/BarChart.java
index 2a3c6a761b..8c68fe87a7 100644
--- a/src/examples/src/org/apache/poi/examples/xssf/usermodel/BarChart.java
+++ b/src/examples/src/org/apache/poi/examples/xssf/usermodel/BarChart.java
@@ -113,7 +113,7 @@ public final class BarChart {
private static void solidFillSeries(XDDFChartData data, int index, PresetColor color) {
XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color));
- XDDFChartData.Series series = data.getSeries().get(index);
+ XDDFChartData.Series series = data.getSeries(index);
XDDFShapeProperties properties = series.getShapeProperties();
if (properties == null) {
properties = new XDDFShapeProperties();
diff --git a/src/examples/src/org/apache/poi/examples/xssf/usermodel/LineChart.java b/src/examples/src/org/apache/poi/examples/xssf/usermodel/LineChart.java
index 268d632a04..724d3e2608 100644
--- a/src/examples/src/org/apache/poi/examples/xssf/usermodel/LineChart.java
+++ b/src/examples/src/org/apache/poi/examples/xssf/usermodel/LineChart.java
@@ -117,7 +117,7 @@ public final class LineChart {
XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color));
XDDFLineProperties line = new XDDFLineProperties();
line.setFillProperties(fill);
- XDDFChartData.Series series = data.getSeries().get(index);
+ XDDFChartData.Series series = data.getSeries(index);
XDDFShapeProperties properties = series.getShapeProperties();
if (properties == null) {
properties = new XDDFShapeProperties();
diff --git a/src/examples/src/org/apache/poi/examples/xssf/usermodel/ScatterChart.java b/src/examples/src/org/apache/poi/examples/xssf/usermodel/ScatterChart.java
index 6946126a39..a5ce3c84ae 100644
--- a/src/examples/src/org/apache/poi/examples/xssf/usermodel/ScatterChart.java
+++ b/src/examples/src/org/apache/poi/examples/xssf/usermodel/ScatterChart.java
@@ -110,7 +110,7 @@ public final class ScatterChart {
XDDFSolidFillProperties fill = new XDDFSolidFillProperties(XDDFColor.from(color));
XDDFLineProperties line = new XDDFLineProperties();
line.setFillProperties(fill);
- XDDFChartData.Series series = data.getSeries().get(index);
+ XDDFChartData.Series series = data.getSeries(index);
XDDFShapeProperties properties = series.getShapeProperties();
if (properties == null) {
properties = new XDDFShapeProperties();
diff --git a/src/multimodule/ooxml-full/java9/module-info.class b/src/multimodule/ooxml-full/java9/module-info.class
index 2bbf9820254072b1f27df4dc892fbca7c7bba2a0..4c1707b28d91d5f3b5651e921f243505919e7900 100644
GIT binary patch
literal 2212
zcmb7_S##4c5XW~Z^q|}^w1omafKs4wjvl1+qAhm|oq=I^Rcs{@jV+Jl9DVEO;(-sq
zhv6eI$m>j6GN~Eo;V0YC{&%%nt$zLa@e=@+;9v;OA&h#`ZPfXK@GBBwaG%~XZ~{`MHCTGikJC
zzCAe^wFxCL_v>nWV+Kyl{k8s}j*N%II>DI}u34wQ7b
z)@Hl9Do+vC5>(<+-IY$m<9^uL;<6~$g)}J-YUWrhAZ(^ph>CYwTlPJ+I|%drJ71ioPK2(gYEiY|6~b8LiicX*4JGV$
zE?>$O?Pk7c!J9MxT(saF!fHa0ZF8j^vMN9ECqh>LEUG?>+r@|E#@1usvzz+}Idxl4=sWG;#5-}qX!&27_d?WX;Ay8AHznj1R)Aq<#@-*6tL%s2pp$7XOH!;&b9E
ZagDe^+#+rhcZsiwZ;9`Td&G}K!e6UfrlbG>
literal 2280
zcmb7_S##4c5Xb-KzOO8IftGSZ-ex8S3GQct;1edR&cd~YZc5?P$l?;8ex_&N2n9#
z3D*e=gd2pLga%=eaEox8aEEZ0aF1}G@PP1;@QAQPcuaUgcuIIicusghcu9Cgcujai
zcuROkc<*6%#NKCA+|nK#4?Dk#zNj{Zl^!aqM4eDm
zir7i)U1m+>VEvWi;1r##{;2P>Hq?QMpLFI`}5TMZ%emv2Ow0239YJ>x3%P6;t}54jO@A&r(@euiHp6+
ztt&U{cAdpXEg-M;dO@^#Gkv9+Mwpdh$^3`bzv5o!YoWl`+LB(UczJx+%hNIpEL3f)
z+8&N(PGoA8-!sY|)MgvCy5FCzZ}?~4!(u^T19wk-6K(m=jY>uLqiV+@KlnvGbe;0L
zEjyOEU9Pj`nhUkzyUrc*DyFhu`4#EA>txi&U85hi^6!A>?)Uuhu*tpr#%4^qaWl4j
zcLTQaY+Lq8|l2XiNL7jrjr4|6YbA9FwR0P`U85VOK0=3(X$=27M`=5gi;=1JxR
g^Az(m^9*y6ImJB7oMxV5o@ZWQUSwWkUS=}>0$kF)FaQ7m
diff --git a/src/multimodule/ooxml-full/java9/module-info.java b/src/multimodule/ooxml-full/java9/module-info.java
index 102ab6ad69..4587ea5e5d 100644
--- a/src/multimodule/ooxml-full/java9/module-info.java
+++ b/src/multimodule/ooxml-full/java9/module-info.java
@@ -30,7 +30,6 @@ open module org.apache.poi.ooxml.schemas {
exports com.microsoft.schemas.vml;
exports org.openxmlformats.schemas.drawingml.x2006.chart;
exports org.openxmlformats.schemas.drawingml.x2006.chartDrawing;
- exports org.openxmlformats.schemas.drawingml.x2006.compatibility;
exports org.openxmlformats.schemas.drawingml.x2006.diagram;
exports org.openxmlformats.schemas.drawingml.x2006.lockedCanvas;
exports org.openxmlformats.schemas.drawingml.x2006.main;
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
index af5fa32e24..871b1a933c 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFCellStyle.java
@@ -592,7 +592,7 @@ public class XSSFCellStyle implements CellStyle, Duplicatable {
@Override
public short getRotation() {
CTCellAlignment align = _cellXf.getAlignment();
- return (short)(align == null ? 0 : align.getTextRotation());
+ return align == null ? 0 : align.getTextRotation().shortValue();
}
@Override
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java
index 9fed1a8cf0..a291336493 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/extensions/XSSFCellAlignment.java
@@ -16,6 +16,8 @@
==================================================================== */
package org.apache.poi.xssf.usermodel.extensions;
+import java.math.BigInteger;
+
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.ReadingOrder;
import org.apache.poi.ss.usermodel.VerticalAlignment;
@@ -29,7 +31,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.STVerticalAlignment;
* Cell settings available in the Format/Alignment tab
*/
public class XSSFCellAlignment {
- private CTCellAlignment cellAlignement;
+ private final CTCellAlignment cellAlignement;
/**
* Creates a Cell Alignment from the supplied XML definition
@@ -85,7 +87,7 @@ public class XSSFCellAlignment {
public void setHorizontal(HorizontalAlignment align) {
cellAlignement.setHorizontal(STHorizontalAlignment.Enum.forInt(align.ordinal() + 1));
}
-
+
/**
* Set the type of reading order for the cell
*
@@ -95,7 +97,7 @@ public class XSSFCellAlignment {
public void setReadingOrder(ReadingOrder order) {
cellAlignement.setReadingOrder(order.getCode());
}
-
+
/**
* Get the reading order for the cell
*
@@ -108,7 +110,7 @@ public class XSSFCellAlignment {
}
return ReadingOrder.CONTEXT;
}
-
+
/**
* Get the number of spaces to indent the text in the cell
*
@@ -142,7 +144,7 @@ public class XSSFCellAlignment {
* @return rotation degrees (between 0 and 180 degrees)
*/
public long getTextRotation() {
- return cellAlignement.getTextRotation();
+ return cellAlignement.isSetTextRotation() ? cellAlignement.getTextRotation().longValue() : 0;
}
/**
@@ -157,8 +159,8 @@ public class XSSFCellAlignment {
* [degrees below horizon] = 90 - textRotation.
*
*
- * Note: HSSF uses values from -90 to 90 degrees, whereas XSSF
- * uses values from 0 to 180 degrees. The implementations of this method will map between these two value-ranges
+ * Note: HSSF uses values from -90 to 90 degrees, whereas XSSF
+ * uses values from 0 to 180 degrees. The implementations of this method will map between these two value-ranges
* accordingly, however the corresponding getter is returning values in the range mandated by the current type
* of Excel file-format that this CellStyle is applied to.
*
@@ -168,7 +170,7 @@ public class XSSFCellAlignment {
if(rotation < 0 && rotation >= -90) {
rotation = 90 + ((-1)*rotation);
}
- cellAlignement.setTextRotation(rotation);
+ cellAlignement.setTextRotation(BigInteger.valueOf(rotation));
}
/**
@@ -192,11 +194,11 @@ public class XSSFCellAlignment {
public boolean getShrinkToFit() {
return cellAlignement.getShrinkToFit();
}
-
+
public void setShrinkToFit(boolean shrink) {
cellAlignement.setShrinkToFit(shrink);
}
-
+
/**
* Access to low-level data
*/
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractSDT.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractSDT.java
index 93b2cdba8a..434d857f2c 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractSDT.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFAbstractSDT.java
@@ -18,7 +18,6 @@ package org.apache.poi.xwpf.usermodel;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtPr;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTString;
/**
* Experimental abstract class that is a base for XWPFSDT and XWPFSDTCell
@@ -33,23 +32,8 @@ public abstract class XWPFAbstractSDT implements ISDTContents {
private final IBody part;
public XWPFAbstractSDT(CTSdtPr pr, IBody part) {
- if (pr == null) {
- title = "";
- tag = "";
- } else {
- CTString[] aliases = pr.getAliasArray();
- if (aliases != null && aliases.length > 0) {
- title = aliases[0].getVal();
- } else {
- title = "";
- }
- CTString[] tags = pr.getTagArray();
- if (tags != null && tags.length > 0) {
- tag = tags[0].getVal();
- } else {
- tag = "";
- }
- }
+ title = (pr != null && pr.isSetAlias()) ? pr.getAlias().getVal() : "";
+ tag = (pr != null && pr.isSetTag()) ? pr.getTag().getVal() : "";
this.part = part;
}
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
index 8eb8f6c1e0..24c235d0e0 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDefaultRunStyle.java
@@ -66,8 +66,8 @@ public class XWPFDefaultRunStyle {
}
private BigDecimal getFontSizeAsBigDecimal(int scale) {
- return (rpr != null && rpr.isSetSz())
- ? BigDecimal.valueOf(Units.toPoints(POIXMLUnits.parseLength(rpr.getSz().xgetVal()))).divide(BigDecimal.valueOf(4), scale, RoundingMode.HALF_UP)
+ return (rpr != null && rpr.sizeOfSzArray() > 0)
+ ? BigDecimal.valueOf(Units.toPoints(POIXMLUnits.parseLength(rpr.getSzArray(0).xgetVal()))).divide(BigDecimal.valueOf(4), scale, RoundingMode.HALF_UP)
: null;
}
}
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
index c7ba363119..06df99be12 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFRun.java
@@ -76,10 +76,10 @@ import org.xml.sax.SAXException;
* XWPFRun object defines a region of text with a common set of properties
*/
public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
- private CTR run;
- private String pictureText;
- private IRunBody parent;
- private List pictures;
+ private final CTR run;
+ private final String pictureText;
+ private final IRunBody parent;
+ private final List pictures;
/**
* @param r the CTR bean which holds the run attributes
@@ -238,7 +238,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public String getLang() {
CTRPr pr = getRunProperties(false);
- Object lang = pr == null || !pr.isSetLang() ? null : pr.getLang().getVal();
+ Object lang = (pr == null || pr.sizeOfLangArray() == 0) ? null : pr.getLangArray(0).getVal();
return (String) lang;
}
@@ -250,7 +250,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setLang(String lang) {
CTRPr pr = getRunProperties(true);
- CTLanguage ctLang = pr.isSetLang() ? pr.getLang() : pr.addNewLang();
+ CTLanguage ctLang = pr.sizeOfLangArray() > 0 ? pr.getLangArray(0) : pr.addNewLang();
ctLang.setVal(lang);
}
@@ -263,7 +263,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public boolean isBold() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetB() && isCTOnOff(pr.getB());
+ return pr != null && pr.sizeOfBArray() > 0 && isCTOnOff(pr.getBArray(0));
}
/**
@@ -293,7 +293,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public void setBold(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff bold = pr.isSetB() ? pr.getB() : pr.addNewB();
+ CTOnOff bold = pr.sizeOfBArray() > 0 ? pr.getBArray(0) : pr.addNewB();
bold.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@@ -304,8 +304,8 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
String color = null;
if (run.isSetRPr()) {
CTRPr pr = getRunProperties(false);
- if (pr != null && pr.isSetColor()) {
- CTColor clr = pr.getColor();
+ if (pr != null && pr.sizeOfColorArray() > 0) {
+ CTColor clr = pr.getColorArray(0);
color = clr.xgetVal().getStringValue();
}
}
@@ -319,7 +319,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setColor(String rgbStr) {
CTRPr pr = getRunProperties(true);
- CTColor color = pr.isSetColor() ? pr.getColor() : pr.addNewColor();
+ CTColor color = pr.sizeOfColorArray() > 0 ? pr.getColorArray(0) : pr.addNewColor();
color.setVal(rgbStr);
}
@@ -373,7 +373,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public boolean isItalic() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetI() && isCTOnOff(pr.getI());
+ return pr != null && pr.sizeOfIArray() > 0 && isCTOnOff(pr.getIArray(0));
}
/**
@@ -404,7 +404,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public void setItalic(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff italic = pr.isSetI() ? pr.getI() : pr.addNewI();
+ CTOnOff italic = pr.sizeOfIArray() > 0 ? pr.getIArray(0) : pr.addNewI();
italic.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@@ -452,11 +452,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
private CTUnderline getCTUnderline(boolean create) {
CTRPr pr = getRunProperties(true);
- CTUnderline underline = pr.getU();
- if (create && underline == null) {
- underline = pr.addNewU();
- }
- return underline;
+ return pr.sizeOfUArray() > 0 ? pr.getUArray(0) : (create ? pr.addNewU() : null);
}
/**
@@ -539,7 +535,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public boolean isStrikeThrough() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetStrike() && isCTOnOff(pr.getStrike());
+ return pr != null && pr.sizeOfStrikeArray() > 0 && isCTOnOff(pr.getStrikeArray(0));
}
/**
@@ -569,7 +565,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public void setStrikeThrough(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff strike = pr.isSetStrike() ? pr.getStrike() : pr.addNewStrike();
+ CTOnOff strike = pr.sizeOfStrikeArray() > 0 ? pr.getStrikeArray(0) : pr.addNewStrike();
strike.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@@ -592,7 +588,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public boolean isDoubleStrikeThrough() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetDstrike() && isCTOnOff(pr.getDstrike());
+ return pr != null && pr.sizeOfDstrikeArray() > 0 && isCTOnOff(pr.getDstrikeArray(0));
}
/**
@@ -604,72 +600,72 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public void setDoubleStrikethrough(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff dstrike = pr.isSetDstrike() ? pr.getDstrike() : pr.addNewDstrike();
+ CTOnOff dstrike = pr.sizeOfDstrikeArray() > 0 ? pr.getDstrikeArray(0) : pr.addNewDstrike();
dstrike.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@Override
public boolean isSmallCaps() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetSmallCaps() && isCTOnOff(pr.getSmallCaps());
+ return pr != null && pr.sizeOfSmallCapsArray() > 0 && isCTOnOff(pr.getSmallCapsArray(0));
}
@Override
public void setSmallCaps(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff caps = pr.isSetSmallCaps() ? pr.getSmallCaps() : pr.addNewSmallCaps();
+ CTOnOff caps = pr.sizeOfSmallCapsArray() > 0 ? pr.getSmallCapsArray(0) : pr.addNewSmallCaps();
caps.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@Override
public boolean isCapitalized() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetCaps() && isCTOnOff(pr.getCaps());
+ return pr != null && pr.sizeOfCapsArray() > 0 && isCTOnOff(pr.getCapsArray(0));
}
@Override
public void setCapitalized(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff caps = pr.isSetCaps() ? pr.getCaps() : pr.addNewCaps();
+ CTOnOff caps = pr.sizeOfCapsArray() > 0 ? pr.getCapsArray(0) : pr.addNewCaps();
caps.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@Override
public boolean isShadowed() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetShadow() && isCTOnOff(pr.getShadow());
+ return pr != null && pr.sizeOfShadowArray() > 0 && isCTOnOff(pr.getShadowArray(0));
}
@Override
public void setShadow(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff shadow = pr.isSetShadow() ? pr.getShadow() : pr.addNewShadow();
+ CTOnOff shadow = pr.sizeOfShadowArray() > 0 ? pr.getShadowArray(0) : pr.addNewShadow();
shadow.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@Override
public boolean isImprinted() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetImprint() && isCTOnOff(pr.getImprint());
+ return pr != null && pr.sizeOfImprintArray() > 0 && isCTOnOff(pr.getImprintArray(0));
}
@Override
public void setImprinted(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff imprinted = pr.isSetImprint() ? pr.getImprint() : pr.addNewImprint();
+ CTOnOff imprinted = pr.sizeOfImprintArray() > 0 ? pr.getImprintArray(0) : pr.addNewImprint();
imprinted.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@Override
public boolean isEmbossed() {
CTRPr pr = getRunProperties(false);
- return pr != null && pr.isSetEmboss() && isCTOnOff(pr.getEmboss());
+ return pr != null && pr.sizeOfEmbossArray() > 0 && isCTOnOff(pr.getEmbossArray(0));
}
@Override
public void setEmbossed(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff emboss = pr.isSetEmboss() ? pr.getEmboss() : pr.addNewEmboss();
+ CTOnOff emboss = pr.sizeOfEmbossArray() > 0 ? pr.getEmbossArray(0) : pr.addNewEmboss();
emboss.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@@ -691,33 +687,33 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setSubscript(VerticalAlign valign) {
CTRPr pr = getRunProperties(true);
- CTVerticalAlignRun ctValign = pr.isSetVertAlign() ? pr.getVertAlign() : pr.addNewVertAlign();
+ CTVerticalAlignRun ctValign = pr.sizeOfVertAlignArray() > 0 ? pr.getVertAlignArray(0) : pr.addNewVertAlign();
ctValign.setVal(STVerticalAlignRun.Enum.forInt(valign.getValue()));
}
@Override
public int getKerning() {
CTRPr pr = getRunProperties(false);
- if (pr == null || !pr.isSetKern()) {
+ if (pr == null || pr.sizeOfKernArray() == 0) {
return 0;
}
- return (int)POIXMLUnits.parseLength(pr.getKern().xgetVal());
+ return (int)POIXMLUnits.parseLength(pr.getKernArray(0).xgetVal());
}
@Override
public void setKerning(int kern) {
CTRPr pr = getRunProperties(true);
- CTHpsMeasure kernmes = pr.isSetKern() ? pr.getKern() : pr.addNewKern();
+ CTHpsMeasure kernmes = pr.sizeOfKernArray() > 0 ? pr.getKernArray(0) : pr.addNewKern();
kernmes.setVal(BigInteger.valueOf(kern));
}
@Override
public boolean isHighlighted() {
CTRPr pr = getRunProperties(false);
- if (pr == null || !pr.isSetHighlight()) {
+ if (pr == null || pr.sizeOfHighlightArray() == 0) {
return false;
}
- STHighlightColor.Enum val = pr.getHighlight().getVal();
+ STHighlightColor.Enum val = pr.getHighlightArray(0).getVal();
if (val == null || val == STHighlightColor.NONE) {
return false;
}
@@ -729,16 +725,16 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
@Override
public int getCharacterSpacing() {
CTRPr pr = getRunProperties(false);
- if (pr == null || !pr.isSetSpacing()) {
+ if (pr == null || pr.sizeOfSpacingArray() == 0) {
return 0;
}
- return (int)Units.toDXA(POIXMLUnits.parseLength(pr.getSpacing().xgetVal()));
+ return (int)Units.toDXA(POIXMLUnits.parseLength(pr.getSpacingArray(0).xgetVal()));
}
@Override
public void setCharacterSpacing(int twips) {
CTRPr pr = getRunProperties(true);
- CTSignedTwipsMeasure spc = pr.isSetSpacing() ? pr.getSpacing() : pr.addNewSpacing();
+ CTSignedTwipsMeasure spc = pr.sizeOfSpacingArray() > 0 ? pr.getSpacingArray(0) : pr.addNewSpacing();
spc.setVal(BigInteger.valueOf(twips));
}
@@ -784,11 +780,11 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public String getFontFamily(FontCharRange fcr) {
CTRPr pr = getRunProperties(false);
- if (pr == null || !pr.isSetRFonts()) {
+ if (pr == null || pr.sizeOfRFontsArray() == 0) {
return null;
}
- CTFonts fonts = pr.getRFonts();
+ CTFonts fonts = pr.getRFontsArray(0);
switch (fcr == null ? FontCharRange.ascii : fcr) {
default:
case ascii:
@@ -813,7 +809,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setFontFamily(String fontFamily, FontCharRange fcr) {
CTRPr pr = getRunProperties(true);
- CTFonts fonts = pr.isSetRFonts() ? pr.getRFonts() : pr.addNewRFonts();
+ CTFonts fonts = pr.sizeOfRFontsArray() > 0 ? pr.getRFontsArray(0) : pr.addNewRFonts();
if (fcr == null) {
fonts.setAscii(fontFamily);
@@ -875,8 +871,8 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
private BigDecimal getFontSizeAsBigDecimal(int scale) {
CTRPr pr = getRunProperties(false);
- return (pr != null && pr.isSetSz())
- ? BigDecimal.valueOf(Units.toPoints(POIXMLUnits.parseLength(pr.getSz().xgetVal()))).divide(BigDecimal.valueOf(4), scale, RoundingMode.HALF_UP)
+ return (pr != null && pr.sizeOfSzArray() > 0)
+ ? BigDecimal.valueOf(Units.toPoints(POIXMLUnits.parseLength(pr.getSzArray(0).xgetVal()))).divide(BigDecimal.valueOf(4), scale, RoundingMode.HALF_UP)
: null;
}
@@ -897,7 +893,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
public void setFontSize(int size) {
BigInteger bint = BigInteger.valueOf(size);
CTRPr pr = getRunProperties(true);
- CTHpsMeasure ctSize = pr.isSetSz() ? pr.getSz() : pr.addNewSz();
+ CTHpsMeasure ctSize = pr.sizeOfSzArray() > 0 ? pr.getSzArray(0) : pr.addNewSz();
ctSize.setVal(bint.multiply(BigInteger.valueOf(2)));
}
@@ -919,7 +915,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
public void setFontSize(double size) {
BigDecimal bd = BigDecimal.valueOf(size);
CTRPr pr = getRunProperties(true);
- CTHpsMeasure ctSize = pr.isSetSz() ? pr.getSz() : pr.addNewSz();
+ CTHpsMeasure ctSize = pr.sizeOfSzArray() > 0 ? pr.getSzArray(0) : pr.addNewSz();
ctSize.setVal(bd.multiply(BigDecimal.valueOf(2)).setScale(0, RoundingMode.HALF_UP).toBigInteger());
}
@@ -933,7 +929,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public int getTextPosition() {
CTRPr pr = getRunProperties(false);
- return (pr != null && pr.isSetPosition()) ? (int)(Units.toPoints(POIXMLUnits.parseLength(pr.getPosition().xgetVal())) / 2.)
+ return (pr != null && pr.sizeOfPositionArray() > 0) ? (int)(Units.toPoints(POIXMLUnits.parseLength(pr.getPositionArray(0).xgetVal())) / 2.)
: -1;
}
@@ -963,7 +959,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
public void setTextPosition(int val) {
BigInteger bint = new BigInteger(Integer.toString(val));
CTRPr pr = getRunProperties(true);
- CTSignedHpsMeasure position = pr.isSetPosition() ? pr.getPosition() : pr.addNewPosition();
+ CTSignedHpsMeasure position = pr.sizeOfPositionArray() > 0 ? pr.getPositionArray(0) : pr.addNewPosition();
position.setVal(bint);
}
@@ -1241,7 +1237,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
if (null == pr) {
pr = getCTR().addNewRPr();
}
- CTString style = pr.getRStyle() != null ? pr.getRStyle() : pr.addNewRStyle();
+ CTString style = pr.sizeOfRStyleArray() > 0 ? pr.getRStyleArray(0) : pr.addNewRStyle();
style.setVal(styleId);
}
@@ -1257,7 +1253,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
return "";
}
- CTString style = pr.getRStyle();
+ CTString style = pr.getRStyleArray(0);
if (style == null) {
return "";
}
@@ -1437,7 +1433,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setTextScale(int percentage) {
CTRPr pr = getRunProperties(true);
- CTTextScale scale = pr.isSetW() ? pr.getW() : pr.addNewW();
+ CTTextScale scale = pr.sizeOfWArray() > 0 ? pr.getWArray(0) : pr.addNewW();
scale.setVal(percentage);
}
@@ -1449,11 +1445,11 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public int getTextScale() {
CTRPr pr = getRunProperties(false);
- if (pr == null || !pr.isSetW()) {
+ if (pr == null || pr.sizeOfWArray() == 0) {
return 100;
}
- int value = POIXMLUnits.parsePercent(pr.getW().xgetVal());
+ int value = POIXMLUnits.parsePercent(pr.getWArray(0).xgetVal());
// 100% scaling, that is, no change. See 17.3.2.43 w (Expanded/Compressed Text)
return value == 0 ? 100 : value / 1000;
}
@@ -1466,7 +1462,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setTextHighlightColor(String colorName) {
CTRPr pr = getRunProperties(true);
- CTHighlight highlight = pr.isSetHighlight() ? pr.getHighlight() : pr.addNewHighlight();
+ CTHighlight highlight = pr.sizeOfHighlightArray() > 0 ? pr.getHighlightArray(0) : pr.addNewHighlight();
STHighlightColor color = highlight.xgetVal();
if (color == null) {
color = STHighlightColor.Factory.newInstance();
@@ -1487,7 +1483,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public STHighlightColor.Enum getTextHightlightColor() {
CTRPr pr = getRunProperties(true);
- CTHighlight highlight = pr.isSetHighlight() ? pr.getHighlight() : pr.addNewHighlight();
+ CTHighlight highlight = pr.sizeOfHighlightArray() > 0 ? pr.getHighlightArray(0) : pr.addNewHighlight();
STHighlightColor color = highlight.xgetVal();
if (color == null) {
color = STHighlightColor.Factory.newInstance();
@@ -1504,7 +1500,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public boolean isVanish() {
CTRPr pr = getRunProperties(true);
- return pr != null && pr.isSetVanish() && isCTOnOff(pr.getVanish());
+ return pr != null && pr.sizeOfVanishArray() > 0 && isCTOnOff(pr.getVanishArray(0));
}
/**
@@ -1515,7 +1511,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setVanish(boolean value) {
CTRPr pr = getRunProperties(true);
- CTOnOff vanish = pr.isSetVanish() ? pr.getVanish() : pr.addNewVanish();
+ CTOnOff vanish = pr.sizeOfVanishArray() > 0 ? pr.getVanishArray(0) : pr.addNewVanish();
vanish.setVal(value ? STOnOff1.ON : STOnOff1.OFF);
}
@@ -1527,7 +1523,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public STVerticalAlignRun.Enum getVerticalAlignment() {
CTRPr pr = getRunProperties(true);
- CTVerticalAlignRun vertAlign = pr.isSetVertAlign() ? pr.getVertAlign() : pr.addNewVertAlign();
+ CTVerticalAlignRun vertAlign = pr.sizeOfVertAlignArray() > 0 ? pr.getVertAlignArray(0) : pr.addNewVertAlign();
STVerticalAlignRun.Enum val = vertAlign.getVal();
if (val == null) {
val = STVerticalAlignRun.BASELINE;
@@ -1543,7 +1539,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setVerticalAlignment(String verticalAlignment) {
CTRPr pr = getRunProperties(true);
- CTVerticalAlignRun vertAlign = pr.isSetVertAlign() ? pr.getVertAlign() : pr.addNewVertAlign();
+ CTVerticalAlignRun vertAlign = pr.sizeOfVertAlignArray() > 0 ? pr.getVertAlignArray(0) : pr.addNewVertAlign();
STVerticalAlignRun align = vertAlign.xgetVal();
if (align == null) {
align = STVerticalAlignRun.Factory.newInstance();
@@ -1565,7 +1561,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public STEm.Enum getEmphasisMark() {
CTRPr pr = getRunProperties(true);
- CTEm emphasis = pr.isSetEm() ? pr.getEm() : pr.addNewEm();
+ CTEm emphasis = pr.sizeOfEmArray() > 0 ? pr.getEmArray(0) : pr.addNewEm();
STEm.Enum val = emphasis.getVal();
if (val == null) {
@@ -1583,7 +1579,7 @@ public class XWPFRun implements ISDTContents, IRunElement, CharacterRun {
*/
public void setEmphasisMark(String markType) {
CTRPr pr = getRunProperties(true);
- CTEm emphasisMark = pr.isSetEm() ? pr.getEm() : pr.addNewEm();
+ CTEm emphasisMark = pr.sizeOfEmArray() > 0 ? pr.getEmArray(0) : pr.addNewEm();
STEm mark = emphasisMark.xgetVal();
if (mark == null) {
mark = STEm.Factory.newInstance();
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java
index 75d3acc96d..1b1cf86154 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFStyles.java
@@ -50,7 +50,7 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.StylesDocument;
*/
public class XWPFStyles extends POIXMLDocumentPart {
private CTStyles ctStyles;
- private List listStyle = new ArrayList<>();
+ private final List listStyle = new ArrayList<>();
private XWPFLatentStyles latentStyles;
private XWPFDefaultRunStyle defaultRunStyle;
@@ -234,8 +234,8 @@ public class XWPFStyles extends POIXMLDocumentPart {
ensureDocDefaults();
CTLanguage lang = null;
- if (defaultRunStyle.getRPr().isSetLang()) {
- lang = defaultRunStyle.getRPr().getLang();
+ if (defaultRunStyle.getRPr().sizeOfLangArray() > 0) {
+ lang = defaultRunStyle.getRPr().getLangArray(0);
} else {
lang = defaultRunStyle.getRPr().addNewLang();
}
@@ -273,7 +273,10 @@ public class XWPFStyles extends POIXMLDocumentPart {
ensureDocDefaults();
CTRPr runProps = defaultRunStyle.getRPr();
- runProps.setRFonts(fonts);
+ if (runProps.sizeOfRFontsArray() == 0) {
+ runProps.addNewRFonts();
+ }
+ runProps.setRFontsArray(0, fonts);
}
/**
diff --git a/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip b/src/ooxml/resources/org/apache/poi/schemas/OfficeOpenXML-XMLSchema-Transitional.zip
index 5a2e31dd99eebbc0a20fd1fbf8876d839b747368..d6dcf4fbb9571392738afde4164925379995e839 100644
GIT binary patch
literal 105808
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%0A_}4+g1aZo)
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