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 2010/08/04 19:22:16 UTC

svn commit: r982334 - in /poi/trunk/src/ooxml: java/org/apache/poi/extractor/ExtractorFactory.java testcases/org/apache/poi/extractor/TestExtractorFactory.java

Author: nick
Date: Wed Aug  4 17:22:15 2010
New Revision: 982334

URL: http://svn.apache.org/viewvc?rev=982334&view=rev
Log:
Support nested outlook files in ExtractorFactory

Modified:
    poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java
    poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java

Modified: poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java?rev=982334&r1=982333&r2=982334&view=diff
==============================================================================
--- poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java (original)
+++ poi/trunk/src/ooxml/java/org/apache/poi/extractor/ExtractorFactory.java Wed Aug  4 17:22:15 2010
@@ -50,7 +50,6 @@ import org.apache.poi.poifs.filesystem.D
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.Entry;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
-import org.apache.poi.xslf.XSLFSlideShow;
 import org.apache.poi.xslf.extractor.XSLFPowerPointExtractor;
 import org.apache.poi.xslf.usermodel.XSLFRelation;
 import org.apache.poi.xssf.extractor.XSSFEventBasedExcelExtractor;
@@ -289,8 +288,10 @@ public class ExtractorFactory {
 		   MAPIMessage msg = ((OutlookTextExtactor)ext).getMAPIMessage();
 		   for(AttachmentChunks attachment : msg.getAttachmentFiles()) {
 		      if(attachment.attachData != null) {
-   		      byte[] data = attachment.attachData.getValue();
-   		      nonPOIFS.add( new ByteArrayInputStream(data) );
+   		         byte[] data = attachment.attachData.getValue();
+   		         nonPOIFS.add( new ByteArrayInputStream(data) );
+		      } else if(attachment.attachmentDirectory != null) {
+		          dirs.add(attachment.attachmentDirectory.getDirectory());
 		      }
 		   }
 		}

Modified: poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java?rev=982334&r1=982333&r2=982334&view=diff
==============================================================================
--- poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java (original)
+++ poi/trunk/src/ooxml/testcases/org/apache/poi/extractor/TestExtractorFactory.java Wed Aug  4 17:22:15 2010
@@ -66,6 +66,7 @@ public class TestExtractorFactory extend
 
    private File msg;
    private File msgEmb;
+   private File msgEmbMsg;
    
    private File vsd;
    
@@ -102,6 +103,7 @@ public class TestExtractorFactory extend
       POIDataSamples olTests = POIDataSamples.getHSMFInstance();
       msg = olTests.getFile("quick.msg");
       msgEmb = olTests.getFile("attachment_test_msg.msg");
+      msgEmbMsg = olTests.getFile("attachment_msg_pdf.msg");
    }
 
    public void testFile() throws Exception {
@@ -534,51 +536,77 @@ public class TestExtractorFactory extend
       embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext);
 
       assertEquals(6, embeds.length);
-      int numWord = 0, numXls = 0, numPpt = 0;
+      int numWord = 0, numXls = 0, numPpt = 0, numMsg = 0;
       for(int i=0; i<embeds.length; i++) {
          assertTrue(embeds[i].getText().length() > 20);
 
          if(embeds[i] instanceof PowerPointExtractor) numPpt++;
          else if(embeds[i] instanceof ExcelExtractor) numXls++;
          else if(embeds[i] instanceof WordExtractor) numWord++;
+         else if(embeds[i] instanceof OutlookTextExtactor) numMsg++;
       }
       assertEquals(2, numPpt);
       assertEquals(2, numXls);
       assertEquals(2, numWord);
+      assertEquals(0, numMsg);
 
       // Word
       ext = (POIOLE2TextExtractor)
       ExtractorFactory.createExtractor(docEmb);
       embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext);
 
-      numWord = 0; numXls = 0; numPpt = 0;
+      numWord = 0; numXls = 0; numPpt = 0; numMsg = 0;
       assertEquals(4, embeds.length);
       for(int i=0; i<embeds.length; i++) {
          assertTrue(embeds[i].getText().length() > 20);
          if(embeds[i] instanceof PowerPointExtractor) numPpt++;
          else if(embeds[i] instanceof ExcelExtractor) numXls++;
          else if(embeds[i] instanceof WordExtractor) numWord++;
+         else if(embeds[i] instanceof OutlookTextExtactor) numMsg++;
       }
       assertEquals(1, numPpt);
       assertEquals(2, numXls);
       assertEquals(1, numWord);
+      assertEquals(0, numMsg);
       
       // Outlook
       ext = (OutlookTextExtactor)
       ExtractorFactory.createExtractor(msgEmb);
       embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext);
 
-      numWord = 0; numXls = 0; numPpt = 0;
+      numWord = 0; numXls = 0; numPpt = 0; numMsg = 0;
       assertEquals(1, embeds.length);
       for(int i=0; i<embeds.length; i++) {
          assertTrue(embeds[i].getText().length() > 20);
          if(embeds[i] instanceof PowerPointExtractor) numPpt++;
          else if(embeds[i] instanceof ExcelExtractor) numXls++;
          else if(embeds[i] instanceof WordExtractor) numWord++;
+         else if(embeds[i] instanceof OutlookTextExtactor) numMsg++;
       }
       assertEquals(0, numPpt);
       assertEquals(0, numXls);
       assertEquals(1, numWord);
+      assertEquals(0, numMsg);
+      
+      // Outlook with another outlook file in it
+      ext = (OutlookTextExtactor)
+      ExtractorFactory.createExtractor(msgEmbMsg);
+      embeds = ExtractorFactory.getEmbededDocsTextExtractors(ext);
+
+      numWord = 0; numXls = 0; numPpt = 0; numMsg = 0;
+      assertEquals(1, embeds.length);
+      for(int i=0; i<embeds.length; i++) {
+         assertTrue(embeds[i].getText().length() > 20);
+         if(embeds[i] instanceof PowerPointExtractor) numPpt++;
+         else if(embeds[i] instanceof ExcelExtractor) numXls++;
+         else if(embeds[i] instanceof WordExtractor) numWord++;
+         else if(embeds[i] instanceof OutlookTextExtactor) numMsg++;
+      }
+      assertEquals(0, numPpt);
+      assertEquals(0, numXls);
+      assertEquals(0, numWord);
+      assertEquals(1, numMsg);
+      
 
       // TODO - PowerPoint
       // TODO - Publisher



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