]> source.dussan.org Git - poi.git/commitdiff
XWPFTableCell does not process bodyElements when handle paragraph
authorAlain Béarez <abearez@apache.org>
Fri, 27 Mar 2020 03:13:37 +0000 (03:13 +0000)
committerAlain Béarez <abearez@apache.org>
Fri, 27 Mar 2020 03:13:37 +0000 (03:13 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1875746 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFTableCell.java
src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFTableCell.java

index d9d0a19b89123f947435532d4103b477f836daaa..257b6b01461a90d8d37dc605db483b28c367decb 100644 (file)
@@ -160,6 +160,7 @@ public class XWPFTableCell implements IBody, ICell {
      */
     public void addParagraph(XWPFParagraph p) {
         paragraphs.add(p);
+        bodyElements.add(p);
     }
 
     /**
@@ -168,8 +169,10 @@ public class XWPFTableCell implements IBody, ICell {
      * @param pos The position in the list of paragraphs, 0-based
      */
     public void removeParagraph(int pos) {
+        XWPFParagraph removedParagraph = paragraphs.get(pos);
         paragraphs.remove(pos);
         ctTc.removeP(pos);
+        bodyElements.remove(removedParagraph);
     }
 
     /**
index 47076649f9c7565bb0aec7ebab28140a2379daa1..8b65434ec00f66cdd1b364caafa8a7167e20e041 100644 (file)
@@ -150,6 +150,58 @@ public class TestXWPFTableCell {
         doc.close();
     }
 
+    @Test
+    public void testAddParagraph() throws Exception {
+        XWPFDocument doc = new XWPFDocument();
+        XWPFTable table = doc.createTable();
+        XWPFTableRow tr = table.createRow();
+        XWPFTableCell cell = tr.addNewTableCell();
+
+        // cell have at least one paragraph by default
+        assertEquals(1, cell.getParagraphs().size());
+        assertEquals(1, cell.getBodyElements().size());
+        assertEquals(cell.getParagraphArray(0), cell.getBodyElements().get(0));
+
+        XWPFParagraph p = cell.addParagraph();
+        assertEquals(2, cell.getParagraphs().size());
+        assertEquals(2, cell.getBodyElements().size());
+        assertEquals(p, cell.getParagraphArray(1));
+        assertEquals(cell.getParagraphArray(1), cell.getBodyElements().get(1));
+
+        doc.close();
+    }
+
+    @Test
+    public void testRemoveParagraph() throws Exception {
+        XWPFDocument doc = new XWPFDocument();
+        XWPFTable table = doc.createTable();
+        XWPFTableRow tr = table.createRow();
+        XWPFTableCell cell = tr.addNewTableCell();
+
+        // cell have at least one paragraph by default
+        XWPFParagraph p0 = cell.getParagraphArray(0);
+        XWPFParagraph p1 = cell.addParagraph();
+        cell.addParagraph();
+
+        // remove 3rd
+        cell.removeParagraph(2);
+        assertEquals(2, cell.getParagraphs().size());
+        assertEquals(2, cell.getBodyElements().size());
+        assertEquals(p0, cell.getParagraphArray(0));
+        assertEquals(p1, cell.getParagraphArray(1));
+        assertEquals(p0, cell.getBodyElements().get(0));
+        assertEquals(p1, cell.getBodyElements().get(1));
+
+        // remove 2nd
+        cell.removeParagraph(1);
+        assertEquals(1, cell.getParagraphs().size());
+        assertEquals(1, cell.getBodyElements().size());
+        assertEquals(p0, cell.getParagraphArray(0));
+        assertEquals(p0, cell.getBodyElements().get(0));
+
+        doc.close();
+    }
+
     @Test
     public void testBug63624() throws Exception {
         XWPFDocument doc = new XWPFDocument();