diff options
author | Yegor Kozlov <yegor@apache.org> | 2012-02-23 12:07:16 +0000 |
---|---|---|
committer | Yegor Kozlov <yegor@apache.org> | 2012-02-23 12:07:16 +0000 |
commit | 7d9173caa45e363731342a4f64564e90d00dfc6f (patch) | |
tree | e0cf00bbbab512106311a4aba916d0df086be892 /src | |
parent | 37149e9d6b8daed7d8820a8e3d01ee7da376566e (diff) | |
download | poi-7d9173caa45e363731342a4f64564e90d00dfc6f.tar.gz poi-7d9173caa45e363731342a4f64564e90d00dfc6f.zip |
Bugzilla 52745: fixed XSSFRichtextString.append to preserve leading / trailing spaces
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1292759 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src')
3 files changed, 12 insertions, 2 deletions
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml index d2d7aebf85..57161cd5ae 100644 --- a/src/documentation/content/xdocs/status.xml +++ b/src/documentation/content/xdocs/status.xml @@ -34,6 +34,7 @@ <changes> <release version="3.8-beta6" date="2012-??-??"> + <action dev="poi-developers" type="fix">52745 - fixed XSSFRichtextString.append to preserve leading / trailing spaces </action> <action dev="poi-developers" type="fix">52716 - tolerate hyperlinks that have neither location nor relation </action> <action dev="poi-developers" type="fix">52599 - avoid duplicate text when rendering slides in HSLF</action> <action dev="poi-developers" type="fix">52598 - respect slide background when rendering slides in HSLF</action> diff --git a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java index e3ed3223a7..39911f393a 100644 --- a/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java +++ b/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java @@ -194,11 +194,14 @@ public class XSSFRichTextString implements RichTextString { public void append(String text, XSSFFont font){ if(st.sizeOfRArray() == 0 && st.isSetT()) { //convert <t>string</t> into a text run: <r><t>string</t></r> - st.addNewR().setT(st.getT()); + CTRElt lt = st.addNewR(); + lt.setT(st.getT()); + preserveSpaces(lt.xgetT()); st.unsetT(); } CTRElt lt = st.addNewR(); lt.setT(text); + preserveSpaces(lt.xgetT()); CTRPrElt pr = lt.addNewRPr(); if(font != null) setRunAttributes(font.getCTFont(), pr); } @@ -392,7 +395,7 @@ public class XSSFRichTextString implements RichTextString { if(st.sizeOfRArray() > 0) { for (CTRElt r : st.getRArray()) { CTRPrElt pr = r.getRPr(); - if(pr != null){ + if(pr != null && pr.sizeOfRFontArray() > 0){ String fontName = pr.getRFontArray(0).getVal(); if(fontName.startsWith("#")){ int idx = Integer.parseInt(fontName.substring(1)); diff --git a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java index 30f7948828..481c56dd65 100644 --- a/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java +++ b/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java @@ -140,6 +140,12 @@ public final class TestXSSFRichTextString extends TestCase { rt.setString(" Apache"); assertEquals("<xml-fragment xml:space=\"preserve\"> Apache</xml-fragment>", xs.xmlText()); + rt.append(" POI"); + rt.append(" "); + assertEquals(" Apache POI ", rt.getString()); + assertEquals("<xml-fragment xml:space=\"preserve\"> Apache</xml-fragment>", rt.getCTRst().getRArray(0).xgetT().xmlText()); + assertEquals("<xml-fragment xml:space=\"preserve\"> POI</xml-fragment>", rt.getCTRst().getRArray(1).xgetT().xmlText()); + assertEquals("<xml-fragment xml:space=\"preserve\"> </xml-fragment>", rt.getCTRst().getRArray(2).xgetT().xmlText()); } /** |