You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ni...@apache.org on 2015/07/31 19:22:06 UTC

svn commit: r1693632 - in /poi/trunk/src/ooxml: java/org/apache/poi/xssf/usermodel/ testcases/org/apache/poi/xssf/usermodel/

Author: nick
Date: Fri Jul 31 17:22:05 2015
New Revision: 1693632

URL: http://svn.apache.org/r1693632
Log:
Have XSSF rich test strings report if they have formatting applied or not, and fix them to only add the formatting child element when needed

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFormulaEvaluator.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
    poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFormulaEvaluator.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFormulaEvaluator.java?rev=1693632&r1=1693631&r2=1693632&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFormulaEvaluator.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFFormulaEvaluator.java Fri Jul 31 17:22:05 2015
@@ -40,9 +40,6 @@ import org.apache.poi.ss.usermodel.Formu
  * For performance reasons, this class keeps a cache of all previously calculated intermediate
  * cell values.  Be sure to call {@link #clearAllCachedResultValues()} if any workbook cells are changed between
  * calls to evaluate~ methods on this class.
- *
- * @author Amol S. Deshmukh < amolweb at ya hoo dot com >
- * @author Josh Micich
  */
 public class XSSFFormulaEvaluator implements FormulaEvaluator, WorkbookEvaluatorProvider {
 

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java?rev=1693632&r1=1693631&r2=1693632&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFRichTextString.java Fri Jul 31 17:22:05 2015
@@ -203,8 +203,11 @@ public class XSSFRichTextString implemen
         CTRElt lt = st.addNewR();
         lt.setT(text);
         preserveSpaces(lt.xgetT());
-        CTRPrElt pr = lt.addNewRPr();
-        if(font != null) setRunAttributes(font.getCTFont(), pr);
+        
+        if (font != null) {
+            CTRPrElt pr = lt.addNewRPr();
+            setRunAttributes(font.getCTFont(), pr);
+        }
     }
 
     /**
@@ -244,6 +247,22 @@ public class XSSFRichTextString implemen
         if(ctFont.sizeOfShadowArray() > 0) pr.addNewShadow().setVal(ctFont.getShadowArray(0).getVal());
         if(ctFont.sizeOfStrikeArray() > 0) pr.addNewStrike().setVal(ctFont.getStrikeArray(0).getVal());
     }
+    
+    /**
+     * Does this string have any explicit formatting applied, or is 
+     *  it just text in the default style?
+     */
+    public boolean hasFormatting() {
+        @SuppressWarnings("deprecation")
+        CTRElt[] rs = st.getRArray();
+        if (rs == null || rs.length == 0) {
+            return false;
+        }
+        for (CTRElt r : rs) {
+            if (r.isSetRPr()) return true;
+        }
+        return false;
+    }
 
     /**
      * Removes any formatting that may have been applied to the string.

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java?rev=1693632&r1=1693631&r2=1693632&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java Fri Jul 31 17:22:05 2015
@@ -1629,7 +1629,8 @@ public class XSSFWorkbook extends POIXML
      * </p>
      * @return true if the date systems used in the workbook starts in 1904
      */
-    protected boolean isDate1904(){
+    @Internal
+    public boolean isDate1904(){
         CTWorkbookPr workbookPr = workbook.getWorkbookPr();
         return workbookPr != null && workbookPr.getDate1904();
     }

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java?rev=1693632&r1=1693631&r2=1693632&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFRichTextString.java Fri Jul 31 17:22:05 2015
@@ -41,16 +41,19 @@ public final class TestXSSFRichTextStrin
     public void testCreate() {
         XSSFRichTextString rt = new XSSFRichTextString("Apache POI");
         assertEquals("Apache POI", rt.getString());
+        assertEquals(false, rt.hasFormatting());
 
         CTRst st = rt.getCTRst();
         assertTrue(st.isSetT());
         assertEquals("Apache POI", st.getT());
+        assertEquals(false, rt.hasFormatting());
 
         rt.append(" is cool stuff");
         assertEquals(2, st.sizeOfRArray());
         assertFalse(st.isSetT());
 
         assertEquals("Apache POI is cool stuff", rt.getString());
+        assertEquals(false, rt.hasFormatting());
     }
 
     public void testEmpty() {
@@ -67,11 +70,13 @@ public final class TestXSSFRichTextStrin
         rt.append("89");
 
         assertEquals("123456789", rt.getString());
+        assertEquals(false, rt.hasFormatting());
 
         XSSFFont font1 = new XSSFFont();
         font1.setBold(true);
 
         rt.applyFont(2, 5, font1);
+        assertEquals(true, rt.hasFormatting());
 
         assertEquals(4, rt.numFormattingRuns());
         assertEquals(0, rt.getIndexOfFormattingRun(0));
@@ -152,6 +157,7 @@ public final class TestXSSFRichTextStrin
 
         XSSFRichTextString rt = new XSSFRichTextString("Apache POI");
         assertEquals("Apache POI", rt.getString());
+        assertEquals(false, rt.hasFormatting());
 
         rt.clearFormatting();
 
@@ -159,15 +165,20 @@ public final class TestXSSFRichTextStrin
         assertTrue(st.isSetT());
         assertEquals("Apache POI", rt.getString());
         assertEquals(0, rt.numFormattingRuns());
+        assertEquals(false, rt.hasFormatting());
 
         XSSFFont font = new XSSFFont();
         font.setBold(true);
 
         rt.applyFont(7, 10, font);
         assertEquals(2, rt.numFormattingRuns());
+        assertEquals(true, rt.hasFormatting());
+        
         rt.clearFormatting();
+        
         assertEquals("Apache POI", rt.getString());
         assertEquals(0, rt.numFormattingRuns());
+        assertEquals(false, rt.hasFormatting());
     }
 
     public void testGetFonts() {



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org