]> source.dussan.org Git - poi.git/commitdiff
List attachment names in the output of OutlookTextExtractor (to get attachment conten...
authorNick Burch <nick@apache.org>
Wed, 2 Jun 2010 15:24:11 +0000 (15:24 +0000)
committerNick Burch <nick@apache.org>
Wed, 2 Jun 2010 15:24:11 +0000 (15:24 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@950595 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/xdocs/status.xml
src/scratchpad/src/org/apache/poi/hsmf/extractor/OutlookTextExtactor.java
src/scratchpad/testcases/org/apache/poi/hsmf/extractor/TestOutlookTextExtractor.java

index 1b213bb52e64ba5976f5f44c2b79a9b2fd12b1ae..11d5441eb7509435b381ab2d96752b5157c3776e 100644 (file)
@@ -34,6 +34,7 @@
 
     <changes>
         <release version="3.7-SNAPSHOT" date="2010-??-??">
+           <action dev="POI-DEVELOPERS" type="add">List attachment names in the output of OutlookTextExtractor (to get attachment contents, use ExtractorFactory as normal)</action>
            <action dev="POI-DEVELOPERS" type="fix">48872 - allow DateFormatter.formatRawCellContents to handle 1904 as well as 1900 dates</action>
            <action dev="POI-DEVELOPERS" type="fix">48872 - handle MMMMM and elapsed time formatting rules in DataFormatter</action>
            <action dev="POI-DEVELOPERS" type="fix">48872 - handle zero formatting rules, and better color detection in DataFormatter</action>
index 8bbea40893ba676d87113c4f47f836a0aec13eac..7c88efad7a3aaa4a7e73b332387c09d33b317301 100644 (file)
@@ -22,6 +22,7 @@ import java.text.SimpleDateFormat;
 
 import org.apache.poi.POIOLE2TextExtractor;
 import org.apache.poi.hsmf.MAPIMessage;
+import org.apache.poi.hsmf.datatypes.AttachmentChunks;
 import org.apache.poi.hsmf.exceptions.ChunkNotFoundException;
 import org.apache.poi.poifs.filesystem.DirectoryNode;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
@@ -93,6 +94,18 @@ public class OutlookTextExtactor extends POIOLE2TextExtractor {
       try {
          s.append("Subject: " + msg.getSubject() + "\n");
       } catch(ChunkNotFoundException e) {}
+      
+      // Display attachment names
+      // To get the attachments, use ExtractorFactory
+      for(AttachmentChunks att : msg.getAttachmentFiles()) {
+         String ats = att.attachLongFileName.getValue();
+         if(att.attachMimeTag != null && 
+               att.attachMimeTag.getValue() != null) {
+            ats = att.attachMimeTag.getValue() + " = " + ats; 
+         }
+         s.append("Attachment: " + ats + "\n");
+      }
+      
       try {
          s.append("\n" + msg.getTextBody() + "\n");
       } catch(ChunkNotFoundException e) {}
index 2a00b37fe4e9b1015a8cc28050e910cac5b4b52b..b18a9eb26c5c8269397abd2b29f362672961f896 100644 (file)
@@ -26,6 +26,9 @@ import java.util.GregorianCalendar;
 import junit.framework.TestCase;
 
 import org.apache.poi.POIDataSamples;
+import org.apache.poi.POITextExtractor;
+import org.apache.poi.extractor.ExtractorFactory;
+import org.apache.poi.extractor.TestExtractorFactory;
 import org.apache.poi.hsmf.MAPIMessage;
 import org.apache.poi.poifs.filesystem.POIFSFileSystem;
 
@@ -59,6 +62,7 @@ public final class TestOutlookTextExtractor extends TestCase {
       assertContains(text, "To: Kevin Roast <kevin.roast@alfresco.org>\n");
       assertEquals(-1, text.indexOf("CC:"));
       assertEquals(-1, text.indexOf("BCC:"));
+      assertEquals(-1, text.indexOf("Attachment:"));
       assertContains(text, "Subject: Test the content transformer\n");
       Calendar cal = new GregorianCalendar(2007, 5, 14, 9, 42, 55);
       SimpleDateFormat f = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss");
@@ -171,4 +175,31 @@ public final class TestOutlookTextExtractor extends TestCase {
          assertContains(text, "The quick brown fox jumps over the lazy dog");
       }
    }
+   
+   /**
+    * See also {@link TestExtractorFactory#testEmbeded()}
+    */
+   public void testWithAttachments() throws Exception {
+      POIFSFileSystem simple = new POIFSFileSystem(
+            new FileInputStream(samples.getFile("attachment_test_msg.msg"))
+      );
+      MAPIMessage msg = new MAPIMessage(simple);
+      OutlookTextExtactor ext = new OutlookTextExtactor(msg);
+      
+      // Check the normal bits
+      String text = ext.getText();
+      
+      assertContains(text, "From: Nicolas1");
+      assertContains(text, "To: 'nicolas1.23456@free.fr'");
+      assertEquals(-1, text.indexOf("CC:"));
+      assertEquals(-1, text.indexOf("BCC:"));
+      assertContains(text, "Subject: test");
+      assertEquals(-1, text.indexOf("Date:"));
+      assertContains(text, "Attachment: test-unicode.doc\n");
+      assertContains(text, "Attachment: pj1.txt\n");
+      assertContains(text, "contenu");
+      
+      // Embeded bits are checked in
+      //  TestExtractorFactory
+   }
 }