private boolean isCursorInBody(XmlCursor cursor) {
XmlCursor verify = cursor.newCursor();
verify.toParent();
- try {
- return (verify.getObject() == this.ctDocument.getBody());
- } finally {
- verify.dispose();
- }
+ boolean result = (verify.getObject() == this.ctDocument.getBody());
+ verify.dispose();
+ return result;
}
private int getPosOfBodyElement(IBodyElement needle) {
i++;\r
}\r
bodyElements.add(i, newT);\r
- cursor = t.newCursor();\r
+ XmlCursor c2 = t.newCursor();\r
+ cursor.toCursor(c2);\r
cursor.toEndToken();\r
+ c2.dispose();\r
return newT;\r
}\r
return null;\r
* @return the inserted paragraph\r
* @see org.apache.poi.xwpf.usermodel.IBody#insertNewParagraph(XmlCursor cursor)\r
*/\r
- public XWPFParagraph insertNewParagraph(XmlCursor cursor) {\r
+ public XWPFParagraph insertNewParagraph(final XmlCursor cursor) {\r
if (isCursorInFtn(cursor)) {\r
String uri = CTP.type.getName().getNamespaceURI();\r
String localPart = "p";\r
paragraphs.add(pos, newP);\r
}\r
int i = 0;\r
- cursor.toCursor(p.newCursor());\r
+ XmlCursor p2 = p.newCursor();\r
+ cursor.toCursor(p2);\r
+ p2.dispose();\r
while (cursor.toPrevSibling()) {\r
o = cursor.getObject();\r
if (o instanceof CTP || o instanceof CTTbl)\r
i++;\r
}\r
bodyElements.add(i, newP);\r
- cursor.toCursor(p.newCursor());\r
+ p2 = p.newCursor();\r
+ cursor.toCursor(p2);\r
cursor.toEndToken();\r
+ p2.dispose();\r
return newP;\r
}\r
return null;\r
paragraphs.add(pos, newP);
}
int i = 0;
- cursor.toCursor(p.newCursor());
+ XmlCursor p2 = p.newCursor();
+ cursor.toCursor(p2);
+ p2.dispose();
while (cursor.toPrevSibling()) {
o = cursor.getObject();
if (o instanceof CTP || o instanceof CTTbl)
i++;
}
bodyElements.add(i, newP);
- cursor.toCursor(p.newCursor());
+ p2 = p.newCursor();
+ cursor.toCursor(p2);
cursor.toEndToken();
+ p2.dispose();
return newP;
}
return null;
* @param cursor
* @return the inserted table
*/
- public XWPFTable insertNewTbl(XmlCursor cursor) {
+ public XWPFTable insertNewTbl(final XmlCursor cursor) {
if (isCursorInHdrF(cursor)) {
String uri = CTTbl.type.getName().getNamespaceURI();
String localPart = "tbl";
tables.add(pos, newT);
}
int i = 0;
- cursor = t.newCursor();
- while (cursor.toPrevSibling()) {
- o = cursor.getObject();
- if (o instanceof CTP || o instanceof CTTbl)
+ XmlCursor cursor2 = t.newCursor();
+ while (cursor2.toPrevSibling()) {
+ o = cursor2.getObject();
+ if (o instanceof CTP || o instanceof CTTbl) {
i++;
+ }
}
+ cursor2.dispose();
bodyElements.add(i, newT);
- cursor = t.newCursor();
+ cursor2 = t.newCursor();
+ cursor.toCursor(cursor2);
cursor.toEndToken();
+ cursor2.dispose();
return newT;
}
return null;
private boolean isCursorInHdrF(XmlCursor cursor) {
XmlCursor verify = cursor.newCursor();
verify.toParent();
- if (verify.getObject() == this.headerFooter) {
- return true;
- }
- return false;
+ boolean result = (verify.getObject() == this.headerFooter);
+ verify.dispose();
+ return result;
}
cursor.toParent();
XmlObject o = cursor.getObject();
if (!(o instanceof CTRow)) {
+ cursor.dispose();
return null;
}
CTRow row = (CTRow) o;
int beginRunPos = 0, candCharPos = 0;
boolean newList = false;
- @SuppressWarnings("deprecation")
CTR[] rArray = paragraph.getRArray();
for (int runPos = startRun; runPos < rArray.length; runPos++) {
int beginTextPos = 0, beginCharPos = 0, textPos = 0, charPos = 0;
CTR ctRun = rArray[runPos];
XmlCursor c = ctRun.newCursor();
c.selectPath("./*");
- while (c.toNextSelection()) {
- XmlObject o = c.getObject();
- if (o instanceof CTText) {
- if (textPos >= startText) {
- String candidate = ((CTText) o).getStringValue();
- if (runPos == startRun)
- charPos = startChar;
- else
- charPos = 0;
-
- for (; charPos < candidate.length(); charPos++) {
- if ((candidate.charAt(charPos) == searched.charAt(0)) && (candCharPos == 0)) {
- beginTextPos = textPos;
- beginCharPos = charPos;
- beginRunPos = runPos;
- newList = true;
- }
- if (candidate.charAt(charPos) == searched.charAt(candCharPos)) {
- if (candCharPos + 1 < searched.length())
- candCharPos++;
- else if (newList) {
- TextSegement segement = new TextSegement();
- segement.setBeginRun(beginRunPos);
- segement.setBeginText(beginTextPos);
- segement.setBeginChar(beginCharPos);
- segement.setEndRun(runPos);
- segement.setEndText(textPos);
- segement.setEndChar(charPos);
- return segement;
+ try {
+ while (c.toNextSelection()) {
+ XmlObject o = c.getObject();
+ if (o instanceof CTText) {
+ if (textPos >= startText) {
+ String candidate = ((CTText) o).getStringValue();
+ if (runPos == startRun)
+ charPos = startChar;
+ else
+ charPos = 0;
+
+ for (; charPos < candidate.length(); charPos++) {
+ if ((candidate.charAt(charPos) == searched.charAt(0)) && (candCharPos == 0)) {
+ beginTextPos = textPos;
+ beginCharPos = charPos;
+ beginRunPos = runPos;
+ newList = true;
+ }
+ if (candidate.charAt(charPos) == searched.charAt(candCharPos)) {
+ if (candCharPos + 1 < searched.length())
+ candCharPos++;
+ else if (newList) {
+ TextSegement segement = new TextSegement();
+ segement.setBeginRun(beginRunPos);
+ segement.setBeginText(beginTextPos);
+ segement.setBeginChar(beginCharPos);
+ segement.setEndRun(runPos);
+ segement.setEndText(textPos);
+ segement.setEndChar(charPos);
+ return segement;
+ }
+ } else {
+ candCharPos = 0;
}
- } else {
- candCharPos = 0;
}
}
- }
- textPos++;
- } else if (o instanceof CTProofErr) {
- c.removeXml();
- } else if (o instanceof CTRPr) ;
- //do nothing
- else
- candCharPos = 0;
+ textPos++;
+ } else if (o instanceof CTProofErr) {
+ c.removeXml();
+ } else if (o instanceof CTRPr) ;
+ //do nothing
+ else
+ candCharPos = 0;
+ }
+ } finally {
+ c.dispose();
}
-
- c.dispose();
}
return null;
}
int textEnd = segment.getEndText();
int charEnd = segment.getEndChar();
StringBuilder out = new StringBuilder();
- @SuppressWarnings("deprecation")
CTR[] rArray = paragraph.getRArray();
for (int i = runBegin; i <= runEnd; i++) {
- @SuppressWarnings("deprecation")
CTText[] tArray = rArray[i].getTArray();
int startText = 0, endText = tArray.length - 1;
if (i == runBegin)
runs.add(run);
bodyElements.add(run);
}
- }\r
+ }
+ cursor.dispose();\r
}\r
\r
public String getText() {\r
depth--;\r
}\r
}\r
- text = sb.toString();\r
+ text = sb.toString();
+ cursor.dispose();\r
}\r
\r
\r
* @param cursor\r
* @return the inserted paragraph\r
*/\r
- public XWPFParagraph insertNewParagraph(XmlCursor cursor) {\r
+ public XWPFParagraph insertNewParagraph(final XmlCursor cursor) {\r
if (!isCursorInTableCell(cursor)) {\r
return null;\r
}\r
paragraphs.add(pos, newP);\r
}\r
int i = 0;\r
- cursor.toCursor(p.newCursor());\r
+ XmlCursor p2 = p.newCursor();\r
+ cursor.toCursor(p2);\r
+ p2.dispose();\r
while (cursor.toPrevSibling()) {\r
o = cursor.getObject();\r
if (o instanceof CTP || o instanceof CTTbl)\r
i++;\r
}\r
bodyElements.add(i, newP);\r
- cursor.toCursor(p.newCursor());\r
+ p2 = p.newCursor();\r
+ cursor.toCursor(p2);\r
+ p2.dispose();\r
cursor.toEndToken();\r
return newP;\r
}\r
\r
- public XWPFTable insertNewTbl(XmlCursor cursor) {\r
+ public XWPFTable insertNewTbl(final XmlCursor cursor) {\r
if (isCursorInTableCell(cursor)) {\r
String uri = CTTbl.type.getName().getNamespaceURI();\r
String localPart = "tbl";\r
tables.add(pos, newT);\r
}\r
int i = 0;\r
- cursor = t.newCursor();\r
- while (cursor.toPrevSibling()) {\r
- o = cursor.getObject();\r
+ XmlCursor cursor2 = t.newCursor();\r
+ while (cursor2.toPrevSibling()) {\r
+ o = cursor2.getObject();\r
if (o instanceof CTP || o instanceof CTTbl)\r
i++;\r
}\r
+ cursor2.dispose();\r
bodyElements.add(i, newT);\r
- cursor = t.newCursor();\r
+ cursor2 = t.newCursor();\r
+ cursor.toCursor(cursor2);\r
cursor.toEndToken();\r
+ cursor2.dispose();\r
return newT;\r
}\r
return null;\r
private boolean isCursorInTableCell(XmlCursor cursor) {\r
XmlCursor verify = cursor.newCursor();\r
verify.toParent();\r
- if (verify.getObject() == this.ctTc) {\r
- return true;\r
- }\r
- return false;\r
+ boolean result = (verify.getObject() == this.ctTc);\r
+ verify.dispose();\r
+ return result;\r
}\r
\r
/**\r
} else if (o instanceof CTSdtCell) {\r
cells.add(new XWPFSDTCell((CTSdtCell) o, this, table.getBody()));\r
}\r
- }\r
+ }
+ cursor.dispose();\r
return cells;\r
}