From b919ad9989e15448dcc330cb8408a31ee2358db4 Mon Sep 17 00:00:00 2001
From: Andreas Beeker
Date: Mon, 2 Jan 2017 00:55:49 +0000
Subject: [PATCH] Sonarqube fixes - replace RuntimeException with application
specific runtime exception - clean-up sources - add braces to if statements
and add override annotations - fix a few hslf blockers
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1776896 13f79535-47bb-0310-9956-ffa450edef68
---
.../poi/hslf/record/ColorSchemeAtom.java | 18 +-
.../poi/hslf/record/FontEntityAtom.java | 7 +-
.../poi/hslf/record/PersistPtrHolder.java | 3 +-
.../org/apache/poi/hslf/record/Record.java | 9 +-
.../apache/poi/hslf/record/RecordTypes.java | 2 +-
.../org/apache/poi/hslf/record/SlideAtom.java | 9 +-
.../poi/hslf/record/StyleTextPropAtom.java | 22 ++-
.../poi/hslf/record/TextHeaderAtom.java | 18 +-
.../poi/hslf/record/TextSpecInfoAtom.java | 2 +-
.../apache/poi/hslf/record/UserEditAtom.java | 20 +-
.../poi/hslf/usermodel/HSLFFreeformShape.java | 12 +-
.../poi/hslf/usermodel/HSLFSimpleShape.java | 22 ++-
.../apache/poi/hslf/usermodel/HSLFSlide.java | 44 +++--
.../usermodel/HSLFSlideShowEncrypted.java | 19 +-
.../apache/poi/hslf/usermodel/HSLFTable.java | 16 +-
.../poi/hslf/usermodel/HSLFTextParagraph.java | 178 +++++++++++-------
16 files changed, 257 insertions(+), 144 deletions(-)
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/ColorSchemeAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/ColorSchemeAtom.java
index 9d14b7bff..c720a555c 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/ColorSchemeAtom.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/ColorSchemeAtom.java
@@ -17,10 +17,12 @@
package org.apache.poi.hslf.record;
-import org.apache.poi.util.LittleEndian;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
-import java.io.ByteArrayOutputStream;
+
+import org.apache.poi.hslf.exceptions.HSLFException;
+import org.apache.poi.util.LittleEndian;
/**
* A ColorSchemeAtom (type 2032). Holds the 8 RGB values for the different
@@ -97,7 +99,7 @@ public final class ColorSchemeAtom extends RecordAtom {
if(len < 40) {
len = 40;
if(source.length - start < 40) {
- throw new RuntimeException("Not enough data to form a ColorSchemeAtom (always 40 bytes long) - found " + (source.length - start));
+ throw new HSLFException("Not enough data to form a ColorSchemeAtom (always 40 bytes long) - found " + (source.length - start));
}
}
@@ -140,7 +142,8 @@ public final class ColorSchemeAtom extends RecordAtom {
/**
* We are of type 3999
*/
- public long getRecordType() { return _type; }
+ @Override
+ public long getRecordType() { return _type; }
/**
@@ -155,7 +158,7 @@ public final class ColorSchemeAtom extends RecordAtom {
writeLittleEndian(rgb,baos);
} catch(IOException ie) {
// Should never happen
- throw new RuntimeException(ie);
+ throw new HSLFException(ie);
}
byte[] b = baos.toByteArray();
System.arraycopy(b,0,ret,0,3);
@@ -174,7 +177,7 @@ public final class ColorSchemeAtom extends RecordAtom {
*/
public static int joinRGB(byte[] rgb) {
if(rgb.length != 3) {
- throw new RuntimeException("joinRGB accepts a byte array of 3 values, but got one of " + rgb.length + " values!");
+ throw new HSLFException("joinRGB accepts a byte array of 3 values, but got one of " + rgb.length + " values!");
}
byte[] with_zero = new byte[4];
System.arraycopy(rgb,0,with_zero,0,3);
@@ -188,7 +191,8 @@ public final class ColorSchemeAtom extends RecordAtom {
* Write the contents of the record back, so it can be written
* to disk
*/
- public void writeOut(OutputStream out) throws IOException {
+ @Override
+ public void writeOut(OutputStream out) throws IOException {
// Header - size or type unchanged
out.write(_header);
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java
index 23a7fe1e4..80126fdb9 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/FontEntityAtom.java
@@ -20,6 +20,7 @@ package org.apache.poi.hslf.record;
import java.io.IOException;
import java.io.OutputStream;
+import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.StringUtil;
@@ -67,6 +68,7 @@ public final class FontEntityAtom extends RecordAtom {
LittleEndian.putInt(_header, 4, _recdata.length);
}
+ @Override
public long getRecordType() {
return RecordTypes.FontEntityAtom.typeID;
}
@@ -103,7 +105,7 @@ public final class FontEntityAtom extends RecordAtom {
// Ensure it's not now too long
if(name.length() > 32) {
- throw new RuntimeException("The length of the font name, including null termination, must not exceed 32 characters");
+ throw new HSLFException("The length of the font name, including null termination, must not exceed 32 characters");
}
// Everything's happy, so save the name
@@ -207,7 +209,8 @@ public final class FontEntityAtom extends RecordAtom {
/**
* Write the contents of the record back, so it can be written to disk
*/
- public void writeOut(OutputStream out) throws IOException {
+ @Override
+ public void writeOut(OutputStream out) throws IOException {
out.write(_header);
out.write(_recdata);
}
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java b/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java
index 85f0eb927..8a1c48269 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/PersistPtrHolder.java
@@ -27,6 +27,7 @@ import java.util.Map.Entry;
import java.util.TreeMap;
import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
+import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.util.BitField;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.POILogger;
@@ -215,7 +216,7 @@ public final class PersistPtrHolder extends PositionDependentRecordAtom
lastSlideId = nextSlideId;
} catch (IOException e) {
// ByteArrayOutputStream is very unlikely throwing a IO exception (maybe because of OOM ...)
- throw new RuntimeException(e);
+ throw new HSLFException(e);
}
}
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/Record.java b/src/scratchpad/src/org/apache/poi/hslf/record/Record.java
index e2987b3d6..73017b798 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/Record.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/Record.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.List;
import org.apache.poi.hslf.exceptions.CorruptPowerPointFileException;
+import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.util.LittleEndian;
import org.apache.poi.util.POILogFactory;
import org.apache.poi.util.POILogger;
@@ -180,13 +181,13 @@ public abstract class Record
// Instantiate
toReturn = con.newInstance(new Object[] { b, start, len });
} catch(InstantiationException ie) {
- throw new RuntimeException("Couldn't instantiate the class for type with id " + type + " on class " + c + " : " + ie, ie);
+ throw new HSLFException("Couldn't instantiate the class for type with id " + type + " on class " + c + " : " + ie, ie);
} catch(java.lang.reflect.InvocationTargetException ite) {
- throw new RuntimeException("Couldn't instantiate the class for type with id " + type + " on class " + c + " : " + ite + "\nCause was : " + ite.getCause(), ite);
+ throw new HSLFException("Couldn't instantiate the class for type with id " + type + " on class " + c + " : " + ite + "\nCause was : " + ite.getCause(), ite);
} catch(IllegalAccessException iae) {
- throw new RuntimeException("Couldn't access the constructor for type with id " + type + " on class " + c + " : " + iae, iae);
+ throw new HSLFException("Couldn't access the constructor for type with id " + type + " on class " + c + " : " + iae, iae);
} catch(NoSuchMethodException nsme) {
- throw new RuntimeException("Couldn't access the constructor for type with id " + type + " on class " + c + " : " + nsme, nsme);
+ throw new HSLFException("Couldn't access the constructor for type with id " + type + " on class " + c + " : " + nsme, nsme);
}
// Handling for special kinds of records follow
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java b/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java
index 6e3932606..c0c57255f 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/RecordTypes.java
@@ -279,7 +279,7 @@ public enum RecordTypes {
// }
// }
// } catch (IllegalAccessException e){
-// throw new RuntimeException("Failed to initialize records types");
+// throw new HSLFException("Failed to initialize records types");
// }
// }
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/SlideAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/SlideAtom.java
index 68f75c09b..16be0c6a8 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/SlideAtom.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/SlideAtom.java
@@ -20,6 +20,7 @@ package org.apache.poi.hslf.record;
import java.io.IOException;
import java.io.OutputStream;
+import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.util.LittleEndian;
/**
@@ -138,13 +139,15 @@ public final class SlideAtom extends RecordAtom
/**
* We are of type 1007
*/
- public long getRecordType() { return _type; }
+ @Override
+ public long getRecordType() { return _type; }
/**
* Write the contents of the record back, so it can be written
* to disk
*/
- public void writeOut(OutputStream out) throws IOException {
+ @Override
+ public void writeOut(OutputStream out) throws IOException {
// Header
out.write(_header);
@@ -211,7 +214,7 @@ public final class SlideAtom extends RecordAtom
*/
public SSlideLayoutAtom(byte[] data) {
if(data.length != 12) {
- throw new RuntimeException("SSlideLayoutAtom created with byte array not 12 bytes long - was " + data.length + " bytes in size");
+ throw new HSLFException("SSlideLayoutAtom created with byte array not 12 bytes long - was " + data.length + " bytes in size");
}
// Grab out our data
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java
index bfb9d741a..238385b68 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/StyleTextPropAtom.java
@@ -17,13 +17,18 @@
package org.apache.poi.hslf.record;
-import java.io.*;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
-import org.apache.poi.hslf.model.textproperties.*;
+import org.apache.poi.hslf.exceptions.HSLFException;
+import org.apache.poi.hslf.model.textproperties.TextPropCollection;
import org.apache.poi.hslf.model.textproperties.TextPropCollection.TextPropType;
-import org.apache.poi.util.*;
+import org.apache.poi.util.HexDump;
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.POILogger;
/**
* A StyleTextPropAtom (type 4001). Holds basic character properties
@@ -121,7 +126,7 @@ public final class StyleTextPropAtom extends RecordAtom
if(len < 18) {
len = 18;
if(source.length - start < 18) {
- throw new RuntimeException("Not enough data to form a StyleTextPropAtom (min size 18 bytes long) - found " + (source.length - start));
+ throw new HSLFException("Not enough data to form a StyleTextPropAtom (min size 18 bytes long) - found " + (source.length - start));
}
}
@@ -167,7 +172,7 @@ public final class StyleTextPropAtom extends RecordAtom
try {
updateRawContents();
} catch (IOException e) {
- throw new RuntimeException(e);
+ throw new HSLFException(e);
}
}
@@ -175,6 +180,7 @@ public final class StyleTextPropAtom extends RecordAtom
/**
* We are of type 4001
*/
+ @Override
public long getRecordType() { return _type; }
@@ -182,6 +188,7 @@ public final class StyleTextPropAtom extends RecordAtom
* Write the contents of the record back, so it can be written
* to disk
*/
+ @Override
public void writeOut(OutputStream out) throws IOException {
// First thing to do is update the raw bytes of the contents, based
// on the properties
@@ -203,7 +210,9 @@ public final class StyleTextPropAtom extends RecordAtom
* contains, so we can go ahead and initialise ourselves.
*/
public void setParentTextSize(int size) {
- if (initialised) return;
+ if (initialised) {
+ return;
+ }
int pos = 0;
int textHandled = 0;
@@ -365,6 +374,7 @@ public final class StyleTextPropAtom extends RecordAtom
*
* @return the string representation of the record data
*/
+ @Override
public String toString(){
StringBuffer out = new StringBuffer();
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/TextHeaderAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/TextHeaderAtom.java
index 3fab236a1..2d4f41bdd 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/TextHeaderAtom.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/TextHeaderAtom.java
@@ -17,10 +17,12 @@
package org.apache.poi.hslf.record;
-import org.apache.poi.util.LittleEndian;
import java.io.IOException;
import java.io.OutputStream;
+import org.apache.poi.hslf.exceptions.HSLFException;
+import org.apache.poi.util.LittleEndian;
+
/**
* A TextHeaderAtom (type 3999). Holds information on what kind of
* text is contained in the TextBytesAtom / TextCharsAtom that follows
@@ -62,8 +64,10 @@ public final class TextHeaderAtom extends RecordAtom implements ParentAwareRecor
*/
public void setIndex(int index) { this.index = index; }
- public RecordContainer getParentRecord() { return parentRecord; }
- public void setParentRecord(RecordContainer record) { this.parentRecord = record; }
+ @Override
+ public RecordContainer getParentRecord() { return parentRecord; }
+ @Override
+ public void setParentRecord(RecordContainer record) { this.parentRecord = record; }
/* *************** record code follows ********************** */
@@ -75,7 +79,7 @@ public final class TextHeaderAtom extends RecordAtom implements ParentAwareRecor
if(len < 12) {
len = 12;
if(source.length - start < 12) {
- throw new RuntimeException("Not enough data to form a TextHeaderAtom (always 12 bytes long) - found " + (source.length - start));
+ throw new HSLFException("Not enough data to form a TextHeaderAtom (always 12 bytes long) - found " + (source.length - start));
}
}
@@ -102,13 +106,15 @@ public final class TextHeaderAtom extends RecordAtom implements ParentAwareRecor
/**
* We are of type 3999
*/
- public long getRecordType() { return _type; }
+ @Override
+ public long getRecordType() { return _type; }
/**
* Write the contents of the record back, so it can be written
* to disk
*/
- public void writeOut(OutputStream out) throws IOException {
+ @Override
+ public void writeOut(OutputStream out) throws IOException {
// Header - size or type unchanged
out.write(_header);
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/TextSpecInfoAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/TextSpecInfoAtom.java
index d18054ee6..7f87086bf 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/TextSpecInfoAtom.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/TextSpecInfoAtom.java
@@ -112,7 +112,7 @@ public final class TextSpecInfoAtom extends RecordAtom {
try {
sir.writeOut(bos);
} catch (IOException e) {
- throw new RuntimeException(e);
+ throw new HSLFException(e);
}
_data = bos.toByteArray();
diff --git a/src/scratchpad/src/org/apache/poi/hslf/record/UserEditAtom.java b/src/scratchpad/src/org/apache/poi/hslf/record/UserEditAtom.java
index b1bd6bba3..54a0e5033 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/record/UserEditAtom.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/record/UserEditAtom.java
@@ -17,13 +17,14 @@
package org.apache.poi.hslf.record;
-import org.apache.poi.util.LittleEndian;
-import org.apache.poi.util.LittleEndianConsts;
-
import java.io.IOException;
import java.io.OutputStream;
import java.util.Map;
+import org.apache.poi.hslf.exceptions.HSLFException;
+import org.apache.poi.util.LittleEndian;
+import org.apache.poi.util.LittleEndianConsts;
+
/**
* A UserEdit Atom (type 4085). Holds information which bits of the file
* were last used by powerpoint, the version of powerpoint last used etc.
@@ -140,18 +141,20 @@ public final class UserEditAtom extends PositionDependentRecordAtom
/**
* We are of type 4085
*/
- public long getRecordType() { return _type; }
+ @Override
+ public long getRecordType() { return _type; }
/**
* At write-out time, update the references to PersistPtrs and
* other UserEditAtoms to point to their new positions
*/
- public void updateOtherRecordReferences(Map oldToNewReferencesLookup) {
+ @Override
+ public void updateOtherRecordReferences(Map oldToNewReferencesLookup) {
// Look up the new positions of our preceding UserEditAtomOffset
if(lastUserEditAtomOffset != 0) {
Integer newLocation = oldToNewReferencesLookup.get(Integer.valueOf(lastUserEditAtomOffset));
if(newLocation == null) {
- throw new RuntimeException("Couldn't find the new location of the UserEditAtom that used to be at " + lastUserEditAtomOffset);
+ throw new HSLFException("Couldn't find the new location of the UserEditAtom that used to be at " + lastUserEditAtomOffset);
}
lastUserEditAtomOffset = newLocation.intValue();
}
@@ -159,7 +162,7 @@ public final class UserEditAtom extends PositionDependentRecordAtom
// Ditto for our PersistPtr
Integer newLocation = oldToNewReferencesLookup.get(Integer.valueOf(persistPointersOffset));
if(newLocation == null) {
- throw new RuntimeException("Couldn't find the new location of the PersistPtr that used to be at " + persistPointersOffset);
+ throw new HSLFException("Couldn't find the new location of the PersistPtr that used to be at " + persistPointersOffset);
}
persistPointersOffset = newLocation.intValue();
}
@@ -168,7 +171,8 @@ public final class UserEditAtom extends PositionDependentRecordAtom
* Write the contents of the record back, so it can be written
* to disk
*/
- public void writeOut(OutputStream out) throws IOException {
+ @Override
+ public void writeOut(OutputStream out) throws IOException {
// Header
out.write(_header);
diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFFreeformShape.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFFreeformShape.java
index ee8c50a71..dc0507536 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFFreeformShape.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFFreeformShape.java
@@ -232,7 +232,9 @@ public final class HSLFFreeformShape extends HSLFAutoShape implements FreeformSh
it.next();
}
- if(!isClosed) segInfo.add(SEGMENTINFO_LINETO);
+ if(!isClosed) {
+ segInfo.add(SEGMENTINFO_LINETO);
+ }
segInfo.add(new byte[]{0x00, (byte)0x80});
AbstractEscherOptRecord opt = getEscherOptRecord();
@@ -357,9 +359,11 @@ public final class HSLFFreeformShape extends HSLFAutoShape implements FreeformSh
}
private void fillPoint(byte xyMaster[], double xyPoints[]) {
- int masterCnt = (xyMaster == null) ? 0 : xyMaster.length;
- int pointCnt = (xyPoints == null) ? 0 : xyPoints.length;
- if ((masterCnt != 4 && masterCnt != 8) || pointCnt != 2) {
+ if (xyMaster == null || xyPoints == null) {
+ LOG.log(POILogger.WARN, "Master bytes or points not set - ignore point");
+ return;
+ }
+ if ((xyMaster.length != 4 && xyMaster.length != 8) || xyPoints.length != 2) {
LOG.log(POILogger.WARN, "Invalid number of master bytes for a single point - ignore point");
return;
}
diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSimpleShape.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSimpleShape.java
index d8352e5bf..8618dbeb0 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSimpleShape.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSimpleShape.java
@@ -166,7 +166,9 @@ public abstract class HSLFSimpleShape extends HSLFShape implements SimpleShape getShadow() {
AbstractEscherOptRecord opt = getEscherOptRecord();
- if (opt == null) return null;
+ if (opt == null) {
+ return null;
+ }
EscherProperty shadowType = opt.lookup(EscherProperties.SHADOWSTYLE__TYPE);
- if (shadowType == null) return null;
+ if (shadowType == null) {
+ return null;
+ }
return new Shadow(){
@Override
diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java
index d3a613222..a37b7abbc 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFSlide.java
@@ -25,6 +25,7 @@ import org.apache.poi.ddf.EscherContainerRecord;
import org.apache.poi.ddf.EscherDgRecord;
import org.apache.poi.ddf.EscherDggRecord;
import org.apache.poi.ddf.EscherSpRecord;
+import org.apache.poi.hslf.exceptions.HSLFException;
import org.apache.poi.hslf.model.Comment;
import org.apache.poi.hslf.model.HeadersFooters;
import org.apache.poi.hslf.record.ColorSchemeAtom;
@@ -83,7 +84,7 @@ public final class HSLFSlide extends HSLFSheet implements Slide l : HSLFTextParagraph.findTextParagraphs(getPPDrawing(), this)) {
- if (!_paragraphs.contains(l)) _paragraphs.add(l);
+ if (!_paragraphs.contains(l)) {
+ _paragraphs.add(l);
+ }
}
}
@@ -153,6 +156,7 @@ public final class HSLFSlide extends HSLFSheet implements Slide set shapeId for the container descriptor and background
*
*/
+ @Override
public void onCreate(){
//initialize drawing group id
EscherDggRecord dgg = getSlideShow().getDocumentRecord().getPPDrawingGroup().getEscherDggRecord();
@@ -176,7 +180,9 @@ public final class HSLFSlide extends HSLFSheet implements Slide tp : getTextParagraphs()) {
- if (tp.isEmpty()) continue;
+ if (tp.isEmpty()) {
+ continue;
+ }
int type = tp.get(0).getRunType();
switch (type) {
case TextHeaderAtom.CENTER_TITLE_TYPE:
@@ -230,7 +238,8 @@ public final class HSLFSlide extends HSLFSheet implements Slide> getTextParagraphs() { return _paragraphs; }
+ @Override
+ public List> getTextParagraphs() { return _paragraphs; }
/**
* Returns the (public facing) page number of this slide
@@ -257,13 +266,18 @@ public final class HSLFSlide extends HSLFSheet implements Slidetrue if the slide follows master,
* false
otherwise
*/
+ @Override
public void setFollowMasterBackground(boolean flag){
SlideAtom sa = getSlideRecord().getSlideAtom();
sa.setFollowMasterBackground(flag);
@@ -294,6 +309,7 @@ public final class HSLFSlide extends HSLFSheet implements Slidetrue if the slide follows master background,
* false
otherwise
*/
+ @Override
public boolean getFollowMasterBackground(){
SlideAtom sa = getSlideRecord().getSlideAtom();
return sa.getFollowMasterBackground();
@@ -305,6 +321,7 @@ public final class HSLFSlide extends HSLFSheet implements Slidetrue if the slide draws master sheet objects,
* false
otherwise
*/
+ @Override
public void setFollowMasterObjects(boolean flag){
SlideAtom sa = getSlideRecord().getSlideAtom();
sa.setFollowMasterObjects(flag);
@@ -338,6 +355,7 @@ public final class HSLFSlide extends HSLFSheet implements Slidetrue if the slide draws master sheet objects,
* false
otherwise
*/
+ @Override
public boolean getFollowMasterObjects(){
SlideAtom sa = getSlideRecord().getSlideAtom();
return sa.getFollowMasterObjects();
@@ -346,7 +364,8 @@ public final class HSLFSlide extends HSLFSheet implements Slide newParas = shape.getTextParagraphs();
_paragraphs.add(newParas);
@@ -467,14 +488,13 @@ public final class HSLFSlide extends HSLFSheet implements Slide {
protected HSLFTable(int numRows, int numCols, ShapeContainer parent) {
super(parent);
- if(numRows < 1) throw new IllegalArgumentException("The number of rows must be greater than 1");
- if(numCols < 1) throw new IllegalArgumentException("The number of columns must be greater than 1");
+ if(numRows < 1) {
+ throw new IllegalArgumentException("The number of rows must be greater than 1");
+ }
+ if(numCols < 1) {
+ throw new IllegalArgumentException("The number of columns must be greater than 1");
+ }
double x=0, y=0, tblWidth=0, tblHeight=0;
cells = new HSLFTableCell[numRows][numCols];
@@ -310,16 +314,16 @@ implements HSLFShapeContainer, TableShape {
}
}
- if (lfit < threshold) {
+ if (lfit < threshold && lline != null) {
tc.borderLeft = lline.l;
}
- if (tfit < threshold) {
+ if (tfit < threshold && tline != null) {
tc.borderTop = tline.l;
}
- if (rfit < threshold) {
+ if (rfit < threshold && rline != null) {
tc.borderRight = rline.l;
}
- if (bfit < threshold) {
+ if (bfit < threshold && bline != null) {
tc.borderBottom = bline.l;
}
}
diff --git a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java
index 322cb10d2..4cb3a310c 100644
--- a/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java
+++ b/src/scratchpad/src/org/apache/poi/hslf/usermodel/HSLFTextParagraph.java
@@ -36,28 +36,7 @@ import org.apache.poi.hslf.model.textproperties.TextPFException9;
import org.apache.poi.hslf.model.textproperties.TextProp;
import org.apache.poi.hslf.model.textproperties.TextPropCollection;
import org.apache.poi.hslf.model.textproperties.TextPropCollection.TextPropType;
-import org.apache.poi.hslf.record.ColorSchemeAtom;
-import org.apache.poi.hslf.record.EscherTextboxWrapper;
-import org.apache.poi.hslf.record.FontCollection;
-import org.apache.poi.hslf.record.InteractiveInfo;
-import org.apache.poi.hslf.record.MasterTextPropAtom;
-import org.apache.poi.hslf.record.OEPlaceholderAtom;
-import org.apache.poi.hslf.record.OutlineTextRefAtom;
-import org.apache.poi.hslf.record.PPDrawing;
-import org.apache.poi.hslf.record.Record;
-import org.apache.poi.hslf.record.RecordContainer;
-import org.apache.poi.hslf.record.RecordTypes;
-import org.apache.poi.hslf.record.RoundTripHFPlaceholder12;
-import org.apache.poi.hslf.record.SlideListWithText;
-import org.apache.poi.hslf.record.SlidePersistAtom;
-import org.apache.poi.hslf.record.StyleTextProp9Atom;
-import org.apache.poi.hslf.record.StyleTextPropAtom;
-import org.apache.poi.hslf.record.TextBytesAtom;
-import org.apache.poi.hslf.record.TextCharsAtom;
-import org.apache.poi.hslf.record.TextHeaderAtom;
-import org.apache.poi.hslf.record.TextRulerAtom;
-import org.apache.poi.hslf.record.TextSpecInfoAtom;
-import org.apache.poi.hslf.record.TxInteractiveInfoAtom;
+import org.apache.poi.hslf.record.*;
import org.apache.poi.sl.draw.DrawPaint;
import org.apache.poi.sl.usermodel.AutoNumberingScheme;
import org.apache.poi.sl.usermodel.PaintStyle;
@@ -195,7 +174,9 @@ public final class HSLFTextParagraph implements TextParagraph= records.length) {
@@ -301,7 +292,9 @@ public final class HSLFTextParagraph implements TextParagraph= ant.length) return null;
+ if (ant == null || level == -1 || level >= ant.length) {
+ return null;
+ }
return ant[level].getAutoNumberScheme();
}
public Integer getAutoNumberingStartAt() {
- if (styleTextProp9Atom == null) return null;
+ if (styleTextProp9Atom == null) {
+ return null;
+ }
TextPFException9[] ant = styleTextProp9Atom.getAutoNumberTypes();
int level = getIndentLevel();
- if (ant == null || level >= ant.length) return null;
+ if (ant == null || level >= ant.length) {
+ return null;
+ }
Short startAt = ant[level].getAutoNumberStartNumber();
assert(startAt != null);
return startAt.intValue();
@@ -447,7 +454,9 @@ public final class HSLFTextParagraph implements TextParagraph ltr = p.getTextRuns();
if (ltr.isEmpty()) {
- throw new RuntimeException("paragraph without textruns found");
+ throw new HSLFException("paragraph without textruns found");
}
lastRun = ltr.get(ltr.size() - 1);
assert (lastRun.getRawText() != null);
@@ -889,9 +908,13 @@ public final class HSLFTextParagraph implements TextParagraph> runsV = new ArrayList>();
for (EscherTextboxWrapper wrapper : ppdrawing.getTextboxWrappers()) {
List p = findTextParagraphs(wrapper, sheet);
- if (p != null) runsV.add(p);
+ if (p != null) {
+ runsV.add(p);
+ }
}
return runsV;
}
@@ -1205,7 +1233,7 @@ public final class HSLFTextParagraph implements TextParagraph> sheetRuns = sheet.getTextParagraphs();
@@ -1213,9 +1241,13 @@ public final class HSLFTextParagraph implements TextParagraph r : sheetRuns) {
- if (r.isEmpty()) continue;
+ if (r.isEmpty()) {
+ continue;
+ }
int ridx = r.get(0).getIndex();
- if (ridx > idx) break;
+ if (ridx > idx) {
+ break;
+ }
if (ridx == idx) {
if (rv == null) {
rv = r;
@@ -1251,7 +1283,7 @@ public final class HSLFTextParagraph implements TextParagraph h.getEndIndex()) break;
+ if (csIdx > h.getEndIndex()) {
+ break;
+ }
List runs = p.getTextRuns();
for (int rlen=0,rIdx=0; rIdx < runs.size(); csIdx+=rlen, rIdx++) {
HSLFTextRun run = runs.get(rIdx);
@@ -1443,7 +1479,9 @@ public final class HSLFTextParagraph implements TextParagraph= paragraphs.size()) return;
+ if (paraIdx >= paragraphs.size()) {
+ return;
+ }
HSLFTextParagraph htp = paragraphs.get(paraIdx);
TextPropCollection pCopy = new TextPropCollection(0, TextPropType.paragraph);
pCopy.copy(p);
@@ -1452,7 +1490,9 @@ public final class HSLFTextParagraph implements TextParagraph= paragraphs.size() || ccPara >= ccStyle-1) return;
+ if (paraIdx >= paragraphs.size() || ccPara >= ccStyle-1) {
+ return;
+ }
HSLFTextParagraph para = paragraphs.get(paraIdx);
int len = 0;
for (HSLFTextRun trun : para.getTextRuns()) {
@@ -1517,7 +1559,9 @@ public final class HSLFTextParagraph implements TextParagraph