Author: centic
Date: Sat Mar 12 11:45:34 2016
New Revision: 1734694
URL: http://svn.apache.org/viewvc?rev=1734694&view=rev
Log:
Apply patch to fix bug 57495: getTableArray method can not get 0 pos table
Modified:
poi/trunk/src/java/org/apache/poi/util/Units.java
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java
Modified: poi/trunk/src/java/org/apache/poi/util/Units.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/util/Units.java?rev=1734694&r1=1734693&r2=1734694&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/util/Units.java (original)
+++ poi/trunk/src/java/org/apache/poi/util/Units.java Sat Mar 12 11:45:34 2016
@@ -48,11 +48,20 @@ public class Units {
/**
* Converts points to EMUs
* @param points points
- * @return emus
+ * @return EMUs
*/
public static int toEMU(double points){
return (int)Math.rint(EMU_PER_POINT*points);
}
+
+ /**
+ * Converts pixels to EMUs
+ * @param pixels pixels
+ * @return EMUs
+ */
+ public static int pixelToEMU(int pixels) {
+ return pixels*EMU_PER_PIXEL;
+ }
/**
* Converts EMUs to points
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java?rev=1734694&r1=1734693&r2=1734694&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFDocument.java
Sat Mar 12 11:45:34 2016
@@ -335,7 +335,7 @@ public class XWPFDocument extends POIXML
*/
@Override
public XWPFTable getTableArray(int pos) {
- if (pos > 0 && pos < tables.size()) {
+ if (pos >= 0 && pos < tables.size()) {
return tables.get(pos);
}
return null;
@@ -349,7 +349,10 @@ public class XWPFDocument extends POIXML
}
public XWPFFooter getFooterArray(int pos) {
- return footers.get(pos);
+ if(pos >=0 && pos < footers.size()) {
+ return footers.get(pos);
+ }
+ return null;
}
/**
@@ -360,7 +363,10 @@ public class XWPFDocument extends POIXML
}
public XWPFHeader getHeaderArray(int pos) {
- return headers.get(pos);
+ if(pos >=0 && pos < headers.size()) {
+ return headers.get(pos);
+ }
+ return null;
}
public String getTblStyle(XWPFTable table) {
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java?rev=1734694&r1=1734693&r2=1734694&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFFootnote.java
Sat Mar 12 11:45:34 2016
@@ -1,32 +1,33 @@
-/* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-==================================================================== */
-package org.apache.poi.xwpf.usermodel;
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.poi.POIXMLDocumentPart;
-import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlObject;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock;
+/* ====================================================================
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+package org.apache.poi.xwpf.usermodel;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.poi.POIXMLDocumentPart;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlObject;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFtnEdn;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
@@ -36,8 +37,8 @@ public class XWPFFootnote implements Ite
private List<XWPFPictureData> pictures = new ArrayList<XWPFPictureData>();
private List<IBodyElement> bodyElements = new ArrayList<IBodyElement>();
- private CTFtnEdn ctFtnEdn;
- private XWPFFootnotes footnotes;
+ private CTFtnEdn ctFtnEdn;
+ private XWPFFootnotes footnotes;
private XWPFDocument document;
public XWPFFootnote(CTFtnEdn note, XWPFFootnotes xFootnotes) {
@@ -85,16 +86,16 @@ public class XWPFFootnote implements Ite
return paragraphs.iterator();
}
- public List<XWPFTable> getTables() {
- return tables;
- }
-
- public List<XWPFPictureData> getPictures() {
- return pictures;
- }
-
- public List<IBodyElement> getBodyElements() {
- return bodyElements;
+ public List<XWPFTable> getTables() {
+ return tables;
+ }
+
+ public List<XWPFPictureData> getPictures() {
+ return pictures;
+ }
+
+ public List<IBodyElement> getBodyElements() {
+ return bodyElements;
}
public CTFtnEdn getCTFtnEdn() {
@@ -106,16 +107,16 @@ public class XWPFFootnote implements Ite
}
/**
- * @param pos in table array
- * @return The table at position pos
+ * @param pos in table array
+ * @return The table at position pos
* @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int)
*/
public XWPFTable getTableArray(int pos) {
- if (pos > 0 && pos < tables.size()) {
+ if (pos >= 0 && pos < tables.size()) {
return tables.get(pos);
}
return null;
- }
+ }
/**
* inserts an existing XWPFTable to the arrays bodyElements and tables
@@ -123,8 +124,8 @@ public class XWPFFootnote implements Ite
* @param pos
* @param table
* @see org.apache.poi.xwpf.usermodel.IBody#insertTable(int pos, XWPFTable
table)
- */
- public void insertTable(int pos, XWPFTable table) {
+ */
+ public void insertTable(int pos, XWPFTable table) {
bodyElements.add(pos, table);
int i = 0;
for (CTTbl tbl : ctFtnEdn.getTblArray()) {
@@ -132,11 +133,11 @@ public class XWPFFootnote implements Ite
break;
}
i++;
- }
- tables.add(i, table);
-
- }
-
+ }
+ tables.add(i, table);
+
+ }
+
/**
* if there is a corresponding {@link XWPFTable} of the parameter ctTable
in the tableList of this header
* the method will return this table
@@ -153,8 +154,8 @@ public class XWPFFootnote implements Ite
return table;
}
return null;
- }
-
+ }
+
/**
* if there is a corresponding {@link XWPFParagraph} of the parameter
ctTable in the paragraphList of this header or footer
* the method will return this paragraph
@@ -171,7 +172,7 @@ public class XWPFFootnote implements Ite
return paragraph;
}
return null;
- }
+ }
/**
* Returns the paragraph that holds
@@ -180,9 +181,11 @@ public class XWPFFootnote implements Ite
* @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int pos)
*/
public XWPFParagraph getParagraphArray(int pos) {
-
- return paragraphs.get(pos);
- }
+ if(pos >=0 && pos < paragraphs.size()) {
+ return paragraphs.get(pos);
+ }
+ return null;
+ }
/**
* get the TableCell which belongs to the TableCell
@@ -190,7 +193,7 @@ public class XWPFFootnote implements Ite
* @param cell
* @see org.apache.poi.xwpf.usermodel.IBody#getTableCell(CTTc cell)
*/
- public XWPFTableCell getTableCell(CTTc cell) {
+ public XWPFTableCell getTableCell(CTTc cell) {
XmlCursor cursor = cell.newCursor();
cursor.toParent();
XmlObject o = cursor.getObject();
@@ -210,8 +213,11 @@ public class XWPFFootnote implements Ite
return null;
}
XWPFTableRow tableRow = table.getRow(row);
+ if(tableRow == null){
+ return null;
+ }
return tableRow.getTableCell(cell);
- }
+ }
/**
* verifies that cursor is on the right position
@@ -263,12 +269,12 @@ public class XWPFFootnote implements Ite
i++;
}
bodyElements.add(i, newT);
- cursor = t.newCursor();
- cursor.toEndToken();
- return newT;
- }
- return null;
- }
+ cursor = t.newCursor();
+ cursor.toEndToken();
+ return newT;
+ }
+ return null;
+ }
/**
* add a new paragraph at position of the cursor
@@ -303,12 +309,12 @@ public class XWPFFootnote implements Ite
i++;
}
bodyElements.add(i, newP);
- cursor.toCursor(p.newCursor());
- cursor.toEndToken();
- return newP;
- }
- return null;
- }
+ cursor.toCursor(p.newCursor());
+ cursor.toEndToken();
+ return newP;
+ }
+ return null;
+ }
/**
* add a new table to the end of the footnote
@@ -316,13 +322,13 @@ public class XWPFFootnote implements Ite
* @param table
* @return the added XWPFTable
*/
- public XWPFTable addNewTbl(CTTbl table) {
- CTTbl newTable = ctFtnEdn.addNewTbl();
- newTable.set(table);
- XWPFTable xTable = new XWPFTable(newTable, this);
- tables.add(xTable);
- return xTable;
- }
+ public XWPFTable addNewTbl(CTTbl table) {
+ CTTbl newTable = ctFtnEdn.addNewTbl();
+ newTable.set(table);
+ XWPFTable xTable = new XWPFTable(newTable, this);
+ tables.add(xTable);
+ return xTable;
+ }
/**
* add a new paragraph to the end of the footnote
@@ -330,14 +336,14 @@ public class XWPFFootnote implements Ite
* @param paragraph
* @return the added XWPFParagraph
*/
- public XWPFParagraph addNewParagraph(CTP paragraph) {
- CTP newPara = ctFtnEdn.addNewP();
- newPara.set(paragraph);
- XWPFParagraph xPara = new XWPFParagraph(newPara, this);
- paragraphs.add(xPara);
- return xPara;
- }
-
+ public XWPFParagraph addNewParagraph(CTP paragraph) {
+ CTP newPara = ctFtnEdn.addNewP();
+ newPara.set(paragraph);
+ XWPFParagraph xPara = new XWPFParagraph(newPara, this);
+ paragraphs.add(xPara);
+ return xPara;
+ }
+
/**
* @see org.apache.poi.xwpf.usermodel.IBody#getXWPFDocument()
*/
@@ -351,8 +357,8 @@ public class XWPFFootnote implements Ite
* @see org.apache.poi.xwpf.usermodel.IBody#getPart()
*/
public POIXMLDocumentPart getPart() {
- return footnotes;
- }
+ return footnotes;
+ }
/**
* get the PartType of the body
@@ -360,6 +366,6 @@ public class XWPFFootnote implements Ite
* @see org.apache.poi.xwpf.usermodel.IBody#getPartType()
*/
public BodyType getPartType() {
- return BodyType.FOOTNOTE;
- }
-}
+ return BodyType.FOOTNOTE;
+ }
+}
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java?rev=1734694&r1=1734693&r2=1734694&view=diff
==============================================================================
---
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
(original)
+++
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFHeaderFooter.java
Sat Mar 12 11:45:34 2016
@@ -212,8 +212,10 @@ public abstract class XWPFHeaderFooter e
* the text of the header or footer.
*/
public XWPFParagraph getParagraphArray(int pos) {
-
- return paragraphs.get(pos);
+ if(pos >= 0 && pos<paragraphs.size()){
+ return paragraphs.get(pos);
+ }
+ return null;
}
/**
@@ -431,8 +433,7 @@ public abstract class XWPFHeaderFooter e
* @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int)
*/
public XWPFTable getTableArray(int pos) {
-
- if (pos > 0 && pos < tables.size()) {
+ if (pos >= 0 && pos < tables.size()) {
return tables.get(pos);
}
return null;
Modified:
poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java?rev=1734694&r1=1734693&r2=1734694&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
(original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
Sat Mar 12 11:45:34 2016
@@ -1,42 +1,42 @@
-/* ====================================================================
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-==================================================================== */
-package org.apache.poi.xwpf.usermodel;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.EnumMap;
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.poi.POIXMLDocumentPart;
-import org.apache.poi.util.Internal;
-import org.apache.xmlbeans.XmlCursor;
-import org.apache.xmlbeans.XmlObject;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtRun;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalJc;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;
-import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;
+/* ====================================================================
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+==================================================================== */
+package org.apache.poi.xwpf.usermodel;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.poi.POIXMLDocumentPart;
+import org.apache.poi.util.Internal;
+import org.apache.xmlbeans.XmlCursor;
+import org.apache.xmlbeans.XmlObject;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTP;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTRow;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtBlock;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSdtRun;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTc;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalJc;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;
+import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;
/**
* Represents a Cell within a {@link XWPFTable}. The
@@ -46,20 +46,20 @@ public class XWPFTableCell implements IB
private static EnumMap<XWPFVertAlign, STVerticalJc.Enum> alignMap;
// Create a map from the STVerticalJc.Enum values to the XWPF-level enums
private static HashMap<Integer, XWPFVertAlign> stVertAlignTypeMap;
-
- static {
- // populate enum maps
- alignMap = new EnumMap<XWPFVertAlign,
STVerticalJc.Enum>(XWPFVertAlign.class);
- alignMap.put(XWPFVertAlign.TOP,
STVerticalJc.Enum.forInt(STVerticalJc.INT_TOP));
- alignMap.put(XWPFVertAlign.CENTER,
STVerticalJc.Enum.forInt(STVerticalJc.INT_CENTER));
- alignMap.put(XWPFVertAlign.BOTH,
STVerticalJc.Enum.forInt(STVerticalJc.INT_BOTH));
- alignMap.put(XWPFVertAlign.BOTTOM,
STVerticalJc.Enum.forInt(STVerticalJc.INT_BOTTOM));
-
- stVertAlignTypeMap = new HashMap<Integer, XWPFVertAlign>();
- stVertAlignTypeMap.put(STVerticalJc.INT_TOP, XWPFVertAlign.TOP);
- stVertAlignTypeMap.put(STVerticalJc.INT_CENTER, XWPFVertAlign.CENTER);
- stVertAlignTypeMap.put(STVerticalJc.INT_BOTH, XWPFVertAlign.BOTH);
- stVertAlignTypeMap.put(STVerticalJc.INT_BOTTOM, XWPFVertAlign.BOTTOM);
+
+ static {
+ // populate enum maps
+ alignMap = new EnumMap<XWPFVertAlign,
STVerticalJc.Enum>(XWPFVertAlign.class);
+ alignMap.put(XWPFVertAlign.TOP,
STVerticalJc.Enum.forInt(STVerticalJc.INT_TOP));
+ alignMap.put(XWPFVertAlign.CENTER,
STVerticalJc.Enum.forInt(STVerticalJc.INT_CENTER));
+ alignMap.put(XWPFVertAlign.BOTH,
STVerticalJc.Enum.forInt(STVerticalJc.INT_BOTH));
+ alignMap.put(XWPFVertAlign.BOTTOM,
STVerticalJc.Enum.forInt(STVerticalJc.INT_BOTTOM));
+
+ stVertAlignTypeMap = new HashMap<Integer, XWPFVertAlign>();
+ stVertAlignTypeMap.put(STVerticalJc.INT_TOP, XWPFVertAlign.TOP);
+ stVertAlignTypeMap.put(STVerticalJc.INT_CENTER, XWPFVertAlign.CENTER);
+ stVertAlignTypeMap.put(STVerticalJc.INT_BOTH, XWPFVertAlign.BOTH);
+ stVertAlignTypeMap.put(STVerticalJc.INT_BOTTOM, XWPFVertAlign.BOTTOM);
}
@@ -75,8 +75,8 @@ public class XWPFTableCell implements IB
/**
* If a table cell does not include at least one block-level element, then
this document shall be considered corrupt
*/
- public XWPFTableCell(CTTc cell, XWPFTableRow tableRow, IBody part) {
- this.ctTc = cell;
+ public XWPFTableCell(CTTc cell, XWPFTableRow tableRow, IBody part) {
+ this.ctTc = cell;
this.part = part;
this.tableRow = tableRow;
// NB: If a table cell does not include at least one block-level
element, then this document shall be considered corrupt.
@@ -84,10 +84,10 @@ public class XWPFTableCell implements IB
cell.addNewP();
bodyElements = new ArrayList<IBodyElement>();
paragraphs = new ArrayList<XWPFParagraph>();
- tables = new ArrayList<XWPFTable>();
-
- XmlCursor cursor = ctTc.newCursor();
- cursor.selectPath("./*");
+ tables = new ArrayList<XWPFTable>();
+
+ XmlCursor cursor = ctTc.newCursor();
+ cursor.selectPath("./*");
while (cursor.toNextSelection()) {
XmlObject o = cursor.getObject();
if (o instanceof CTP) {
@@ -116,7 +116,7 @@ public class XWPFTableCell implements IB
@Internal
public CTTc getCTTc() {
return ctTc;
- }
+ }
/**
* returns an Iterator with paragraphs and tables
@@ -130,10 +130,10 @@ public class XWPFTableCell implements IB
public void setParagraph(XWPFParagraph p) {
if (ctTc.sizeOfPArray() == 0) {
ctTc.addNewP();
- }
- ctTc.setPArray(0, p.getCTP());
- }
-
+ }
+ ctTc.setPArray(0, p.getCTP());
+ }
+
/**
* returns a list of paragraphs
*/
@@ -224,23 +224,23 @@ public class XWPFTableCell implements IB
ctshd.setFill(rgbStr);
}
- /**
- * Get the vertical alignment of the cell.
- *
- * @return the cell alignment enum value or <code>null</code>
- * if no vertical alignment is set.
- */
- public XWPFVertAlign getVerticalAlignment() {
- XWPFVertAlign vAlign = null;
- CTTcPr tcpr = ctTc.getTcPr();
- if (tcpr != null) {
- CTVerticalJc va = tcpr.getVAlign();
- if (va != null && va.getVal() != null) {
- vAlign = stVertAlignTypeMap.get(va.getVal().intValue());
- }
- }
- return vAlign;
- }
+ /**
+ * Get the vertical alignment of the cell.
+ *
+ * @return the cell alignment enum value or <code>null</code>
+ * if no vertical alignment is set.
+ */
+ public XWPFVertAlign getVerticalAlignment() {
+ XWPFVertAlign vAlign = null;
+ CTTcPr tcpr = ctTc.getTcPr();
+ if (tcpr != null) {
+ CTVerticalJc va = tcpr.getVAlign();
+ if (va != null && va.getVal() != null) {
+ vAlign = stVertAlignTypeMap.get(va.getVal().intValue());
+ }
+ }
+ return vAlign;
+ }
/**
* Set the vertical alignment of the cell.
@@ -343,7 +343,7 @@ public class XWPFTableCell implements IB
* @see org.apache.poi.xwpf.usermodel.IBody#getParagraphArray(int)
*/
public XWPFParagraph getParagraphArray(int pos) {
- if (pos > 0 && pos < paragraphs.size()) {
+ if (pos >= 0 && pos < paragraphs.size()) {
return paragraphs.get(pos);
}
return null;
@@ -381,7 +381,7 @@ public class XWPFTableCell implements IB
* @see org.apache.poi.xwpf.usermodel.IBody#getTableArray(int)
*/
public XWPFTable getTableArray(int pos) {
- if (pos > 0 && pos < tables.size()) {
+ if(pos >= 0 && pos < tables.size()) {
return tables.get(pos);
}
return null;
@@ -399,15 +399,15 @@ public class XWPFTableCell implements IB
*
* @see org.apache.poi.xwpf.usermodel.IBody#insertTable(int,
org.apache.poi.xwpf.usermodel.XWPFTable)
*/
- public void insertTable(int pos, XWPFTable table) {
- bodyElements.add(pos, table);
- int i = 0;
- for (CTTbl tbl : ctTc.getTblArray()) {
- if (tbl == table.getCTTbl()) {
- break;
- }
- i++;
- }
+ public void insertTable(int pos, XWPFTable table) {
+ bodyElements.add(pos, table);
+ int i = 0;
+ for (CTTbl tbl : ctTc.getTblArray()) {
+ if (tbl == table.getCTTbl()) {
+ break;
+ }
+ i++;
+ }
tables.add(i, table);
}
@@ -466,9 +466,9 @@ public class XWPFTableCell implements IB
text.append('\t');
}
}
- }
-
- /**
+ }
+
+ /**
* get the TableCell which belongs to the TableCell
*/
public XWPFTableCell getTableCell(CTTc cell) {
Modified:
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java?rev=1734694&r1=1734693&r2=1734694&view=diff
==============================================================================
---
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java
(original)
+++
poi/trunk/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFBugs.java
Sat Mar 12 11:45:34 2016
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertNot
import java.io.IOException;
+import org.apache.poi.util.Units;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.apache.poi.xwpf.XWPFTestDataSamples;
import org.apache.poi.xwpf.usermodel.XWPFRun.FontCharRange;
@@ -55,7 +56,6 @@ public class TestXWPFBugs {
doc.close();
}
-
@Test
public void bug57312_NullPointException() throws IOException {
XWPFDocument doc =
XWPFTestDataSamples.openSampleDocument("57312.docx");
@@ -82,6 +82,40 @@ public class TestXWPFBugs {
}
}
+ @Test
+ public void bug57495_getTableArrayInDoc() {
+ XWPFDocument doc =new XWPFDocument();
+ //let's create a few tables for the test
+ for(int i=0;i<3;i++) {
+ doc.createTable(2, 2);
+ }
+ XWPFTable table = doc.getTableArray(0);
+ assertNotNull(table);
+ //let's check also that returns the correct table
+ XWPFTable same = doc.getTables().get(0);
+ assertEquals(table, same);
+ }
+
+ @Test
+ public void bug57495_getParagraphArrayInTableCell() {
+ XWPFDocument doc =new XWPFDocument();
+ //let's create a table for the test
+ XWPFTable table = doc.createTable(2, 2);
+ assertNotNull(table);
+ XWPFParagraph p = table.getRow(0).getCell(0).getParagraphArray(0);
+ assertNotNull(p);
+ //let's check also that returns the correct paragraph
+ XWPFParagraph same =
table.getRow(0).getCell(0).getParagraphs().get(0);
+ assertEquals(p, same);
+ }
+
+ @Test
+ public void bug57495_convertPixelsToEMUs() {
+ int pixels = 100;
+ int expectedEMU = 952500;
+ int result = Units.pixelToEMU(pixels);
+ assertEquals(expectedEMU, result);
+ }
@Test
public void test56392() throws IOException, OpenXML4JException {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]