]> source.dussan.org Git - poi.git/commitdiff
More converting of HSMF code to use strongly type attributes
authorNick Burch <nick@apache.org>
Tue, 11 Jan 2011 16:11:23 +0000 (16:11 +0000)
committerNick Burch <nick@apache.org>
Tue, 11 Jan 2011 16:11:23 +0000 (16:11 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1057712 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hsmf/datatypes/Chunks.java
src/scratchpad/src/org/apache/poi/hsmf/datatypes/MAPIAttribute.java
src/scratchpad/testcases/org/apache/poi/hsmf/datatypes/TestChunkData.java
src/scratchpad/testcases/org/apache/poi/hsmf/parsers/TestPOIFSChunkParser.java

index bb989d1d96227fb40ef340f61ab030678b53e17c..46ac9edf3beba8ef5fd54031a41954f1d87c529b 100644 (file)
@@ -30,24 +30,6 @@ import java.util.List;
  *  http://msdn.microsoft.com/en-us/library/ms526356%28v=exchg.10%29.aspx
  */
 public final class Chunks implements ChunkGroup {
-   // 0x0050 -> 0x006F seem to be routing info or similar
-   public static final int CONVERSATION_TOPIC  = 0x0070;
-   public static final int CONVERSATION_INDEX  = 0x0071;
-   public static final int SENT_BY_SERVER_TYPE = 0x0075;
-   public static final int RECEIVED_BY_ADDRESS = 0x0076;
-   public static final int RECEIVED_REPRESENTING_ADDRESS = 0x0078;
-   public static final int MESSAGE_HEADERS     = 0x007D;
-   // RECEIVEDEMAIL = 76
-   public static final int DISPLAY_TO          = 0x0E04;
-   public static final int DISPLAY_FROM        = 0x0C1A;
-   public static final int EMAIL_FROM          = 0x0C1F;
-   public static final int DISPLAY_CC          = 0x0E03;
-   public static final int DISPLAY_BCC         = 0x0E02;
-   // 0x0E1D seems a duplicate of 0x0070 !
-   public static final int TEXT_BODY           = 0x1000;
-   public static final int MESSAGE_ID          = 0x1035;
-   // 0x8??? ones are outlook specific, and not standard MAPI
-   
    /** Holds all the chunks that were found. */
    private List<Chunk> allChunks = new ArrayList<Chunk>();
    
@@ -92,50 +74,50 @@ public final class Chunks implements ChunkGroup {
       if(chunk.getChunkId() == MAPIAttribute.MESSAGE_CLASS.id) {
          messageClass = (StringChunk)chunk;
       }
-      else if(chunk.getChunkId() == MAPIAttribute.SUBJECT.id) {
-         subjectChunk = (StringChunk)chunk;
-      }
-      else if(chunk.getChunkId() == MAPIAttribute.ORIGINAL_SUBJECT.id) {
-         // TODO
+      else if(chunk.getChunkId() == MAPIAttribute.INTERNET_MESSAGE_ID.id) {
+         messageId = (StringChunk)chunk;
       }
       else if(chunk.getChunkId() == MAPIAttribute.MESSAGE_SUBMISSION_ID.id) {
          // TODO - parse
          submissionChunk = (MessageSubmissionChunk)chunk;
       }
-      
-      switch(chunk.getChunkId()) {
-      case MESSAGE_ID:
-         messageId = (StringChunk)chunk;
-         break;
-      case CONVERSATION_TOPIC:
-         conversationTopic = (StringChunk)chunk;
-         break;
-      case SENT_BY_SERVER_TYPE:
+      else if(chunk.getChunkId() == MAPIAttribute.RECEIVED_BY_ADDRTYPE.id) {
          sentByServerType = (StringChunk)chunk;
-         break;
-      case MESSAGE_HEADERS:
+      }
+      else if(chunk.getChunkId() == MAPIAttribute.TRANSPORT_MESSAGE_HEADERS.id) {
          messageHeaders = (StringChunk)chunk;
-         break;
-      case DISPLAY_TO:
+      }
+      
+      else if(chunk.getChunkId() == MAPIAttribute.CONVERSATION_TOPIC.id) {
+         conversationTopic = (StringChunk)chunk;
+      }
+      else if(chunk.getChunkId() == MAPIAttribute.SUBJECT.id) {
+         subjectChunk = (StringChunk)chunk;
+      }
+      else if(chunk.getChunkId() == MAPIAttribute.ORIGINAL_SUBJECT.id) {
+         // TODO
+      }
+      
+      else if(chunk.getChunkId() == MAPIAttribute.DISPLAY_TO.id) {
          displayToChunk = (StringChunk)chunk;
-         break;
-      case DISPLAY_FROM:
-         displayFromChunk = (StringChunk)chunk;
-         break;
-      case EMAIL_FROM:
-         emailFromChunk = (StringChunk)chunk;
-         break;
-      case DISPLAY_CC:
+      }
+      else if(chunk.getChunkId() == MAPIAttribute.DISPLAY_CC.id) {
          displayCCChunk = (StringChunk)chunk;
-         break;
-      case DISPLAY_BCC:
+      }
+      else if(chunk.getChunkId() == MAPIAttribute.DISPLAY_BCC.id) {
          displayBCCChunk = (StringChunk)chunk;
-         break;
-      case TEXT_BODY:
+      }
+      
+      else if(chunk.getChunkId() == MAPIAttribute.SENDER_EMAIL_ADDRESS.id) {
+         emailFromChunk = (StringChunk)chunk;
+      }
+      else if(chunk.getChunkId() == MAPIAttribute.SENDER_NAME.id) {
+         displayFromChunk = (StringChunk)chunk;
+      }
+      else if(chunk.getChunkId() == MAPIAttribute.BODY.id) {
          textBodyChunk = (StringChunk)chunk;
-         break;
       }
-
+      
       // And add to the main list
       allChunks.add(chunk);
    }
index 6d679a4bc1f2b9d038b6c280198d7ee3c13e3cbb..8cc4c2cc56040570560a8e2775025256ebff01cb 100644 (file)
@@ -1020,6 +1020,8 @@ public final class MAPIAttribute {
    public static final MAPIAttribute UNKNOWN =
       new MAPIAttribute(-1, -1, "Unknown", null);
    
+   // 0x8??? ones are outlook specific, and not standard MAPI
+   
    /* ---------------------------------------------------------------------  */
    
    public final int id;
index 23b2faecd671160b4c0e63f6159b6d03b82000ce..f9c17abdfb72c5ad810f074bc52617b286426a99 100644 (file)
 
 package org.apache.poi.hsmf.datatypes;
 
-import org.apache.poi.hsmf.datatypes.Chunk;
-import org.apache.poi.hsmf.datatypes.Chunks;
-import org.apache.poi.hsmf.datatypes.StringChunk;
-import org.apache.poi.hsmf.datatypes.Types;
-
 import junit.framework.TestCase;
 
 /**
@@ -58,23 +53,23 @@ public final class TestChunkData extends TestCase {
 
        public void testTextBodyChunk() {
                StringChunk chunk = new StringChunk(0x1000, Types.UNICODE_STRING);
-               assertEquals(chunk.getChunkId(), Chunks.TEXT_BODY);
+               assertEquals(chunk.getChunkId(), MAPIAttribute.BODY.id);
        }
 
        public void testDisplayToChunk() {
                StringChunk chunk = new StringChunk(0x0E04, Types.UNICODE_STRING);
-      assertEquals(chunk.getChunkId(), Chunks.DISPLAY_TO);
+      assertEquals(chunk.getChunkId(), MAPIAttribute.DISPLAY_TO.id);
        }
 
 
        public void testDisplayCCChunk() {
                StringChunk chunk = new StringChunk(0x0E03, Types.UNICODE_STRING);
-      assertEquals(chunk.getChunkId(), Chunks.DISPLAY_CC);
+      assertEquals(chunk.getChunkId(), MAPIAttribute.DISPLAY_CC.id);
        }
 
        public void testDisplayBCCChunk() {
                StringChunk chunk = new StringChunk(0x0E02, Types.UNICODE_STRING);
-      assertEquals(chunk.getChunkId(), Chunks.DISPLAY_BCC);
+      assertEquals(chunk.getChunkId(), MAPIAttribute.DISPLAY_BCC.id);
        }
 
        public void testSubjectChunk() {
index ee6f17db8e2384136b3ae89fc366b8fdc4484c40..fdbc052fe41a88cbdeaab0d68d6f4803c260f881 100644 (file)
@@ -60,7 +60,7 @@ public final class TestPOIFSChunkParser extends TestCase {
             (new StringChunk(MAPIAttribute.SUBJECT.id, Types.ASCII_STRING)).getEntryName()
       );
       simple.getRoot().getEntry(
-            (new StringChunk(Chunks.DISPLAY_FROM, Types.ASCII_STRING)).getEntryName()
+            (new StringChunk(MAPIAttribute.SENDER_NAME.id, Types.ASCII_STRING)).getEntryName()
       );
       
       // Now load the file