]> source.dussan.org Git - poi.git/commitdiff
Convert the XSLF text extractor from using the old style low level code to use usermodel
authorNick Burch <nick@apache.org>
Sun, 4 Sep 2011 20:51:21 +0000 (20:51 +0000)
committerNick Burch <nick@apache.org>
Sun, 4 Sep 2011 20:51:21 +0000 (20:51 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1165109 13f79535-47bb-0310-9956-ffa450edef68

src/ooxml/java/org/apache/poi/xslf/extractor/XSLFPowerPointExtractor.java

index 773e0f458b929b2f8e39b511cedcb5a5bf212ea0..4614591a2d197f6a15fb2e4ab75aa14dbc71fb3d 100644 (file)
 ==================================================================== */
 package org.apache.poi.xslf.extractor;
 
+import java.io.IOException;
+
 import org.apache.poi.POIXMLTextExtractor;
 import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
 import org.apache.poi.openxml4j.opc.OPCPackage;
 import org.apache.poi.xslf.XSLFSlideShow;
 import org.apache.poi.xslf.usermodel.DrawingParagraph;
 import org.apache.poi.xslf.usermodel.XMLSlideShow;
+import org.apache.poi.xslf.usermodel.XSLFComments;
 import org.apache.poi.xslf.usermodel.XSLFCommonSlideData;
+import org.apache.poi.xslf.usermodel.XSLFNotes;
 import org.apache.poi.xslf.usermodel.XSLFRelation;
 import org.apache.poi.xslf.usermodel.XSLFSlide;
 import org.apache.xmlbeans.XmlException;
 import org.openxmlformats.schemas.presentationml.x2006.main.CTComment;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTCommentList;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTNotesSlide;
-import org.openxmlformats.schemas.presentationml.x2006.main.CTSlideIdListEntry;
-
-import java.io.IOException;
 
 public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
    public static final XSLFRelation[] SUPPORTED_TYPES = new XSLFRelation[] {
@@ -89,51 +88,50 @@ public class XSLFPowerPointExtractor extends POIXMLTextExtractor {
                return getText(slidesByDefault, notesByDefault);
        }
        
-       /**
-        * Gets the requested text from the file
-        * @param slideText Should we retrieve text from slides?
-        * @param notesText Should we retrieve text from notes?
-        */
-       public String getText(boolean slideText, boolean notesText) {
-               StringBuffer text = new StringBuffer();
+   /**
+    * Gets the requested text from the file
+    * @param slideText Should we retrieve text from slides?
+    * @param notesText Should we retrieve text from notes?
+    */
+   public String getText(boolean slideText, boolean notesText) {
+      StringBuffer text = new StringBuffer();
+
+      XSLFSlide[] slides = slideshow.getSlides();
 
-               XSLFSlide[] slides = slideshow.getSlides();
-        try {
-            XSLFSlideShow xsl = new XSLFSlideShow(slideshow.getPackage());
-            for (int i = 0; i < slides.length; i++) {
-                CTSlideIdListEntry slideId = slideshow.getCTPresentation().getSldIdLst().getSldIdArray(i);
+      for (XSLFSlide slide : slides) {
+         try {
+            XSLFNotes notes = slide.getNotes();
+            XSLFComments comments = slide.getComments();
 
-                // For now, still very low level
-                CTNotesSlide notes =
-                        xsl.getNotes(slideId);
-                CTCommentList comments =
-                        xsl.getSlideComments(slideId);
+            // TODO Do the slide's name
 
-                if (slideText) {
-                    extractText(new XSLFCommonSlideData(slides[i].getXmlObject().getCSld()), text);
+            // Do the slide's text if requested
+            if (slideText) {
+               extractText(slide.getCommonSlideData(), text);
 
-                    // Comments too for the slide
-                    if (comments != null) {
-                        for (CTComment comment : comments.getCmList()) {
-                            // TODO - comment authors too
-                            // (They're in another stream)
-                            text.append(
-                                    comment.getText() + "\n"
-                            );
-                        }
-                    }
-                }
+               // If the slide has comments, do those too
+               if (comments != null) {
+                  for (CTComment comment : comments.getCTCommentsList().getCmList()) {
+                     // TODO - comment authors too
+                     // (They're in another stream)
+                     text.append(
+                           comment.getText() + "\n"
+                     );
+                  }
+               }
+            }
 
-                if (notesText && notes != null) {
-                    extractText(new XSLFCommonSlideData(notes.getCSld()), text);
-                }
+            // Do the notes if requested
+            if (notesText && notes != null) {
+               extractText(notes.getCommonSlideData(), text);
             }
-        } catch (Exception e) {
+         } catch (Exception e) {
             throw new RuntimeException(e);
-        }
+         }
+      }
 
-        return text.toString();
-       }
+      return text.toString();
+   }
        
        private void extractText(XSLFCommonSlideData data, StringBuffer text) {
         for (DrawingParagraph p : data.getText()) {