poi-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From n...@apache.org
Subject svn commit: r1165111 - in /poi/trunk/src/ooxml: java/org/apache/poi/xslf/usermodel/ testcases/org/apache/poi/xslf/usermodel/
Date Sun, 04 Sep 2011 21:09:21 GMT
Author: nick
Date: Sun Sep  4 21:09:20 2011
New Revision: 1165111

URL: http://svn.apache.org/viewvc?rev=1165111&view=rev
Log:
XSLF initial work on comment authors, and tests

Added:
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java
Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java
    poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java?rev=1165111&r1=1165110&r2=1165111&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XMLSlideShow.java Sun Sep  4 21:09:20
2011
@@ -65,6 +65,7 @@ public class XMLSlideShow  extends POIXM
     private List<XSLFSlide> _slides;
     private Map<String, XSLFSlideMaster> _masters;
     private XSLFNotesMaster _notesMaster;
+    private XSLFCommentAuthors _commentAuthors;
     protected List<XSLFPictureData> _pictures;
 
     public XMLSlideShow() {
@@ -125,6 +126,8 @@ public class XMLSlideShow  extends POIXM
                     _masters.put(p.getPackageRelationship().getId(), master);
                 } else if (p instanceof XSLFNotesMaster) {
                     _notesMaster = (XSLFNotesMaster)p;
+                } else if (p instanceof XSLFCommentAuthors) {
+                    _commentAuthors = (XSLFCommentAuthors)p;
                 }
             }
 
@@ -219,6 +222,10 @@ public class XMLSlideShow  extends POIXM
         return slide;
     }
     
+    /**
+     * Return the Notes Master, if there is one.
+     * (May not be present if no notes exist)  
+     */
     public XSLFNotesMaster getNotesMaster() {
         return _notesMaster; 
     }
@@ -233,6 +240,14 @@ public class XMLSlideShow  extends POIXM
     public XSLFSlide[] getSlides() {
         return _slides.toArray(new XSLFSlide[_slides.size()]);
     }
+    
+    /**
+     * Returns the list of comment authors, if there is one.
+     * Will only be present if at least one slide has comments on it.
+     */
+    public XSLFCommentAuthors getCommentAuthors() {
+        return _commentAuthors;
+    }
 
     /**
      *

Added: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java?rev=1165111&view=auto
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java (added)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommentAuthors.java Sun Sep
 4 21:09:20 2011
@@ -0,0 +1,73 @@
+/* ====================================================================
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+==================================================================== */
+
+package org.apache.poi.xslf.usermodel;
+
+import java.io.IOException;
+
+import org.apache.poi.POIXMLDocumentPart;
+import org.apache.poi.openxml4j.opc.PackagePart;
+import org.apache.poi.openxml4j.opc.PackageRelationship;
+import org.apache.poi.util.Beta;
+import org.apache.xmlbeans.XmlException;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTCommentAuthor;
+import org.openxmlformats.schemas.presentationml.x2006.main.CTCommentAuthorList;
+import org.openxmlformats.schemas.presentationml.x2006.main.CmAuthorLstDocument;
+
+@Beta
+public class XSLFCommentAuthors extends POIXMLDocumentPart {
+    private final CTCommentAuthorList _authors;
+    
+    /**
+     * Create a new set of slide comments
+     */
+    XSLFCommentAuthors() {
+       super();
+       CmAuthorLstDocument doc = CmAuthorLstDocument.Factory.newInstance();
+       _authors = doc.addNewCmAuthorLst();
+    }
+
+    /**
+     * Construct a SpreadsheetML slide authors from a package part
+     *
+     * @param part the package part holding the comment authors data,
+     * the content type must be <code>application/vnd.openxmlformats-officedocument.commentAuthors+xml</code>
+     * @param rel  the package relationship holding this comment authors,
+     * the relationship type must be http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors
+     */
+    XSLFCommentAuthors(PackagePart part, PackageRelationship rel) throws IOException, XmlException
{
+        super(part, rel);
+
+        CmAuthorLstDocument doc =
+           CmAuthorLstDocument.Factory.parse(getPackagePart().getInputStream());
+        _authors = doc.getCmAuthorLst();
+    }
+    
+    public CTCommentAuthorList getCTCommentAuthorsList() {
+       return _authors;
+    }
+    
+    public CTCommentAuthor getAuthorById(long id) {
+       // TODO Have a map
+       for (CTCommentAuthor author : _authors.getCmAuthorList()) {
+          if (author.getId() == id) {
+             return author;
+          }
+       }
+       return null;
+    }
+}

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java?rev=1165111&r1=1165110&r2=1165111&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFComments.java Sun Sep  4 21:09:20
2011
@@ -24,6 +24,7 @@ import org.apache.poi.openxml4j.opc.Pack
 import org.apache.poi.openxml4j.opc.PackageRelationship;
 import org.apache.poi.util.Beta;
 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.CmLstDocument;
 
@@ -59,4 +60,12 @@ public class XSLFComments extends POIXML
     public CTCommentList getCTCommentsList() {
        return _comments;
     }
+    
+    public int getNumberOfComments() {
+       return _comments.sizeOfCmArray();
+    }
+    
+    public CTComment getCommentAt(int pos) {
+       return _comments.getCmList().get(pos);
+    }
 }

Modified: poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java?rev=1165111&r1=1165110&r2=1165111&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFRelation.java Sun Sep  4 21:09:20
2011
@@ -112,6 +112,13 @@ public class XSLFRelation extends POIXML
          XSLFComments.class
    );
    
+   public static final XSLFRelation COMMENT_AUTHORS = new XSLFRelation(
+         "application/vnd.openxmlformats-officedocument.presentationml.commentAuthors+xml",
+         "http://schemas.openxmlformats.org/officeDocument/2006/relationships/commentAuthors",
+         "/ppt/commentAuthors.xml",
+         XSLFCommentAuthors.class
+   );
+   
     public static final XSLFRelation HYPERLINK = new XSLFRelation(
             null,
             "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink",

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java?rev=1165111&r1=1165110&r2=1165111&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/xslf/usermodel/TestXMLSlideShow.java Sun
Sep  4 21:09:20 2011
@@ -119,4 +119,43 @@ public class TestXMLSlideShow extends Te
       assertEquals(null, xml.getProperties().getCoreProperties().getTitle());
       assertEquals(null, xml.getProperties().getCoreProperties().getUnderlyingProperties().getSubjectProperty().getValue());
    }
+   
+   public void testComments() throws Exception {
+      // Default sample file has none
+      XMLSlideShow xml = new XMLSlideShow(pack);
+      
+      assertEquals(null, xml.getCommentAuthors());
+      
+      for (XSLFSlide slide : xml.getSlides()) {
+         assertEquals(null, slide.getComments());
+      }
+      
+      // Try another with comments
+      OPCPackage packComments = OPCPackage.open(slTests.openResourceAsStream("45545_Comment.pptx"));
+      XMLSlideShow xmlComments = new XMLSlideShow(packComments);
+      
+      // Has one author
+      assertNotNull(xmlComments.getCommentAuthors());
+      assertEquals(1, xmlComments.getCommentAuthors().getCTCommentAuthorsList().sizeOfCmAuthorArray());
+      assertEquals("XPVMWARE01", xmlComments.getCommentAuthors().getAuthorById(0).getName());
+      
+      // First two slides have comments
+      for (int i=0; i<xmlComments.getSlides().length; i++) {
+         XSLFSlide slide = xmlComments.getSlides()[i];
+         
+         if(i == 0) {
+            assertNotNull(slide.getComments());
+            assertEquals(1, slide.getComments().getNumberOfComments());
+            assertEquals("testdoc", slide.getComments().getCommentAt(0).getText());
+            assertEquals(0, slide.getComments().getCommentAt(0).getAuthorId());
+         } else if (i == 1) {
+            assertNotNull(slide.getComments());
+            assertEquals(1, slide.getComments().getNumberOfComments());
+            assertEquals("test phrase", slide.getComments().getCommentAt(0).getText());
+            assertEquals(0, slide.getComments().getCommentAt(0).getAuthorId());
+         } else {
+            assertEquals(null, slide.getComments());
+         }
+      }
+   }
 }



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


Mime
View raw message