]> source.dussan.org Git - poi.git/commitdiff
Update the XSLF slide master text extraction to be optional, as HSLF already is,...
authorNick Burch <nick@apache.org>
Wed, 21 Sep 2011 16:54:22 +0000 (16:54 +0000)
committerNick Burch <nick@apache.org>
Wed, 21 Sep 2011 16:54:22 +0000 (16:54 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1173756 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java
src/ooxml/testcases/org/apache/poi/xslf/extractor/TestXSLFPowerPointExtractor.java
src/scratchpad/src/org/apache/poi/hslf/extractor/PowerPointExtractor.java

index 350f4b255058d025c318f8c30a4b4423272e7f46..ef7ad52d5b5fd818f36cd230416f42bae283a159 100644 (file)
@@ -34,7 +34,7 @@
 
     <changes>
         <release version="3.8-beta5" date="2011-??-??">
-           <action dev="poi-developers" type="add">51804 - include Master Slide text in XSLF text extraction</action>
+           <action dev="poi-developers" type="add">51804 - optionally include Master Slide text in XSLF text extraction, as HSLF already offers</action>
            <action dev="poi-developers" type="add">New PackagePart method getRelatedPart(PackageRelationship) to simplify navigation of relations between OPC Parts</action>
            <action dev="poi-developers" type="fix">51832 - handle XLS files where the WRITEPROTECT record preceeds the FILEPASS one, rather than following as normal</action>
            <action dev="poi-developers" type="fix">51809 - correct GTE handling in COUNTIF</action>
index 930d16142c2842aadc3f0afa38ba7ceb0a6929b2..9563f664a2acf264497ec4608b5868720d1c251f 100644 (file)
@@ -45,6 +45,7 @@ public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
        private XMLSlideShow slideshow;
        private boolean slidesByDefault = true;
        private boolean notesByDefault = false;
+   private boolean masterByDefault = false;
        
        public XSLFPowerPointExtractor(XMLSlideShow slideshow) {
                super(slideshow);
@@ -84,6 +85,13 @@ public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
                this.notesByDefault = notesByDefault;
        }
        
+   /**
+    * Should a call to getText() return text from master? Default is no
+    */
+   public void setMasterByDefault(boolean masterByDefault) {
+       this.masterByDefault = masterByDefault;
+   }
+       
        /**
         * Gets the slide text, but not the notes text
         */
@@ -97,6 +105,16 @@ public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
     * @param notesText Should we retrieve text from notes?
     */
    public String getText(boolean slideText, boolean notesText) {
+      return getText(slideText, notesText, masterByDefault);
+   }
+   
+   /**
+    * Gets the requested text from the file
+    * @param slideText Should we retrieve text from slides?
+    * @param notesText Should we retrieve text from notes?
+    * @param masterText Should we retrieve text from master slides?
+    */
+   public String getText(boolean slideText, boolean notesText, boolean masterText) {
       StringBuffer text = new StringBuffer();
 
       XSLFSlide[] slides = slideshow.getSlides();
@@ -115,8 +133,8 @@ public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
             if (slideText) {
                extractText(slide.getCommonSlideData(), text);
                
-               // If there's a master sheet, grab text from there
-               if(master != null) {
+               // If there's a master sheet and it's requested, grab text from there
+               if(masterText && master != null) {
                   extractText(master.getCommonSlideData(), text);
                }
 
index 2b575fe56a948130c479c99e2559ea877290f593..cfaf344be9d812af7980c9f920a3962fcb729e34 100644 (file)
@@ -68,22 +68,18 @@ public class TestXSLFPowerPointExtractor extends TestCase {
          "Fifth level\n";
                
                // Just slides, no notes
-               text = extractor.getText(true, false);
+               text = extractor.getText(true, false, false);
                assertEquals(
                                "Lorem ipsum dolor sit amet\n" +
                                "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
                                "\n" +
-                               masterText +
-            "\n\n\n" +
                                "Lorem ipsum dolor sit amet\n" +
                                "Lorem\n" +
                                "ipsum\n" +
                                "dolor\n" +
                                "sit\n" +
                                "amet\n" +
-                               "\n" +
-            masterText +
-                               "\n\n\n"
+                               "\n"
                                , text
                );
                
@@ -94,25 +90,61 @@ public class TestXSLFPowerPointExtractor extends TestCase {
                );
                
                // Both
-               text = extractor.getText(true, true);
+               text = extractor.getText(true, true, false);
                assertEquals(
                                "Lorem ipsum dolor sit amet\n" +
                                "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
-            "\n" +
-            masterText +
-                               "\n\n\n\n\n" +
+            "\n\n\n" +
                                "Lorem ipsum dolor sit amet\n" +
                                "Lorem\n" +
                                "ipsum\n" +
                                "dolor\n" +
                                "sit\n" +
                                "amet\n" +
-                               "\n" +
-            masterText +
-            "\n\n\n\n\n"
+                               "\n\n\n"
                                , text
                );
                
+               // With Slides and Master Text
+      text = extractor.getText(true, false, true);
+      assertEquals(
+            "Lorem ipsum dolor sit amet\n" +
+            "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
+            "\n" +
+            masterText +
+            "\n\n\n" +
+            "Lorem ipsum dolor sit amet\n" +
+            "Lorem\n" +
+            "ipsum\n" +
+            "dolor\n" +
+            "sit\n" +
+            "amet\n" +
+            "\n" +
+            masterText +
+            "\n\n\n"
+            , text
+      );
+               
+               // With Slides, Notes and Master Text
+      text = extractor.getText(true, true, true);
+      assertEquals(
+            "Lorem ipsum dolor sit amet\n" +
+            "Nunc at risus vel erat tempus posuere. Aenean non ante.\n" +
+            "\n" +
+            masterText +
+            "\n\n\n\n\n" +
+            "Lorem ipsum dolor sit amet\n" +
+            "Lorem\n" +
+            "ipsum\n" +
+            "dolor\n" +
+            "sit\n" +
+            "amet\n" +
+            "\n" +
+            masterText +
+            "\n\n\n\n\n"
+            , text
+      );
+               
                // Via set defaults
                extractor.setSlidesByDefault(false);
                extractor.setNotesByDefault(true);
index 239df9a69a99d90a0e38f28fce5f8135b57a17c1..8a195ac25881a38f73d660ac2a82226d4b7cc8db 100644 (file)
@@ -39,14 +39,14 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem;
  * @author Nick Burch
  */
 public final class PowerPointExtractor extends POIOLE2TextExtractor {
-       private HSLFSlideShow _hslfshow;
-       private SlideShow _show;
-       private Slide[] _slides;
-
-       private boolean _slidesByDefault = true;
-       private boolean _notesByDefault = false;
-       private boolean _commentsByDefault = false;
-    private boolean _masterByDefault = false;
+   private HSLFSlideShow _hslfshow;
+   private SlideShow _show;
+   private Slide[] _slides;
+
+   private boolean _slidesByDefault = true;
+   private boolean _notesByDefault = false;
+   private boolean _commentsByDefault = false;
+   private boolean _masterByDefault = false;
 
        /**
         * Basic extractor. Returns all the text, and optionally all the notes