From 678991d868fd63cbd6c5202383e18d084ecfab3a Mon Sep 17 00:00:00 2001 From: Nick Burch Date: Tue, 25 Jun 2013 13:09:08 +0000 Subject: [PATCH] Patch from Tim Allison from bug #55142 - Not all XWPF SDT block s need newlines git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1496458 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xwpf/usermodel/XWPFSDTContent.java | 7 ++++- .../poi/xwpf/usermodel/TestXWPFSDT.java | 25 ++++++++++++++++++ test-data/document/Bug55142.docx | Bin 0 -> 22586 bytes 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 test-data/document/Bug55142.docx 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 39b385396..de12a9216 100644 --- a/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java +++ b/src/ooxml/java/org/apache/poi/xwpf/usermodel/XWPFSDTContent.java @@ -83,18 +83,23 @@ public class XWPFSDTContent { public String getText(){ StringBuilder text = new StringBuilder(); + boolean addNewLine = false; for (int i = 0; i < bodyElements.size(); i++){ Object o = bodyElements.get(i); if (o instanceof XWPFParagraph){ text.append(((XWPFParagraph)o).getText()); + addNewLine = true; } else if (o instanceof XWPFTable){ text.append(((XWPFTable)o).getText()); + addNewLine = true; } else if (o instanceof XWPFSDT){ text.append(((XWPFSDT)o).getContent().getText()); + addNewLine = true; } else if (o instanceof XWPFRun){ text.append(((XWPFRun)o).toString()); + addNewLine = false; } - if (i < bodyElements.size()-1){ + if (addNewLine == true && i < bodyElements.size()-1){ text.append("\n"); } } diff --git a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java index 2359beac2..f1a585567 100644 --- a/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java +++ b/src/ooxml/testcases/org/apache/poi/xwpf/usermodel/TestXWPFSDT.java @@ -93,6 +93,31 @@ public final class TestXWPFSDT extends TestCase { } assertEquals("SDT as cell known failure", false, found); } + + /** + * POI-55142 and Tika 1130 + */ + public void testNewLinesBetweenRuns() throws Exception{ + XWPFDocument doc = XWPFTestDataSamples.openSampleDocument("Bug55142.docx"); + List sdts = extractAllSDTs(doc); + List targs = new ArrayList(); + //these test newlines and tabs in paragraphs/body elements + targs.add("Rich-text1 abcdefghi"); + targs.add("Rich-text2 abcd\t\tefgh"); + targs.add("Rich-text3 abcd\nefg"); + targs.add("Rich-text4 abcdefg"); + targs.add("Rich-text5 abcdefg\nhijk"); + targs.add("Plain-text1 abcdefg"); + targs.add("Plain-text2 abcdefg\nhijk\nlmnop"); + //this tests consecutive runs within a cell (not a paragraph) + //this test case was triggered by Tika-1130 + targs.add("sdt_incell2 abcdefg"); + + for (int i = 0; i < sdts.size(); i++){ + XWPFSDT sdt = sdts.get(i); + assertEquals(targs.get(i), targs.get(i), sdt.getContent().getText()); + } + } private List extractAllSDTs(XWPFDocument doc){ diff --git a/test-data/document/Bug55142.docx b/test-data/document/Bug55142.docx new file mode 100644 index 0000000000000000000000000000000000000000..1ae2adafea5826987be9ff5c2a75e970cfc65c96 GIT binary patch literal 22586 zcmeFYW0+-2vo2b;ZQHhO+qPX@>awfLwrv|-=(25_UGA9m0oN~V8D zI*ISp7t0iLHoE8=-IBzvp92A9NLgRJdH>#W0VnaGB000Gtew>8KW~bRWzA|HmAoZi zyRV92j6{LDjw7WFJ|;0V6g*Ju@)cPeS8k0B%yWc$oH`i<^`d`P#=(yoWa}-6mzYo- z_*eT1@7{bS5XJX`Wuu`1@WXxS@KYCsZ)s!%Y>lVBuO?S1EPL4+Dqti>GZa22D0O%! zQF`6Msz7z$Y@G9svk zRosr`L@Lv=Ic&5gN)}UnNuZ)7z|V>ei&s_wb%Q@yW`yTQ9cCmWoqNvAtQ(Lwt|5q( z5 zd`#gd1<}5QD?a_E@NW6t!gIAr4?iJc?z#F4^TJ)U+sBzryf+|MqBDhJwi~Rs{V8Cw zA^vqTkz!(1H=HftH>W@D1+cE1>oM$#oW%7k>Sth|KR<v(ZZA%q+l3aj>WLyG!B1{&q_x2PKbt-Kb9REC-P+ZOm&RXOx`w*h&$Wk zQLy8MkPKuw(mU^u?&Dt`3{tjfwdi8vv`!%>LFwgnPU%d({n%PVe~1rJ5VvL%s|Gg9 zdiiPQhgd??2K`VdF;ig`qotr`=o-foE|c$QGh15}Qv=pfGUY{o*fjQ)G05nLyoK|fRrcpHhYUK3LyT{Q&_V>bB#{fHXc@H~1X@GwKCi;aD6)ntNqjT} z!pBu&+m2I|v2#cPO)8z{MB0KW)=X(-}_8R3ubMJj@-%dSz9SFkMBu2d?*4 zWY5rfkpy0#zY_u$%sOl_`Ar9u&XeY#RiN35U{-4e54aLghL3}VO*`umw)V0OWO?d%d+VaG>HqD(C zB!o!nDBel3WpqWNet7AHZg9a?ZqPx?>g}<2z&mq{T)3l*9Pl#~HIR^I^q`X?98`k% z8^jAjq^KoLC{*l`Ob4#uq-hIP>gqX+Xe$X^M&afgfRSmFTZ`m=ZMB19@uImJ_f>&) zb47|^$Z!fg57$!8y(|o8G~}*h@8^n}-~z{XGO$nDZ;wq=38r@lmHL*(ahG0VvfV4R z4&67D8op{|0O7+loUjYsL0~TCtDNe>uk=n(vtAN$D4SJ5FCvX+hD9QhRTfVMoA^uU z*u2u329s}}{pCYxU*8$2Ov*s=YUS6SP&Cgmdg2d=hwkI$$||Vr_UqpqR3_HRp-G0E z+zi3$Feq0E9EB0d7D#j&Twe-jXh5?71f{*M&VS~{iPJzBqR~>p+w5INj z+SSTNKRXv4C}b3*eck=K{s4v-26BZr-RaVLCh)C7b1!+amHvZKl1znOR9y|Mz*?w$ z&RjN^R5qh)Y{A!i@3gdrF+0?l*UI?qLlFK)5NJsp3J76yl1({5v6OWP>Eo60#1t?d zI28`Fyc;}Xp2@H+@`l7FYdkhp=T#+(P#H!8?kl61Nbz}PwHA+vsMASDs|9xN!8?>l zL3noP4R)mkO=%?$M`j<0XZYkoy)q>6I(Z0Ns=jUc0v-hwTZD@?k2QSEN}kX3br`sC z)Vs&-SD=j{RX2EXz55dM*tf|0SiWWp7|9MGG}&c!@PQqo>`BaAc1^yi+mp-#dOg`Y z`IUI}uWM6&FZbDpGwR)dlN

y1mLQD4=!jVm@6ozkbUodj@d7r_~ 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 literal 0 HcmV?d00001