diff --git a/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java b/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
index 9fa93f7a0..8e276f896 100644
--- a/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
+++ b/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureConfig.java
@@ -63,7 +63,7 @@ import org.w3c.dom.events.EventListener;
* This class bundles the configuration options used for the existing
* signature facets.
* Apart of the thread local members (e.g. opc-package) most values will probably be constant, so
- * it might be configured centrally (e.g. by spring)
+ * it might be configured centrally (e.g. by spring)
*/
@SuppressWarnings({"unused","WeakerAccess"})
public class SignatureConfig {
@@ -76,14 +76,14 @@ public class SignatureConfig {
public interface SignatureConfigurable {
- void setSignatureConfig(SignatureConfig signatureConfig);
+ void setSignatureConfig(SignatureConfig signatureConfig);
}
private ThreadLocal opcPackage = new ThreadLocal<>();
private ThreadLocal signatureFactory = new ThreadLocal<>();
private ThreadLocal keyInfoFactory = new ThreadLocal<>();
private ThreadLocal provider = new ThreadLocal<>();
-
+
private List signatureFacets = new ArrayList<>();
private HashAlgorithm digestAlgo = HashAlgorithm.sha256;
private Date executionTime = new Date();
@@ -96,11 +96,11 @@ public class SignatureConfig {
private SignaturePolicyService signaturePolicyService;
private URIDereferencer uriDereferencer;
private String canonicalizationMethod = CanonicalizationMethod.INCLUSIVE;
-
+
private boolean includeEntireCertificateChain = true;
private boolean includeIssuerSerial;
private boolean includeKeyValue;
-
+
/**
* the time-stamp service used for XAdES-T and XAdES-X.
*/
@@ -123,7 +123,7 @@ public class SignatureConfig {
private String tspRequestPolicy = "1.3.6.1.4.1.13762.3";
private String userAgent = "POI XmlSign Service TSP Client";
private String proxyUrl;
-
+
/**
* the optional revocation data service used for XAdES-C and XAdES-X-L.
* When null
the signature will be limited to XAdES-T only.
@@ -148,16 +148,16 @@ public class SignatureConfig {
* null
value will trigger an automatically generated signature Id.
*/
private String packageSignatureId = "idPackageSignature";
-
+
/**
* Gives back the human-readable description of what the citizen will be
* signing. The default value is "Office OpenXML Document".
*/
private String signatureDescription = "Office OpenXML Document";
-
+
/**
* The process of signing includes the marshalling of xml structures.
- * This also includes the canonicalization. Currently this leads to problems
+ * This also includes the canonicalization. Currently this leads to problems
* with certain namespaces, so this EventListener is used to interfere
* with the marshalling process.
*/
@@ -177,7 +177,7 @@ public class SignatureConfig {
/**
* Inits and checks the config object.
- * If not set previously, complex configuration properties also get
+ * If not set previously, complex configuration properties also get
* created/initialized via this initialization call.
*
* @param onlyValidation if true, only a subset of the properties
@@ -202,7 +202,7 @@ public class SignatureConfig {
namespacePrefixes.put(OO_DIGSIG_NS, "mdssi");
namespacePrefixes.put(XADES_132_NS, "xd");
}
-
+
if (onlyValidation) {
return;
}
@@ -210,15 +210,15 @@ public class SignatureConfig {
if (signatureMarshalListener == null) {
signatureMarshalListener = new SignatureMarshalListener();
}
-
+
if (signatureMarshalListener instanceof SignatureConfigurable) {
((SignatureConfigurable)signatureMarshalListener).setSignatureConfig(this);
}
-
+
if (tspService != null) {
tspService.setSignatureConfig(this);
}
-
+
if (signatureFacets.isEmpty()) {
addSignatureFacet(new OOXMLSignatureFacet());
addSignatureFacet(new KeyInfoSignatureFacet());
@@ -230,14 +230,14 @@ public class SignatureConfig {
sf.setSignatureConfig(this);
}
}
-
+
/**
- * @param signatureFacet the signature facet is appended to facet list
+ * @param signatureFacet the signature facet is appended to facet list
*/
public void addSignatureFacet(SignatureFacet signatureFacet) {
signatureFacets.add(signatureFacet);
}
-
+
/**
* @return the list of facets, may be empty when the config object is not initialized
*/
@@ -265,14 +265,14 @@ public class SignatureConfig {
public void setDigestAlgo(HashAlgorithm digestAlgo) {
this.digestAlgo = digestAlgo;
}
-
+
/**
* @return the opc package to be used by this thread, stored as thread-local
*/
public OPCPackage getOpcPackage() {
return opcPackage.get();
}
-
+
/**
* @param opcPackage the opc package to be handled by this thread, stored as thread-local
*/
@@ -398,14 +398,14 @@ public class SignatureConfig {
public void setSignatureDescription(String signatureDescription) {
this.signatureDescription = signatureDescription;
}
-
+
/**
* @return the default canonicalization method, defaults to INCLUSIVE
*/
public String getCanonicalizationMethod() {
return canonicalizationMethod;
}
-
+
/**
* @param canonicalizationMethod the default canonicalization method
*/
@@ -459,15 +459,15 @@ public class SignatureConfig {
public void setTspUrl(String tspUrl) {
this.tspUrl = tspUrl;
}
-
+
/**
* @return if true, uses timestamp-request/response mimetype,
- * if false, timestamp-query/reply mimetype
+ * if false, timestamp-query/reply mimetype
*/
public boolean isTspOldProtocol() {
return tspOldProtocol;
}
-
+
/**
* @param tspOldProtocol defines the timestamp-protocol mimetype
* @see #isTspOldProtocol
@@ -475,7 +475,7 @@ public class SignatureConfig {
public void setTspOldProtocol(boolean tspOldProtocol) {
this.tspOldProtocol = tspOldProtocol;
}
-
+
/**
* @return the hash algorithm to be used for the timestamp entry.
* Defaults to the hash algorithm of the main entry
@@ -483,7 +483,7 @@ public class SignatureConfig {
public HashAlgorithm getTspDigestAlgo() {
return nvl(tspDigestAlgo,digestAlgo);
}
-
+
/**
* @param tspDigestAlgo the algorithm to be used for the timestamp entry.
* if null
, the hash algorithm of the main entry
@@ -499,7 +499,7 @@ public class SignatureConfig {
public String getProxyUrl() {
return proxyUrl;
}
-
+
/**
* @param proxyUrl the proxy url to be used for all communications.
* Currently this affects the timestamp service
@@ -507,56 +507,56 @@ public class SignatureConfig {
public void setProxyUrl(String proxyUrl) {
this.proxyUrl = proxyUrl;
}
-
+
/**
* @return the timestamp service. Defaults to {@link TSPTimeStampService}
*/
public TimeStampService getTspService() {
return tspService;
}
-
+
/**
* @param tspService the timestamp service
*/
public void setTspService(TimeStampService tspService) {
this.tspService = tspService;
}
-
+
/**
* @return the user id for the timestamp service - currently only basic authorization is supported
*/
public String getTspUser() {
return tspUser;
}
-
+
/**
* @param tspUser the user id for the timestamp service - currently only basic authorization is supported
*/
public void setTspUser(String tspUser) {
this.tspUser = tspUser;
}
-
+
/**
* @return the password for the timestamp service
*/
public String getTspPass() {
return tspPass;
}
-
+
/**
* @param tspPass the password for the timestamp service
*/
public void setTspPass(String tspPass) {
this.tspPass = tspPass;
}
-
+
/**
* @return the validator for the timestamp service (certificate)
*/
public TimeStampServiceValidator getTspValidator() {
return tspValidator;
}
-
+
/**
* @param tspValidator the validator for the timestamp service (certificate)
*/
@@ -586,7 +586,7 @@ public class SignatureConfig {
public HashAlgorithm getXadesDigestAlgo() {
return nvl(xadesDigestAlgo,digestAlgo);
}
-
+
/**
* @param xadesDigestAlgo hash algorithm used for XAdES.
* When null
, defaults to {@link #getDigestAlgo()}
@@ -611,7 +611,7 @@ public class SignatureConfig {
public String getUserAgent() {
return userAgent;
}
-
+
/**
* @param userAgent the user agent used for http communication (e.g. to the TSP)
*/
@@ -626,7 +626,7 @@ public class SignatureConfig {
public String getTspRequestPolicy() {
return tspRequestPolicy;
}
-
+
/**
* @param tspRequestPolicy the asn.1 object id for the tsp request policy.
*/
@@ -636,7 +636,7 @@ public class SignatureConfig {
/**
* @return true, if the whole certificate chain is included in the signature.
- * When false, only the signer cert will be included
+ * When false, only the signer cert will be included
*/
public boolean isIncludeEntireCertificateChain() {
return includeEntireCertificateChain;
@@ -728,7 +728,7 @@ public class SignatureConfig {
* Make sure the DN is encoded using the same order as present
* within the certificate. This is an Office2010 work-around.
* Should be reverted back.
- *
+ *
* XXX: not correct according to RFC 4514.
*
* @return when true, the issuer DN is used instead of the issuer X500 principal
@@ -744,7 +744,7 @@ public class SignatureConfig {
this.xadesIssuerNameNoReverseOrder = xadesIssuerNameNoReverseOrder;
}
-
+
/**
* @return the event listener which is active while xml structure for
* the signature is created.
@@ -813,8 +813,8 @@ public class SignatureConfig {
/**
* Converts the digest algorithm - currently only sha* and ripemd160 is supported.
- * MS Office only supports sha1, sha256, sha384, sha512.
- *
+ * MS Office only supports sha1, sha256, sha384, sha512.
+ *
* @param digestAlgo the digest algorithm
* @return the uri for the given digest
*/
@@ -835,7 +835,7 @@ public class SignatureConfig {
* Converts the digest algorithm ur - currently only sha* and ripemd160 is supported.
* MS Office only supports sha1, sha256, sha384, sha512.
*
- * @param digestAlgo the digest algorithm uri
+ * @param digestMethodUri the digest algorithm uri
* @return the hash algorithm for the given digest
*/
private static HashAlgorithm getDigestMethodAlgo(String digestMethodUri) {
@@ -895,7 +895,7 @@ public class SignatureConfig {
public void setSignatureFactory(XMLSignatureFactory signatureFactory) {
this.signatureFactory.set(signatureFactory);
}
-
+
/**
* @return the xml signature factory (thread-local)
*/
@@ -914,7 +914,7 @@ public class SignatureConfig {
public void setKeyInfoFactory(KeyInfoFactory keyInfoFactory) {
this.keyInfoFactory.set(keyInfoFactory);
}
-
+
/**
* @return the key factory (thread-local)
*/
@@ -934,10 +934,10 @@ public class SignatureConfig {
* the Santuario xmlsec provider
* the JDK xmlsec provider
*
- *
+ *
* For signing the classes are linked against the Santuario xmlsec, so this might
* only work for validation (not tested).
- *
+ *
* @return the xml dsig provider
*/
public Provider getProvider() {
@@ -948,7 +948,7 @@ public class SignatureConfig {
// Santuario xmlsec
"org.apache.jcp.xml.dsig.internal.dom.XMLDSigRI",
// JDK xmlsec
- "org.jcp.xml.dsig.internal.dom.XMLDSigRI"
+ "org.jcp.xml.dsig.internal.dom.XMLDSigRI"
};
for (String pn : dsigProviderNames) {
if (pn == null) {
@@ -966,7 +966,7 @@ public class SignatureConfig {
if (prov == null) {
throw new RuntimeException("JRE doesn't support default xml signature provider - set jsr105Provider system property!");
}
-
+
return prov;
}
diff --git a/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFShape.java b/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFShape.java
index c2b22de4f..0427817fd 100644
--- a/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFShape.java
+++ b/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFShape.java
@@ -116,13 +116,15 @@ public class XDGFShape extends XDGFSheet {
_parentPage = parentPage;
TextType text = shapeSheet.getText();
- if (text != null)
+ if (text != null) {
_text = new XDGFText(text, this);
+ }
if (shapeSheet.isSetShapes()) {
_shapes = new ArrayList<>();
- for (ShapeSheetType shape : shapeSheet.getShapes().getShapeArray())
+ for (ShapeSheetType shape : shapeSheet.getShapes().getShapeArray()) {
_shapes.add(new XDGFShape(this, shape, parentPage, document));
+ }
}
readProperties();
@@ -130,10 +132,11 @@ public class XDGFShape extends XDGFSheet {
@Override
public String toString() {
- if (_parentPage instanceof XDGFMasterContents)
+ if (_parentPage instanceof XDGFMasterContents) {
return _parentPage + ": ";
- else
+ } else {
return "";
+ }
}
protected void readProperties() {
@@ -181,9 +184,10 @@ public class XDGFShape extends XDGFSheet {
if (obj.isSetMaster()) {
_master = pageContents.getMasterById(obj.getMaster());
- if (_master == null)
+ if (_master == null) {
throw XDGFException.error("refers to non-existant master "
+ obj.getMaster(), this);
+ }
/*
* If a master has one top-level shape, a shape that inherits from
@@ -209,11 +213,12 @@ public class XDGFShape extends XDGFSheet {
}
} else if (obj.isSetMasterShape()) {
- _masterShape = master.getShapeById(obj.getMasterShape());
- if (_masterShape == null)
+ _masterShape = (master == null) ? null : master.getShapeById(obj.getMasterShape());
+ if (_masterShape == null) {
throw XDGFException.error(
"refers to non-existant master shape "
+ obj.getMasterShape(), this);
+ }
}
@@ -229,21 +234,24 @@ public class XDGFShape extends XDGFSheet {
protected void setupSectionMasters() {
- if (_masterShape == null)
+ if (_masterShape == null) {
return;
+ }
try {
for (Entry section : _sections.entrySet()) {
XDGFSection master = _masterShape.getSection(section.getKey());
- if (master != null)
+ if (master != null) {
section.getValue().setupMaster(master);
+ }
}
for (Entry section : _geometry.entrySet()) {
GeometrySection master = _masterShape.getGeometryByIdx(section
.getKey());
- if (master != null)
+ if (master != null) {
section.getValue().setupMaster(master);
+ }
}
} catch (POIXMLException e) {
throw XDGFException.wrap(this.toString(), e);
@@ -266,8 +274,9 @@ public class XDGFShape extends XDGFSheet {
public String getTextAsString() {
XDGFText text = getText();
- if (text == null)
+ if (text == null) {
return "";
+ }
return text.getTextContent();
}
@@ -294,7 +303,7 @@ public class XDGFShape extends XDGFSheet {
}
/**
- * Only available if this shape is a shape group, may be null
+ * Only available if this shape is a shape group, may be null
*/
// -> May be null
public List getShapes() {
@@ -304,28 +313,32 @@ public class XDGFShape extends XDGFSheet {
// unique to this shape on the page?
public String getName() {
String name = getXmlObject().getName();
- if (name == null)
+ if (name == null) {
return "";
+ }
return name;
}
// unique to this shape on the page?
public String getShapeType() {
String type = getXmlObject().getType();
- if (type == null)
+ if (type == null) {
return "";
+ }
return type;
}
// name of the symbol that this was derived from
public String getSymbolName() {
- if (_master == null)
+ if (_master == null) {
return "";
+ }
String name = _master.getName();
- if (name == null)
+ if (name == null) {
return "";
+ }
return name;
}
@@ -345,8 +358,9 @@ public class XDGFShape extends XDGFSheet {
XDGFShape top = null;
if (_parent != null) {
top = _parent.getTopmostParentShape();
- if (top == null)
+ if (top == null) {
top = _parent;
+ }
}
return top;
@@ -381,190 +395,223 @@ public class XDGFShape extends XDGFSheet {
}
public XDGFText getText() {
- if (_text == null && _masterShape != null)
+ if (_text == null && _masterShape != null) {
return _masterShape.getText();
+ }
return _text;
}
public Double getPinX() {
- if (_pinX == null && _masterShape != null)
+ if (_pinX == null && _masterShape != null) {
return _masterShape.getPinX();
+ }
- if (_pinX == null)
+ if (_pinX == null) {
throw XDGFException.error("PinX not set!", this);
+ }
return _pinX;
}
public Double getPinY() {
- if (_pinY == null && _masterShape != null)
+ if (_pinY == null && _masterShape != null) {
return _masterShape.getPinY();
+ }
- if (_pinY == null)
+ if (_pinY == null) {
throw XDGFException.error("PinY not specified!", this);
+ }
return _pinY;
}
public Double getWidth() {
- if (_width == null && _masterShape != null)
+ if (_width == null && _masterShape != null) {
return _masterShape.getWidth();
+ }
- if (_width == null)
+ if (_width == null) {
throw XDGFException.error("Width not specified!", this);
+ }
return _width;
}
public Double getHeight() {
- if (_height == null && _masterShape != null)
+ if (_height == null && _masterShape != null) {
return _masterShape.getHeight();
+ }
- if (_height == null)
+ if (_height == null) {
throw XDGFException.error("Height not specified!", this);
+ }
return _height;
}
public Double getLocPinX() {
- if (_locPinX == null && _masterShape != null)
+ if (_locPinX == null && _masterShape != null) {
return _masterShape.getLocPinX();
+ }
- if (_locPinX == null)
+ if (_locPinX == null) {
throw XDGFException.error("LocPinX not specified!", this);
+ }
return _locPinX;
}
public Double getLocPinY() {
- if (_locPinY == null && _masterShape != null)
+ if (_locPinY == null && _masterShape != null) {
return _masterShape.getLocPinY();
+ }
- if (_locPinY == null)
+ if (_locPinY == null) {
throw XDGFException.error("LocPinY not specified!", this);
+ }
return _locPinY;
}
public Double getBeginX() {
- if (_beginX == null && _masterShape != null)
+ if (_beginX == null && _masterShape != null) {
return _masterShape.getBeginX();
+ }
return _beginX;
}
public Double getBeginY() {
- if (_beginY == null && _masterShape != null)
+ if (_beginY == null && _masterShape != null) {
return _masterShape.getBeginY();
+ }
return _beginY;
}
public Double getEndX() {
- if (_endX == null && _masterShape != null)
+ if (_endX == null && _masterShape != null) {
return _masterShape.getEndX();
+ }
return _endX;
}
public Double getEndY() {
- if (_endY == null && _masterShape != null)
+ if (_endY == null && _masterShape != null) {
return _masterShape.getEndY();
+ }
return _endY;
}
public Double getAngle() {
- if (_angle == null && _masterShape != null)
+ if (_angle == null && _masterShape != null) {
return _masterShape.getAngle();
+ }
return _angle;
}
public Boolean getFlipX() {
- if (_flipX == null && _masterShape != null)
+ if (_flipX == null && _masterShape != null) {
return _masterShape.getFlipX();
+ }
return _flipX;
}
public Boolean getFlipY() {
- if (_flipY == null && _masterShape != null)
+ if (_flipY == null && _masterShape != null) {
return _masterShape.getFlipY();
+ }
return _flipY;
}
public Double getTxtPinX() {
if (_txtPinX == null && _masterShape != null
- && _masterShape._txtPinX != null)
+ && _masterShape._txtPinX != null) {
return _masterShape._txtPinX;
+ }
- if (_txtPinX == null)
+ if (_txtPinX == null) {
return getWidth() * 0.5;
+ }
return _txtPinX;
}
public Double getTxtPinY() {
if (_txtLocPinY == null && _masterShape != null
- && _masterShape._txtLocPinY != null)
+ && _masterShape._txtLocPinY != null) {
return _masterShape._txtLocPinY;
+ }
- if (_txtPinY == null)
+ if (_txtPinY == null) {
return getHeight() * 0.5;
+ }
return _txtPinY;
}
public Double getTxtLocPinX() {
if (_txtLocPinX == null && _masterShape != null
- && _masterShape._txtLocPinX != null)
+ && _masterShape._txtLocPinX != null) {
return _masterShape._txtLocPinX;
+ }
- if (_txtLocPinX == null)
+ if (_txtLocPinX == null) {
return getTxtWidth() * 0.5;
+ }
return _txtLocPinX;
}
public Double getTxtLocPinY() {
if (_txtLocPinY == null && _masterShape != null
- && _masterShape._txtLocPinY != null)
+ && _masterShape._txtLocPinY != null) {
return _masterShape._txtLocPinY;
+ }
- if (_txtLocPinY == null)
+ if (_txtLocPinY == null) {
return getTxtHeight() * 0.5;
+ }
return _txtLocPinY;
}
public Double getTxtAngle() {
- if (_txtAngle == null && _masterShape != null)
+ if (_txtAngle == null && _masterShape != null) {
return _masterShape.getTxtAngle();
+ }
return _txtAngle;
}
public Double getTxtWidth() {
if (_txtWidth == null && _masterShape != null
- && _masterShape._txtWidth != null)
+ && _masterShape._txtWidth != null) {
return _masterShape._txtWidth;
+ }
- if (_txtWidth == null)
+ if (_txtWidth == null) {
return getWidth();
+ }
return _txtWidth;
}
public Double getTxtHeight() {
if (_txtHeight == null && _masterShape != null
- && _masterShape._txtHeight != null)
+ && _masterShape._txtHeight != null) {
return _masterShape._txtHeight;
+ }
- if (_txtHeight == null)
+ if (_txtHeight == null) {
return getHeight();
+ }
return _txtHeight;
}
@@ -573,8 +620,9 @@ public class XDGFShape extends XDGFSheet {
public Integer getLineCap() {
Integer lineCap = super.getLineCap();
- if (lineCap != null)
+ if (lineCap != null) {
return lineCap;
+ }
// get from master
if (_masterShape != null) {
@@ -589,8 +637,9 @@ public class XDGFShape extends XDGFSheet {
public Color getLineColor() {
Color lineColor = super.getLineColor();
- if (lineColor != null)
+ if (lineColor != null) {
return lineColor;
+ }
// get from master
if (_masterShape != null) {
@@ -605,8 +654,9 @@ public class XDGFShape extends XDGFSheet {
public Integer getLinePattern() {
Integer linePattern = super.getLinePattern();
- if (linePattern != null)
+ if (linePattern != null) {
return linePattern;
+ }
// get from master
if (_masterShape != null) {
@@ -621,8 +671,9 @@ public class XDGFShape extends XDGFSheet {
public Double getLineWeight() {
Double lineWeight = super.getLineWeight();
- if (lineWeight != null)
+ if (lineWeight != null) {
return lineWeight;
+ }
// get from master
if (_masterShape != null) {
@@ -637,8 +688,9 @@ public class XDGFShape extends XDGFSheet {
public Color getFontColor() {
Color fontColor = super.getFontColor();
- if (fontColor != null)
+ if (fontColor != null) {
return fontColor;
+ }
// get from master
if (_masterShape != null) {
@@ -653,8 +705,9 @@ public class XDGFShape extends XDGFSheet {
public Double getFontSize() {
Double fontSize = super.getFontSize();
- if (fontSize != null)
+ if (fontSize != null) {
return fontSize;
+ }
// get from master
if (_masterShape != null) {
@@ -791,11 +844,11 @@ public class XDGFShape extends XDGFSheet {
public Rectangle2D.Double getBounds() {
return new Rectangle2D.Double(0, 0, getWidth(), getHeight());
}
-
+
/**
* @return returns bounds as a path in local coordinates, which is
* userful if you need to transform to global coordinates
- *
+ *
* Warning: Don't use this for 1d objects, and will fail for
* infinite line objects
*/
@@ -819,8 +872,9 @@ public class XDGFShape extends XDGFSheet {
*/
public Path2D.Double getPath() {
for (GeometrySection geoSection : getGeometrySections()) {
- if (geoSection.getNoShow())
+ if (geoSection.getNoShow()) {
continue;
+ }
return geoSection.getPath(this);
}
@@ -833,8 +887,9 @@ public class XDGFShape extends XDGFSheet {
*/
public boolean hasGeometry() {
for (GeometrySection geoSection : getGeometrySections()) {
- if (!geoSection.getNoShow())
+ if (!geoSection.getNoShow()) {
return true;
+ }
}
return false;
}
@@ -889,8 +944,9 @@ public class XDGFShape extends XDGFSheet {
tr.concatenate(getParentTransform());
try {
- if (visitor.accept(this))
+ if (visitor.accept(this)) {
visitor.visit(this, tr, level);
+ }
if (_shapes != null) {
for (XDGFShape shape : _shapes) {
@@ -914,8 +970,9 @@ public class XDGFShape extends XDGFSheet {
public void visitShapes(ShapeVisitor visitor, int level) {
try {
- if (visitor.accept(this))
+ if (visitor.accept(this)) {
visitor.visit(this, null, level);
+ }
if (_shapes != null) {
for (XDGFShape shape : _shapes) {
diff --git a/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFText.java b/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFText.java
index f3b24f905..c823bb343 100644
--- a/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFText.java
+++ b/src/ooxml/java/org/apache/poi/xdgf/usermodel/XDGFText.java
@@ -52,7 +52,7 @@ public class XDGFText {
// is a mixed type)
return ((TextTypeImpl) _text).getStringValue();
}
-
+
/**
* These are in the shape coordinate system
*
@@ -82,8 +82,8 @@ public class XDGFText {
public Path2D.Double getBoundsAsPath() {
Rectangle2D.Double rect = getTextBounds();
- Double w = rect.getWidth();
- Double h = rect.getHeight();
+ double w = rect.getWidth();
+ double h = rect.getHeight();
Path2D.Double bounds = new Path2D.Double();
bounds.moveTo(0, 0);
@@ -94,7 +94,7 @@ public class XDGFText {
return bounds;
}
-
+
/**
* @return Center of text in local coordinates
*/
@@ -110,8 +110,9 @@ public class XDGFText {
public void draw(Graphics2D graphics) {
String textContent = getTextContent();
- if (textContent.length() == 0)
+ if (textContent.length() == 0) {
return;
+ }
Rectangle2D.Double bounds = getTextBounds();
@@ -140,22 +141,25 @@ public class XDGFText {
}
Double txtAngle = _parent.getTxtAngle();
- if (txtAngle != null && Math.abs(txtAngle) > 0.01)
+ if (txtAngle != null && Math.abs(txtAngle) > 0.01) {
graphics.rotate(txtAngle);
+ }
float nextY = 0;
for (String line : lines) {
- if (line.length() == 0)
+ if (line.length() == 0) {
continue;
+ }
TextLayout layout = new TextLayout(line, font, frc);
- if (layout.isLeftToRight())
+ if (layout.isLeftToRight()) {
layout.draw(graphics, 0, nextY);
- else
+ } else {
layout.draw(graphics,
(float) (bounds.width - layout.getAdvance()), nextY);
+ }
nextY += layout.getAscent() + layout.getDescent()
+ layout.getLeading();
diff --git a/src/ooxml/java/org/apache/poi/xdgf/util/HierarchyPrinter.java b/src/ooxml/java/org/apache/poi/xdgf/util/HierarchyPrinter.java
index 92fbcb0d2..eb37159ba 100644
--- a/src/ooxml/java/org/apache/poi/xdgf/util/HierarchyPrinter.java
+++ b/src/ooxml/java/org/apache/poi/xdgf/util/HierarchyPrinter.java
@@ -22,6 +22,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
+import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.UnsupportedEncodingException;
@@ -38,17 +39,17 @@ import org.apache.poi.xdgf.usermodel.shape.ShapeVisitor;
public class HierarchyPrinter {
public static void printHierarchy(XDGFPage page, File outDir)
- throws FileNotFoundException, UnsupportedEncodingException {
+ throws FileNotFoundException, UnsupportedEncodingException, IOException {
File pageFile = new File(outDir, "page" + page.getPageNumber() + "-"
+ Util.sanitizeFilename(page.getName()) + ".txt");
- OutputStream os = new FileOutputStream(pageFile);
- PrintStream pos = new PrintStream(os, false, "utf-8");
-
- printHierarchy(page, pos);
-
- pos.close();
+ try (
+ OutputStream os = new FileOutputStream(pageFile);
+ PrintStream pos = new PrintStream(os, false, "utf-8")
+ ) {
+ printHierarchy(page, pos);
+ }
}
public static void printHierarchy(XDGFPage page, final PrintStream os) {
@@ -71,7 +72,7 @@ public class HierarchyPrinter {
}
public static void printHierarchy(XmlVisioDocument document,
- String outDirname) throws FileNotFoundException, UnsupportedEncodingException {
+ String outDirname) throws FileNotFoundException, UnsupportedEncodingException, IOException {
File outDir = new File(outDirname);
@@ -89,8 +90,9 @@ public class HierarchyPrinter {
String inFilename = args[0];
String outDir = args[1];
- XmlVisioDocument doc = new XmlVisioDocument(new FileInputStream(
- inFilename));
- printHierarchy(doc, outDir);
+ try (FileInputStream is = new FileInputStream(inFilename)) {
+ XmlVisioDocument doc = new XmlVisioDocument(is);
+ printHierarchy(doc, outDir);
+ }
}
}
diff --git a/src/ooxml/java/org/apache/poi/xdgf/util/VsdxToPng.java b/src/ooxml/java/org/apache/poi/xdgf/util/VsdxToPng.java
index 7706ca19e..815eaee82 100644
--- a/src/ooxml/java/org/apache/poi/xdgf/util/VsdxToPng.java
+++ b/src/ooxml/java/org/apache/poi/xdgf/util/VsdxToPng.java
@@ -21,7 +21,10 @@ import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
import javax.imageio.ImageIO;
@@ -33,7 +36,7 @@ import org.apache.poi.xdgf.usermodel.shape.ShapeRenderer;
/**
* Converts a Visio diagram to a PNG file.
- *
+ *
* As more elements and styles are added/supported the output will get
* better, but it's very rough right now.
*/
@@ -91,11 +94,8 @@ public class VsdxToPng {
graphics.dispose();
- OutputStream out = new FileOutputStream(outFile);
- try {
+ try (FileOutputStream out = new FileOutputStream(outFile)) {
ImageIO.write(img, "png", out);
- } finally {
- out.close();
}
}
@@ -127,8 +127,9 @@ public class VsdxToPng {
renderer = new ShapeDebuggerRenderer();
}
- XmlVisioDocument doc = new XmlVisioDocument(new FileInputStream(
- inFilename));
- renderToPng(doc, pngDir, 2000 / 11.0, renderer);
+ try (FileInputStream is = new FileInputStream(inFilename)) {
+ XmlVisioDocument doc = new XmlVisioDocument(is);
+ renderToPng(doc, pngDir, 2000 / 11.0, renderer);
+ }
}
}
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
index 401903076..687ddc5f5 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
@@ -36,6 +36,7 @@ import org.apache.poi.ooxml.POIXMLDocument;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ooxml.POIXMLException;
import org.apache.poi.ooxml.extractor.POIXMLPropertiesTextExtractor;
+import org.apache.poi.ooxml.util.PackageHelper;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.openxml4j.opc.PackagePart;
@@ -50,7 +51,6 @@ import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.LittleEndianConsts;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
-import org.apache.poi.ooxml.util.PackageHelper;
import org.apache.poi.util.Units;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
@@ -362,7 +362,7 @@ public class XMLSlideShow extends POIXMLDocument
CTNotesMasterIdListEntry notesMasterId = notesMasterIdList.addNewNotesMasterId();
notesMasterId.setId(rp.getRelationship().getId());
- Integer themeIndex = 1;
+ int themeIndex = 1;
// TODO: check if that list can be replaced by idx = Math.max(idx,themeIdx)
List themeIndexList = new ArrayList<>();
for (POIXMLDocumentPart p : getRelations()) {
@@ -626,7 +626,7 @@ public class XMLSlideShow extends POIXMLDocument
// TODO: implement!
throw new UnsupportedOperationException();
}
-
+
@Override
public POIXMLPropertiesTextExtractor getMetadataTextExtractor() {
return new POIXMLPropertiesTextExtractor(this);
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java
index d7aed091b..50b82df3b 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFColor.java
@@ -48,7 +48,7 @@ import org.w3c.dom.Node;
@Internal
public class XSLFColor {
private final static POILogger LOGGER = POILogFactory.getLogger(XSLFColor.class);
-
+
private XmlObject _xmlObject;
private Color _color;
private CTSchemeColor _phClr;
@@ -128,7 +128,7 @@ public class XSLFColor {
}
};
}
-
+
private Color toColor(XmlObject obj, XSLFTheme theme) {
Color color = null;
for (XmlObject ch : obj.selectPath("*")) {
@@ -207,19 +207,19 @@ public class XSLFColor {
if (fill.isSetScrgbClr()) {
fill.unsetScrgbClr();
}
-
+
if (fill.isSetHslClr()) {
fill.unsetHslClr();
}
-
+
if (fill.isSetPrstClr()) {
fill.unsetPrstClr();
}
-
+
if (fill.isSetSchemeClr()) {
fill.unsetSchemeClr();
}
-
+
if (fill.isSetSysClr()) {
fill.unsetSysClr();
}
@@ -227,12 +227,12 @@ public class XSLFColor {
float[] rgbaf = color.getRGBComponents(null);
boolean addAlpha = (rgbaf.length == 4 && rgbaf[3] < 1f);
CTPositiveFixedPercentage alphaPct;
-
+
// see office open xml part 4 - 5.1.2.2.30 and 5.1.2.2.32
if (isInt(rgbaf[0]) && isInt(rgbaf[1]) && isInt(rgbaf[2])) {
// sRGB has a gamma of 2.2
CTSRgbColor rgb = fill.addNewSrgbClr();
-
+
byte rgbBytes[] = { (byte)color.getRed(), (byte)color.getGreen(), (byte)color.getBlue() };
rgb.setVal(rgbBytes);
alphaPct = (addAlpha) ? rgb.addNewAlpha() : null;
@@ -249,14 +249,14 @@ public class XSLFColor {
alphaPct.setVal((int)(100000 * rgbaf[3]));
}
}
-
+
/**
* @return true, if this is an integer color value
*/
private static boolean isInt(float f) {
- return Math.abs((f*255f) - Math.rint(f*255f)) < 0.00001f;
+ return Math.abs((f*255d) - Math.rint(f*255d)) < 0.00001;
}
-
+
private int getRawValue(String elem) {
String query = "declare namespace a='http://schemas.openxmlformats.org/drawingml/2006/main' $this//a:" + elem;
@@ -281,9 +281,9 @@ public class XSLFColor {
}
}
- return -1;
+ return -1;
}
-
+
/**
* Read a perecentage value from the supplied xml bean.
* Example:
@@ -305,7 +305,7 @@ public class XSLFColor {
* or -1 if the value is not set
*/
int getAlpha(){
- return getPercentageValue("alpha");
+ return getPercentageValue("alpha");
}
/**
@@ -413,7 +413,7 @@ public class XSLFColor {
/**
* specifies the input color with the specific red component, but with the blue and green color
* components unchanged
- *
+ *
* @return the value of the red component specified as a
* percentage with 0% indicating minimal blue and 100% indicating maximum
* or -1 if the value is not set
@@ -479,7 +479,7 @@ public class XSLFColor {
/**
* specifies a darker version of its input color.
* A 10% shade is 10% of the input color combined with 90% black.
- *
+ *
* @return the value of the shade specified as a
* percentage with 0% indicating minimal shade and 100% indicating maximum
* or -1 if the value is not set
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
index 64b92a9bb..72d19e7ae 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFNotes.java
@@ -49,9 +49,7 @@ implements Notes {
*
* @param part the package part holding the notes data,
* the content type must be application/vnd.openxmlformats-officedocument.notes+xml
- * @param rel the package relationship holding this notes,
- * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/notes
- *
+ *
* @since POI 3.14-Beta1
*/
XSLFNotes(PackagePart part) throws IOException, XmlException {
@@ -77,7 +75,7 @@ implements Notes {
@Override
protected String getRootElementName(){
- return "notes";
+ return "notes";
}
@Override
diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java
index 4d162027e..aded851db 100644
--- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java
+++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFShape.java
@@ -70,7 +70,7 @@ import org.openxmlformats.schemas.presentationml.x2006.main.STPlaceholderType;
@Beta
public abstract class XSLFShape implements Shape {
static final String PML_NS = "http://schemas.openxmlformats.org/presentationml/2006/main";
-
+
private final XmlObject _shape;
private final XSLFSheet _sheet;
private XSLFShapeContainer _parent;
@@ -82,7 +82,7 @@ public abstract class XSLFShape implements Shape {
_shape = shape;
_sheet = sheet;
}
-
+
/**
* @return the xml bean holding this shape's data
*/
@@ -91,11 +91,12 @@ public abstract class XSLFShape implements Shape {
// the (not existing) xmlbeans hierarchy and subclasses shouldn't narrow it's return value
return _shape;
}
-
+
+ @Override
public XSLFSheet getSheet() {
return _sheet;
}
-
+
@Override
public String getShapeName(){
return getCNvPr().getName();
@@ -124,22 +125,24 @@ public abstract class XSLFShape implements Shape {
PlaceableShape,?> ps = (PlaceableShape,?>)this;
ps.setAnchor(sh.getAnchor());
}
-
-
+
+
}
-
+
public void setParent(XSLFShapeContainer parent) {
this._parent = parent;
}
-
+
+ @Override
public XSLFShapeContainer getParent() {
return this._parent;
}
-
+
protected PaintStyle getFillPaint() {
final XSLFTheme theme = getSheet().getTheme();
final boolean hasPlaceholder = getPlaceholder() != null;
PropertyFetcher fetcher = new PropertyFetcher() {
+ @Override
public boolean fetch(XSLFShape shape) {
XSLFFillProperties fp = XSLFPropertiesDelegate.getFillDelegate(shape.getShapeProperties());
if (fp == null) {
@@ -150,7 +153,7 @@ public abstract class XSLFShape implements Shape {
setValue(null);
return true;
}
-
+
PackagePart pp = shape.getSheet().getPackagePart();
PaintStyle paint = selectPaint(fp, null, pp, theme, hasPlaceholder);
if (paint != null) {
@@ -167,8 +170,8 @@ public abstract class XSLFShape implements Shape {
setValue(paint);
return true;
}
-
-
+
+
return false;
}
};
@@ -181,16 +184,16 @@ public abstract class XSLFShape implements Shape {
protected CTBackgroundProperties getBgPr() {
return getChild(CTBackgroundProperties.class, PML_NS, "bgPr");
}
-
+
@SuppressWarnings("unused")
protected CTStyleMatrixReference getBgRef() {
return getChild(CTStyleMatrixReference.class, PML_NS, "bgRef");
}
-
+
protected CTGroupShapeProperties getGrpSpPr() {
return getChild(CTGroupShapeProperties.class, PML_NS, "grpSpPr");
}
-
+
protected CTNonVisualDrawingProps getCNvPr() {
if (_nvPr == null) {
String xquery = "declare namespace p='http://schemas.openxmlformats.org/presentationml/2006/main' .//*/p:cNvPr";
@@ -239,7 +242,7 @@ public abstract class XSLFShape implements Shape {
public Placeholder getPlaceholder() {
return getPlaceholderDetails().getPlaceholder();
}
-
+
/**
* @see PlaceholderDetails#setPlaceholder(Placeholder)
*/
@@ -268,7 +271,9 @@ public abstract class XSLFShape implements Shape {
@SuppressWarnings({"unchecked", "WeakerAccess"})
protected T selectProperty(Class resultClass, String xquery) {
XmlObject[] rs = getXmlObject().selectPath(xquery);
- if (rs.length == 0) return null;
+ if (rs.length == 0) {
+ return null;
+ }
return (resultClass.isInstance(rs[0])) ? (T)rs[0] : null;
}
@@ -281,7 +286,7 @@ public abstract class XSLFShape implements Shape {
* slideLayout
* slideMaster
*
- *
+ *
* Currently themes and their defaults aren't correctly handled
*
* @param visitor the object that collects the desired property
@@ -299,7 +304,7 @@ public abstract class XSLFShape implements Shape {
return false;
}
MasterSheet sm = getSheet().getMasterSheet();
-
+
// try slide layout
if (sm instanceof XSLFSlideLayout) {
XSLFSlideLayout slideLayout = (XSLFSlideLayout)sm;
@@ -309,7 +314,7 @@ public abstract class XSLFShape implements Shape {
}
sm = slideLayout.getMasterSheet();
}
-
+
// try slide master
if (sm instanceof XSLFSlideMaster) {
XSLFSlideMaster master = (XSLFSlideMaster)sm;
@@ -317,15 +322,15 @@ public abstract class XSLFShape implements Shape {
XSLFSimpleShape masterShape = master.getPlaceholderByType(textType);
return masterShape != null && visitor.fetch(masterShape);
}
-
+
return false;
}
-
+
private static int getPlaceholderType(CTPlaceholder ph) {
if ( !ph.isSetType()) {
return STPlaceholderType.INT_BODY;
}
-
+
switch (ph.getType().intValue()) {
case STPlaceholderType.INT_TITLE:
case STPlaceholderType.INT_CTR_TITLE:
@@ -397,7 +402,8 @@ public abstract class XSLFShape implements Shape {
throw new RuntimeException(e);
}
}
-
+
+ @Override
public InputStream getImageData() {
try {
return getPart().getInputStream();
@@ -406,17 +412,19 @@ public abstract class XSLFShape implements Shape {
}
}
+ @Override
public String getContentType() {
/* TOOD: map content-type */
return getPart().getContentType();
}
+ @Override
public int getAlpha() {
return (blip.sizeOfAlphaModFixArray() > 0)
? blip.getAlphaModFixArray(0).getAmt()
: 100000;
}
- };
+ };
}
@SuppressWarnings("WeakerAccess")
@@ -426,14 +434,14 @@ public abstract class XSLFShape implements Shape {
final CTGradientStop[] gs = gradFill.getGsLst().getGsArray();
Arrays.sort(gs, (o1, o2) -> {
- Integer pos1 = o1.getPos();
- Integer pos2 = o2.getPos();
- return pos1.compareTo(pos2);
+ int pos1 = o1.getPos();
+ int pos2 = o2.getPos();
+ return Integer.compare(pos1, pos2);
});
final ColorStyle cs[] = new ColorStyle[gs.length];
final float fractions[] = new float[gs.length];
-
+
int i=0;
for (CTGradientStop cgs : gs) {
CTSchemeColor phClrCgs = phClr;
@@ -444,32 +452,37 @@ public abstract class XSLFShape implements Shape {
fractions[i] = cgs.getPos() / 100000.f;
i++;
}
-
+
return new GradientPaint() {
+ @Override
public double getGradientAngle() {
return (gradFill.isSetLin())
? gradFill.getLin().getAng() / 60000.d
: 0;
}
+ @Override
public ColorStyle[] getGradientColors() {
return cs;
}
+ @Override
public float[] getGradientFractions() {
return fractions;
}
+ @Override
public boolean isRotatedWithShape() {
return gradFill.getRotWithShape();
}
+ @Override
public GradientType getGradientType() {
if (gradFill.isSetLin()) {
return GradientType.linear;
}
-
+
if (gradFill.isSetPath()) {
/* TODO: handle rect path */
STPathShadeType.Enum ps = gradFill.getPath().getPath();
@@ -479,16 +492,18 @@ public abstract class XSLFShape implements Shape {
return GradientType.shape;
}
}
-
+
return GradientType.linear;
}
- };
+ };
}
-
+
@SuppressWarnings("WeakerAccess")
protected static PaintStyle selectPaint(CTStyleMatrixReference fillRef, final XSLFTheme theme, boolean isLineStyle, boolean hasPlaceholder) {
- if (fillRef == null) return null;
-
+ if (fillRef == null) {
+ return null;
+ }
+
// The idx attribute refers to the index of a fill style or
// background fill style within the presentation's style matrix, defined by the fmtScheme element.
// value of 0 or 1000 indicates no background,
@@ -513,7 +528,7 @@ public abstract class XSLFShape implements Shape {
fp = XSLFPropertiesDelegate.getFillDelegate(cur.getObject());
}
cur.dispose();
-
+
CTSchemeColor phClr = fillRef.getSchemeClr();
PaintStyle res = selectPaint(fp, phClr, theme.getPackagePart(), theme, hasPlaceholder);
// check for empty placeholder value
@@ -524,12 +539,12 @@ public abstract class XSLFShape implements Shape {
XSLFColor col = new XSLFColor(fillRef, theme, phClr);
return DrawPaint.createSolidPaint(col.getColorStyle());
}
-
+
@Override
public void draw(Graphics2D graphics, Rectangle2D bounds) {
DrawFactory.getInstance(graphics).drawShape(graphics, this, bounds);
}
-
+
/**
* Return the shape specific (visual) properties
*
diff --git a/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java b/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java
index 79327bce4..b3288d46f 100644
--- a/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java
+++ b/src/ooxml/java/org/apache/poi/xslf/util/PPTX2PNG.java
@@ -74,13 +74,13 @@ public class PPTX2PNG {
for (int i = 0; i < args.length; i++) {
if (args[i].startsWith("-")) {
if ("-scale".equals(args[i])) {
- scale = Float.parseFloat(args[++i]);
+ scale = Float.parseFloat(args[++i]); // lgtm[java/index-out-of-bounds]
} else if ("-slide".equals(args[i])) {
- slidenumStr = args[++i];
+ slidenumStr = args[++i]; // lgtm[java/index-out-of-bounds]
} else if ("-format".equals(args[i])) {
- format = args[++i];
+ format = args[++i]; // lgtm[java/index-out-of-bounds]
} else if ("-outdir".equals(args[i])) {
- outdir = new File(args[++i]);
+ outdir = new File(args[++i]); // lgtm[java/index-out-of-bounds]
} else if ("-quiet".equals(args[i])) {
quiet = true;
}
@@ -98,11 +98,11 @@ public class PPTX2PNG {
usage("Invalid format given");
return;
}
-
+
if (outdir == null) {
outdir = file.getParentFile();
}
-
+
if (!"null".equals(format) && (outdir == null || !outdir.exists() || !outdir.isDirectory())) {
usage("Output directory doesn't exist");
return;
@@ -112,7 +112,7 @@ public class PPTX2PNG {
usage("Invalid scale given");
return;
}
-
+
if (!quiet) {
System.out.println("Processing " + file);
}
@@ -169,7 +169,7 @@ public class PPTX2PNG {
System.out.println("Done");
}
}
-
+
private static Set slideIndexes(final int slideCount, String range) {
Set slideIdx = new TreeSet<>();
if ("-1".equals(range)) {
diff --git a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBUtils.java b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBUtils.java
index b2176d2d5..6f1dd70bd 100644
--- a/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBUtils.java
+++ b/src/ooxml/java/org/apache/poi/xssf/binary/XSSFBUtils.java
@@ -51,7 +51,7 @@ public class XSSFBUtils {
int numBytes = 2*(int)numChars;
offset += 4;
if (offset+numBytes > data.length) {
- throw new XSSFBParseException("trying to read beyond data length:" +
+ throw new XSSFBParseException("trying to read beyond data length: " +
"offset="+offset+", numBytes="+numBytes+", data.length="+data.length);
}
sb.append(new String(data, offset, numBytes, StandardCharsets.UTF_16LE));
diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java
index 9884ce093..9f0379493 100644
--- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java
+++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java
@@ -39,22 +39,22 @@ import org.apache.poi.util.NotImplemented;
public class SXSSFRow implements Row, Comparable
{
private static final Boolean UNDEFINED = null;
-
+
private final SXSSFSheet _sheet; // parent sheet
private final SortedMap _cells = new TreeMap<>();
private short _style = -1; // index of cell style in style table
private short _height = -1; // row height in twips (1/20 point)
private boolean _zHeight; // row zero-height (this is somehow different than being hidden)
private int _outlineLevel; // Outlining level of the row, when outlining is on
- // use Boolean to have a tri-state for on/off/undefined
+ // use Boolean to have a tri-state for on/off/undefined
private Boolean _hidden = UNDEFINED;
private Boolean _collapsed = UNDEFINED;
-
+
public SXSSFRow(SXSSFSheet sheet)
{
_sheet=sheet;
}
-
+
public Iterator allCellsIterator()
{
return new CellIterator();
@@ -71,7 +71,7 @@ public class SXSSFRow implements Row, Comparable
void setOutlineLevel(int level){
_outlineLevel = level;
}
-
+
/**
* get row hidden state: Hidden (true), Unhidden (false), Undefined (null)
*
@@ -235,7 +235,7 @@ public class SXSSFRow implements Row, Comparable
public SXSSFCell getCell(int cellnum, MissingCellPolicy policy)
{
checkBounds(cellnum);
-
+
final SXSSFCell cell = _cells.get(cellnum);
switch (policy) {
case RETURN_NULL_AND_BLANK:
@@ -345,10 +345,11 @@ public class SXSSFRow implements Row, Comparable
@Override
public void setHeightInPoints(float height)
{
- if(height==-1)
+ if(height==-1) {
_height=-1;
- else
+ } else {
_height=(short)(height*20);
+ }
}
/**
@@ -375,7 +376,7 @@ public class SXSSFRow implements Row, Comparable
{
return (float)(_height==-1?getSheet().getDefaultRowHeightInPoints():_height/20.0);
}
-
+
/**
* Is this row formatted? Most aren't, but some rows
* do have whole-row styles. For those that do, you
@@ -392,16 +393,18 @@ public class SXSSFRow implements Row, Comparable
*/
@Override
public CellStyle getRowStyle() {
- if(!isFormatted()) return null;
-
+ if(!isFormatted()) {
+ return null;
+ }
+
return getSheet().getWorkbook().getCellStyleAt(_style);
}
-
+
@Internal
/*package*/ int getRowStyleIndex() {
return _style;
}
-
+
/**
* Applies a whole-row cell styling to the row.
* The row style can be cleared by passing in null .
@@ -440,7 +443,7 @@ public class SXSSFRow implements Row, Comparable
/**
* Create an iterator over the cells from [0, getLastCellNum()).
* Includes blank cells, excludes empty cells
- *
+ *
* Returns an iterator over all filled cells (created via Row.createCell())
* Throws ConcurrentModificationException if cells are added, moved, or
* removed after the iterator is created.
@@ -485,10 +488,11 @@ public class SXSSFRow implements Row, Comparable
@Override
public Cell next() throws NoSuchElementException
{
- if (hasNext())
+ if (hasNext()) {
return _cells.get(pos++);
- else
+ } else {
throw new NoSuchElementException();
+ }
}
@Override
public void remove()
@@ -496,7 +500,7 @@ public class SXSSFRow implements Row, Comparable
throw new UnsupportedOperationException();
}
}
-
+
/**
* Compares two SXSSFRow objects. Two rows are equal if they belong to the same worksheet and
* their row indexes are equal.
@@ -524,9 +528,9 @@ public class SXSSFRow implements Row, Comparable
throw new IllegalArgumentException("The compared rows must belong to the same sheet");
}
- Integer thisRow = this.getRowNum();
- Integer otherRow = other.getRowNum();
- return thisRow.compareTo(otherRow);
+ int thisRow = this.getRowNum();
+ int otherRow = other.getRowNum();
+ return Integer.compare(thisRow, otherRow);
}
@Override
diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
index 3f42faab5..1ae1e9921 100644
--- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
+++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDrawing.java
@@ -446,7 +446,7 @@ public final class XSSFDrawing extends POIXMLDocumentPart implements Drawing {
_cells.put(colI, cell);
sheet.onReadCell(cell);
}
-
+
if (! row.isSetR()) {
// Certain file format writers skip the row number
// Assume no gaps, and give this the next row number
@@ -158,9 +158,9 @@ public class XSSFRow implements Row, Comparable {
throw new IllegalArgumentException("The compared rows must belong to the same sheet");
}
- Integer thisRow = this.getRowNum();
- Integer otherRow = other.getRowNum();
- return thisRow.compareTo(otherRow);
+ int thisRow = this.getRowNum();
+ int otherRow = other.getRowNum();
+ return Integer.compare(thisRow, otherRow);
}
@Override
@@ -245,7 +245,9 @@ public class XSSFRow implements Row, Comparable {
*/
@Override
public XSSFCell getCell(int cellnum, MissingCellPolicy policy) {
- if(cellnum < 0) throw new IllegalArgumentException("Cell index must be >= 0");
+ if(cellnum < 0) {
+ throw new IllegalArgumentException("Cell index must be >= 0");
+ }
// Performance optimization for bug 57840: explicit boxing is slightly faster than auto-unboxing, though may use more memory
final Integer colI = Integer.valueOf(cellnum); // NOSONAR
@@ -332,8 +334,12 @@ public class XSSFRow implements Row, Comparable {
@Override
public void setHeight(short height) {
if (height == -1) {
- if (_row.isSetHt()) _row.unsetHt();
- if (_row.isSetCustomHeight()) _row.unsetCustomHeight();
+ if (_row.isSetHt()) {
+ _row.unsetHt();
+ }
+ if (_row.isSetCustomHeight()) {
+ _row.unsetCustomHeight();
+ }
} else {
_row.setHt((double) height / 20);
_row.setCustomHeight(true);
@@ -425,8 +431,10 @@ public class XSSFRow implements Row, Comparable {
*/
@Override
public XSSFCellStyle getRowStyle() {
- if(!isFormatted()) return null;
-
+ if(!isFormatted()) {
+ return null;
+ }
+
StylesTable stylesSource = getSheet().getWorkbook().getStylesSource();
if(stylesSource.getNumCellStyles() > 0) {
return stylesSource.getStyleAt((int)_row.getS());
@@ -434,7 +442,7 @@ public class XSSFRow implements Row, Comparable {
return null;
}
}
-
+
/**
* Applies a whole-row cell styling to the row.
* If the value is null then the style information is removed,
@@ -449,7 +457,7 @@ public class XSSFRow implements Row, Comparable {
}
} else {
StylesTable styleSource = getSheet().getWorkbook().getStylesSource();
-
+
XSSFCellStyle xStyle = (XSSFCellStyle)style;
xStyle.verifyBelongsToStylesSource(styleSource);
@@ -458,7 +466,7 @@ public class XSSFRow implements Row, Comparable {
_row.setCustomFormat(true);
}
}
-
+
/**
* Remove the Cell from this row.
*
@@ -502,8 +510,8 @@ public class XSSFRow implements Row, Comparable {
int i = 0;
for (XSSFCell xssfCell : _cells.values()) {
cArray[i] = (CTCell) xssfCell.getCTCell().copy();
-
- // we have to copy and re-create the XSSFCell here because the
+
+ // we have to copy and re-create the XSSFCell here because the
// elements as otherwise setCArray below invalidates all the columns!
// see Bug 56170, XMLBeans seems to always release previous objects
// in the CArray, so we need to provide completely new ones here!
@@ -537,7 +545,7 @@ public class XSSFRow implements Row, Comparable {
}
setRowNum(rownum);
}
-
+
/**
* Copy the cells from srcRow to this row
* If this row is not a blank row, this will merge the two rows, overwriting
@@ -589,7 +597,7 @@ public class XSSFRow implements Row, Comparable {
final int srcRowNum = srcRow.getRowNum();
final int destRowNum = getRowNum();
final int rowDifference = destRowNum - srcRowNum;
-
+
final FormulaShifter formulaShifter = FormulaShifter.createForRowCopy(sheetIndex, sheetName, srcRowNum, srcRowNum, rowDifference, SpreadsheetVersion.EXCEL2007);
final XSSFRowShifter rowShifter = new XSSFRowShifter(_sheet);
rowShifter.updateRowFormulas(this, formulaShifter);
@@ -617,7 +625,7 @@ public class XSSFRow implements Row, Comparable {
public int getOutlineLevel() {
return _row.getOutlineLevel();
}
-
+
/**
* Shifts column range [firstShiftColumnIndex-lastShiftColumnIndex] step places to the right.
* @param firstShiftColumnIndex the column to start shifting
@@ -626,20 +634,23 @@ public class XSSFRow implements Row, Comparable {
*/
@Override
public void shiftCellsRight(int firstShiftColumnIndex, int lastShiftColumnIndex, int step) {
- if(step < 0)
+ if(step < 0) {
throw new IllegalArgumentException("Shifting step may not be negative ");
- if(firstShiftColumnIndex > lastShiftColumnIndex)
+ }
+ if(firstShiftColumnIndex > lastShiftColumnIndex) {
throw new IllegalArgumentException(String.format(LocaleUtil.getUserLocale(),
"Incorrect shifting range : %d-%d", firstShiftColumnIndex, lastShiftColumnIndex));
- for (int columnIndex = lastShiftColumnIndex; columnIndex >= firstShiftColumnIndex; columnIndex--){ // process cells backwards, because of shifting
+ }
+ for (int columnIndex = lastShiftColumnIndex; columnIndex >= firstShiftColumnIndex; columnIndex--){ // process cells backwards, because of shifting
shiftCell(columnIndex, step);
}
for (int columnIndex = firstShiftColumnIndex; columnIndex <= firstShiftColumnIndex+step-1; columnIndex++)
{
_cells.remove(columnIndex);
XSSFCell targetCell = getCell(columnIndex);
- if(targetCell != null)
+ if(targetCell != null) {
targetCell.getCTCell().set(CTCell.Factory.newInstance());
+ }
}
}
/**
@@ -650,27 +661,32 @@ public class XSSFRow implements Row, Comparable {
*/
@Override
public void shiftCellsLeft(int firstShiftColumnIndex, int lastShiftColumnIndex, int step) {
- if(step < 0)
+ if(step < 0) {
throw new IllegalArgumentException("Shifting step may not be negative ");
- if(firstShiftColumnIndex > lastShiftColumnIndex)
+ }
+ if(firstShiftColumnIndex > lastShiftColumnIndex) {
throw new IllegalArgumentException(String.format(LocaleUtil.getUserLocale(),
"Incorrect shifting range : %d-%d", firstShiftColumnIndex, lastShiftColumnIndex));
- if(firstShiftColumnIndex - step < 0)
+ }
+ if(firstShiftColumnIndex - step < 0) {
throw new IllegalStateException("Column index less than zero : " + (Integer.valueOf(firstShiftColumnIndex + step)).toString());
- for (int columnIndex = firstShiftColumnIndex; columnIndex <= lastShiftColumnIndex; columnIndex++){
+ }
+ for (int columnIndex = firstShiftColumnIndex; columnIndex <= lastShiftColumnIndex; columnIndex++){
shiftCell(columnIndex, -step);
}
for (int columnIndex = lastShiftColumnIndex-step+1; columnIndex <= lastShiftColumnIndex; columnIndex++){
_cells.remove(columnIndex);
XSSFCell targetCell = getCell(columnIndex);
- if(targetCell != null)
+ if(targetCell != null) {
targetCell.getCTCell().set(CTCell.Factory.newInstance());
+ }
}
}
private void shiftCell(int columnIndex, int step/*pass negative value for left shift*/){
- if(columnIndex + step < 0) // only for shifting left
+ if(columnIndex + step < 0) {
throw new IllegalStateException("Column index less than zero : " + (Integer.valueOf(columnIndex + step)).toString());
-
+ }
+
XSSFCell currentCell = getCell(columnIndex);
if(currentCell != null){
currentCell.setCellNum(columnIndex+step);
@@ -679,8 +695,9 @@ public class XSSFRow implements Row, Comparable {
else {
_cells.remove(columnIndex+step);
XSSFCell targetCell = getCell(columnIndex+step);
- if(targetCell != null)
+ if(targetCell != null) {
targetCell.getCTCell().set(CTCell.Factory.newInstance());
+ }
}
}
}
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java
index 587674edc..99ab66a7e 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java
@@ -40,16 +40,16 @@ public class XWPFSDTContent implements ISDTContent {
// private final IBody part;
// private final XWPFDocument document;
- private List paragraphs = new ArrayList<>();
- private List tables = new ArrayList<>();
- private List runs = new ArrayList<>();
- private List contentControls = new ArrayList<>();
+ // private List paragraphs = new ArrayList<>();
+ // private List tables = new ArrayList<>();
+ // private List runs = new ArrayList<>();
+ // private List contentControls = new ArrayList<>();
private List bodyElements = new ArrayList<>();
public XWPFSDTContent(CTSdtContentRun sdtRun, IBody part, IRunBody parent) {
for (CTR ctr : sdtRun.getRArray()) {
XWPFRun run = new XWPFRun(ctr, parent);
- runs.add(run);
+ // runs.add(run);
bodyElements.add(run);
}
}
@@ -62,24 +62,25 @@ public class XWPFSDTContent implements ISDTContent {
if (o instanceof CTP) {
XWPFParagraph p = new XWPFParagraph((CTP) o, part);
bodyElements.add(p);
- paragraphs.add(p);
+ // paragraphs.add(p);
} else if (o instanceof CTTbl) {
XWPFTable t = new XWPFTable((CTTbl) o, part);
bodyElements.add(t);
- tables.add(t);
+ // tables.add(t);
} else if (o instanceof CTSdtBlock) {
XWPFSDT c = new XWPFSDT(((CTSdtBlock) o), part);
bodyElements.add(c);
- contentControls.add(c);
+ // contentControls.add(c);
} else if (o instanceof CTR) {
XWPFRun run = new XWPFRun((CTR) o, parent);
- runs.add(run);
+ // runs.add(run);
bodyElements.add(run);
}
}
cursor.dispose();
}
+ @Override
public String getText() {
StringBuilder text = new StringBuilder();
boolean addNewLine = false;
@@ -130,6 +131,7 @@ public class XWPFSDTContent implements ISDTContent {
}
}
+ @Override
public String toString() {
return getText();
}
diff --git a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
index 0caca8c6d..9352fe8a1 100644
--- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
+++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTable.java
@@ -161,8 +161,9 @@ public class XWPFTable implements IBodyElement, ISDTContents {
this.ctTbl = table;
// is an empty table: I add one row and one column as default
- if (table.sizeOfTrArray() == 0)
+ if (table.sizeOfTrArray() == 0) {
createEmptyTable(table);
+ }
for (CTRow row : table.getTrList()) {
StringBuilder rowText = new StringBuilder();
@@ -233,7 +234,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
return text.toString();
}
-
+
/**
* This method has existed since 2008 without an implementation.
* It will be removed unless an implementation is provided.
@@ -288,7 +289,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get the width value as an integer.
* If the width type is AUTO, DXA, or NIL, the value is 20ths of a point. If
- * the width type is PCT, the value is the percentage times 50 (e.g., 2500 for 50%).
+ * the width type is PCT, the value is the percentage times 50 (e.g., 2500 for 50%). |
* @return width value as an integer
*/
public int getWidth() {
@@ -322,7 +323,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
}
/**
- * Returns CTTblPr object for table. If force parameter is true, will
+ * Returns CTTblPr object for table. If force parameter is true, will
* create the element if necessary. If force parameter is false, returns
* null when CTTblPr element is missing.
*
@@ -343,7 +344,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
private CTTblBorders getTblBorders(boolean force) {
CTTblPr tblPr = getTblPr(force);
return tblPr == null ? null
- : tblPr.isSetTblBorders() ? tblPr.getTblBorders()
+ : tblPr.isSetTblBorders() ? tblPr.getTblBorders()
: force ? tblPr.addNewTblBorders()
: null;
}
@@ -413,18 +414,18 @@ public class XWPFTable implements IBodyElement, ISDTContents {
: tPr.isSetJc() ? TableRowAlign.valueOf(tPr.getJc().getVal().intValue())
: null;
}
-
+
/**
* Set table alignment to specified {@link TableRowAlign}
*
- * @param ha {@link TableRowAlign} to set
+ * @param tra {@link TableRowAlign} to set
*/
public void setTableAlignment(TableRowAlign tra) {
CTTblPr tPr = getTblPr(true);
CTJc jc = tPr.isSetJc() ? tPr.getJc() : tPr.addNewJc();
jc.setVal(STJc.Enum.forInt(tra.getValue()));
}
-
+
/**
* Removes the table alignment attribute from a table
*/
@@ -434,7 +435,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
tPr.unsetJc();
}
}
-
+
private void addColumn(XWPFTableRow tabRow, int sizeCol) {
if (sizeCol > 0) {
for (int i = 0; i < sizeCol; i++) {
@@ -486,7 +487,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get inside horizontal border size
- *
+ *
* @return The width of the Inside Horizontal borders in 1/8th points,
* -1 if missing.
*/
@@ -496,7 +497,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get inside horizontal border spacing
- *
+ *
* @return The offset to the Inside Horizontal borders in points,
* -1 if missing.
*/
@@ -506,7 +507,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get inside horizontal border color
- *
+ *
* @return The color of the Inside Horizontal borders, null if missing.
*/
public String getInsideHBorderColor() {
@@ -524,7 +525,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get inside vertical border size
- *
+ *
* @return The width of the Inside vertical borders in 1/8th points,
* -1 if missing.
*/
@@ -534,7 +535,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get inside vertical border spacing
- *
+ *
* @return The offset to the Inside vertical borders in points,
* -1 if missing.
*/
@@ -544,7 +545,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get inside vertical border color
- *
+ *
* @return The color of the Inside vertical borders, null if missing.
*/
public String getInsideVBorderColor() {
@@ -562,7 +563,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get top border size
- *
+ *
* @return The width of the top borders in 1/8th points,
* -1 if missing.
*/
@@ -572,7 +573,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get top border spacing
- *
+ *
* @return The offset to the top borders in points,
* -1 if missing.
*/
@@ -582,7 +583,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get top border color
- *
+ *
* @return The color of the top borders, null if missing.
*/
public String getTopBorderColor() {
@@ -600,7 +601,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get bottom border size
- *
+ *
* @return The width of the bottom borders in 1/8th points,
* -1 if missing.
*/
@@ -610,7 +611,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get bottom border spacing
- *
+ *
* @return The offset to the bottom borders in points,
* -1 if missing.
*/
@@ -620,7 +621,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get bottom border color
- *
+ *
* @return The color of the bottom borders, null if missing.
*/
public String getBottomBorderColor() {
@@ -638,7 +639,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get Left border size
- *
+ *
* @return The width of the Left borders in 1/8th points,
* -1 if missing.
*/
@@ -648,7 +649,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get Left border spacing
- *
+ *
* @return The offset to the Left borders in points,
* -1 if missing.
*/
@@ -658,7 +659,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get Left border color
- *
+ *
* @return The color of the Left borders, null if missing.
*/
public String getLeftBorderColor() {
@@ -676,7 +677,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get Right border size
- *
+ *
* @return The width of the Right borders in 1/8th points,
* -1 if missing.
*/
@@ -686,7 +687,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get Right border spacing
- *
+ *
* @return The offset to the Right borders in points,
* -1 if missing.
*/
@@ -696,7 +697,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
/**
* Get Right border color
- *
+ *
* @return The color of the Right borders, null if missing.
*/
public String getRightBorderColor() {
@@ -770,7 +771,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
* of a point) and a maximum value of 96 (twelve points). Any values outside this
* range may be reassigned to a more appropriate value.
* @param space - Specifies the spacing offset that shall be used to place this border on the table
- * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
+ * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
* or auto to allow a consumer to automatically determine the border color as appropriate.
*/
public void setInsideHBorder(XWPFBorderType type, int size, int space, String rgbColor) {
@@ -786,7 +787,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
* of a point) and a maximum value of 96 (twelve points). Any values outside this
* range may be reassigned to a more appropriate value.
* @param space - Specifies the spacing offset that shall be used to place this border on the table
- * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
+ * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
* or auto to allow a consumer to automatically determine the border color as appropriate.
*/
public void setInsideVBorder(XWPFBorderType type, int size, int space, String rgbColor) {
@@ -802,7 +803,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
* of a point) and a maximum value of 96 (twelve points). Any values outside this
* range may be reassigned to a more appropriate value.
* @param space - Specifies the spacing offset that shall be used to place this border on the table
- * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
+ * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
* or auto to allow a consumer to automatically determine the border color as appropriate.
*/
public void setTopBorder(XWPFBorderType type, int size, int space, String rgbColor) {
@@ -818,7 +819,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
* of a point) and a maximum value of 96 (twelve points). Any values outside this
* range may be reassigned to a more appropriate value.
* @param space - Specifies the spacing offset that shall be used to place this border on the table
- * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
+ * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
* or auto to allow a consumer to automatically determine the border color as appropriate.
*/
public void setBottomBorder(XWPFBorderType type, int size, int space, String rgbColor) {
@@ -834,7 +835,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
* of a point) and a maximum value of 96 (twelve points). Any values outside this
* range may be reassigned to a more appropriate value.
* @param space - Specifies the spacing offset that shall be used to place this border on the table
- * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
+ * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
* or auto to allow a consumer to automatically determine the border color as appropriate.
*/
public void setLeftBorder(XWPFBorderType type, int size, int space, String rgbColor) {
@@ -850,7 +851,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
* of a point) and a maximum value of 96 (twelve points). Any values outside this
* range may be reassigned to a more appropriate value.
* @param space - Specifies the spacing offset that shall be used to place this border on the table
- * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
+ * @param rgbColor - This color may either be presented as a hex value (in RRGGBB format),
* or auto to allow a consumer to automatically determine the border color as appropriate.
*/
public void setRightBorder(XWPFBorderType type, int size, int space, String rgbColor) {
@@ -872,14 +873,14 @@ public class XWPFTable implements IBodyElement, ISDTContents {
public void removeInsideHBorder() {
removeBorder(Border.INSIDE_H);
}
-
+
/**
* Remove inside vertical borders for table
*/
public void removeInsideVBorder() {
removeBorder(Border.INSIDE_V);
}
-
+
/**
* Remove top borders for table
*/
@@ -893,21 +894,21 @@ public class XWPFTable implements IBodyElement, ISDTContents {
public void removeBottomBorder() {
removeBorder(Border.BOTTOM);
}
-
+
/**
* Remove left borders for table
*/
public void removeLeftBorder() {
removeBorder(Border.LEFT);
}
-
+
/**
* Remove right borders for table
*/
public void removeRightBorder() {
removeBorder(Border.RIGHT);
}
-
+
/**
* Remove all borders from table
*/
@@ -959,7 +960,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
}
/**
- * removes the Borders node from Table properties if there are
+ * removes the Borders node from Table properties if there are
* no border elements
*/
private void cleanupTblBorders() {
@@ -976,7 +977,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
}
}
}
-
+
public int getCellMarginTop() {
return getCellMargin(CTTblCellMar::getTop);
}
@@ -1095,10 +1096,12 @@ public class XWPFTable implements IBodyElement, ISDTContents {
*
* @see org.apache.poi.xwpf.usermodel.IBodyElement#getElementType()
*/
+ @Override
public BodyElementType getElementType() {
return BodyElementType.TABLE;
}
+ @Override
public IBody getBody() {
return part;
}
@@ -1108,6 +1111,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
*
* @see org.apache.poi.xwpf.usermodel.IBody#getPart()
*/
+ @Override
public POIXMLDocumentPart getPart() {
if (part != null) {
return part.getPart();
@@ -1120,6 +1124,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
*
* @see org.apache.poi.xwpf.usermodel.IBody#getPartType()
*/
+ @Override
public BodyType getPartType() {
return part.getPartType();
}
@@ -1130,11 +1135,13 @@ public class XWPFTable implements IBodyElement, ISDTContents {
*/
public XWPFTableRow getRow(CTRow row) {
for (int i = 0; i < getRows().size(); i++) {
- if (getRows().get(i).getCtRow() == row) return getRow(i);
+ if (getRows().get(i).getCtRow() == row) {
+ return getRow(i);
+ }
}
return null;
}
-
+
/**
* Get the table width as a decimal value.
* If the width type is DXA or AUTO, then the value will always have
@@ -1159,14 +1166,14 @@ public class XWPFTable implements IBodyElement, ISDTContents {
protected static double getWidthDecimal(CTTblWidth ctWidth) {
double result = 0.0;
STTblWidth.Enum typeValue = ctWidth.getType();
- if (typeValue == STTblWidth.DXA
- || typeValue == STTblWidth.AUTO
+ if (typeValue == STTblWidth.DXA
+ || typeValue == STTblWidth.AUTO
|| typeValue == STTblWidth.NIL) {
result = 0.0 + ctWidth.getW().intValue();
} else if (typeValue == STTblWidth.PCT) {
// Percentage values are stored as integers that are 50 times
// percentage.
- result = ctWidth.getW().intValue() / 50.0;
+ result = ctWidth.getW().intValue() / 50.0;
} else {
// Should never get here
}
@@ -1230,7 +1237,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
protected static void setWidthValue(String widthValue, CTTblWidth ctWidth) {
if (!widthValue.matches(REGEX_WIDTH_VALUE)) {
throw new RuntimeException("Table width value \"" + widthValue + "\" "
- + "must match regular expression \"" + REGEX_WIDTH_VALUE + "\".");
+ + "must match regular expression \"" + REGEX_WIDTH_VALUE + "\".");
}
if (widthValue.matches("auto")) {
ctWidth.setType(STTblWidth.AUTO);
@@ -1240,13 +1247,13 @@ public class XWPFTable implements IBodyElement, ISDTContents {
} else {
// Must be an integer
ctWidth.setW(new BigInteger(widthValue));
- ctWidth.setType(STTblWidth.DXA);
+ ctWidth.setType(STTblWidth.DXA);
}
}
/**
* Set the underlying table width value to a percentage value.
- * @param ctWidth The CTTblWidth to set the value on
+ * @param ctWidth The CTTblWidth to set the value on
* @param widthValue String width value in form "33.3%" or an integer that is 50 times desired percentage value (e.g,
* 2500 for 50%)
* @since 4.0.0
@@ -1257,7 +1264,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
String numberPart = widthValue.substring(0, widthValue.length() - 1);
double percentage = Double.parseDouble(numberPart) * 50;
long intValue = Math.round(percentage);
- ctWidth.setW(BigInteger.valueOf(intValue));
+ ctWidth.setW(BigInteger.valueOf(intValue));
} else if (widthValue.matches("[0-9]+")) {
ctWidth.setW(new BigInteger(widthValue));
} else {
@@ -1275,7 +1282,7 @@ public class XWPFTable implements IBodyElement, ISDTContents {
* @since 4.0.0
*/
public void setWidthType(TableWidthType widthType) {
- setWidthType(widthType, getTblPr().getTblW());
+ setWidthType(widthType, getTblPr().getTblW());
}
/**