From 5b801a9dc608a7bb2f5a1275c4e0ef705cfd73c3 Mon Sep 17 00:00:00 2001 From: Tim Allison Date: Wed, 1 Mar 2017 15:47:47 +0000 Subject: [PATCH] Bug 60795 -- add enum for message class in MAPIMessage; deprecate getMessageClass() git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1784978 13f79535-47bb-0310-9956-ffa450edef68 --- .../src/org/apache/poi/hsmf/MAPIMessage.java | 47 +++++++++++++++++- .../apache/poi/hsmf/TestSimpleFileRead.java | 28 +++++++++-- test-data/hsmf/msgClassAppointment.msg | Bin 0 -> 30208 bytes test-data/hsmf/msgClassContact.msg | Bin 0 -> 29184 bytes test-data/hsmf/msgClassPost.msg | Bin 0 -> 21504 bytes test-data/hsmf/msgClassStickyNote.msg | Bin 0 -> 10240 bytes test-data/hsmf/msgClassTask.msg | Bin 0 -> 19968 bytes 7 files changed, 70 insertions(+), 5 deletions(-) create mode 100644 test-data/hsmf/msgClassAppointment.msg create mode 100644 test-data/hsmf/msgClassContact.msg create mode 100644 test-data/hsmf/msgClassPost.msg create mode 100644 test-data/hsmf/msgClassStickyNote.msg create mode 100644 test-data/hsmf/msgClassTask.msg diff --git a/src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java b/src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java index a3d2152bbb..c44627656a 100644 --- a/src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java +++ b/src/scratchpad/src/org/apache/poi/hsmf/MAPIMessage.java @@ -49,7 +49,6 @@ import org.apache.poi.hsmf.exceptions.ChunkNotFoundException; import org.apache.poi.hsmf.parsers.POIFSChunkParser; import org.apache.poi.poifs.filesystem.DirectoryNode; import org.apache.poi.poifs.filesystem.NPOIFSFileSystem; -import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.util.CodePageUtil; import org.apache.poi.util.POILogFactory; import org.apache.poi.util.POILogger; @@ -63,6 +62,21 @@ import org.apache.poi.util.POILogger; * [MS-OXCMSG]: Message and Attachment Object Protocol Specification */ public class MAPIMessage extends POIReadOnlyDocument { + + /** + * A MAPI file can be an email (NOTE) or a number of other types + */ + public enum MESSAGE_CLASS { + APPOINTMENT, + CONTACT, + NOTE, + POST, + STICKY_NOTE, + TASK, + UNKNOWN, + UNSPECIFIED + } + /** For logging problems we spot with the file */ private POILogger logger = POILogFactory.getLogger(MAPIMessage.class); @@ -528,11 +542,42 @@ public class MAPIMessage extends POIReadOnlyDocument { * For emails the class will be IPM.Note * * @throws ChunkNotFoundException + * @deprecated use {@link #getMessageClassEnum()} */ public String getMessageClass() throws ChunkNotFoundException { return getStringFromChunk(mainChunks.getMessageClass()); } + /** + * Gets the message class of the parsed Outlook Message. + * (Yes, you can use this to determine if a message is a calendar + * item, note, or actual outlook Message) + * For emails the class will be IPM.Note + * + * @throws ChunkNotFoundException + */ + public MESSAGE_CLASS getMessageClassEnum() throws ChunkNotFoundException { + String mc = getMessageClass(); + if (mc == null || mc.trim().length() == 0) { + return MESSAGE_CLASS.UNSPECIFIED; + } else if (mc.equalsIgnoreCase("IPM.Note")) { + return MESSAGE_CLASS.NOTE; + } else if (mc.equalsIgnoreCase("IPM.Contact")) { + return MESSAGE_CLASS.CONTACT; + } else if (mc.equalsIgnoreCase("IPM.Appointment")) { + return MESSAGE_CLASS.APPOINTMENT; + } else if (mc.equalsIgnoreCase("IPM.StickyNote")) { + return MESSAGE_CLASS.STICKY_NOTE; + } else if (mc.equalsIgnoreCase("IPM.Task")) { + return MESSAGE_CLASS.TASK; + } else if (mc.equalsIgnoreCase("IPM.Post")) { + return MESSAGE_CLASS.POST; + } else { + logger.log(POILogger.WARN, "I don't recognize message class '"+mc+"'. " + + "Please open an issue on POI's bugzilla"); + return MESSAGE_CLASS.UNKNOWN; + } + } /** * Gets the date that the message was accepted by the * server on. diff --git a/src/scratchpad/testcases/org/apache/poi/hsmf/TestSimpleFileRead.java b/src/scratchpad/testcases/org/apache/poi/hsmf/TestSimpleFileRead.java index bdfff10788..cc902fae34 100644 --- a/src/scratchpad/testcases/org/apache/poi/hsmf/TestSimpleFileRead.java +++ b/src/scratchpad/testcases/org/apache/poi/hsmf/TestSimpleFileRead.java @@ -19,11 +19,10 @@ package org.apache.poi.hsmf; import java.io.IOException; -import org.apache.poi.hsmf.MAPIMessage; -import org.apache.poi.hsmf.exceptions.ChunkNotFoundException; -import org.apache.poi.POIDataSamples; - import junit.framework.TestCase; +import org.apache.poi.POIDataSamples; +import org.apache.poi.hsmf.exceptions.ChunkNotFoundException; +import org.junit.Test; /** * Tests to verify that we can read a simple msg file, that is in plain/text @@ -134,4 +133,25 @@ public final class TestSimpleFileRead extends TestCase { String obtained = mapiMessage.getMessageClass(); TestCase.assertEquals("IPM.Note", obtained); } + + /** + * Check the various message classes + * + * @throws Exception + */ + @Test + public void testReadMessageClass2() throws Exception { + TestCase.assertEquals( + MAPIMessage.MESSAGE_CLASS.NOTE, mapiMessage.getMessageClassEnum()); + + for (String messageClass : new String[]{ + "Appointment", "Contact", "Post", "StickyNote", "Task" + }) { + MAPIMessage.MESSAGE_CLASS mc = new MAPIMessage( + POIDataSamples.getHSMFInstance().getFile("msgClass"+messageClass+".msg") + ).getMessageClassEnum(); + assertTrue( mc + " but expected " + messageClass, + messageClass.equalsIgnoreCase(mc.toString().replaceAll("_", ""))); + } + } } diff --git a/test-data/hsmf/msgClassAppointment.msg b/test-data/hsmf/msgClassAppointment.msg new file mode 100644 index 0000000000000000000000000000000000000000..c124d31d8996fa3ca8554ae4ff1060dd87e75a0b GIT binary patch literal 30208 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 Z;C&s6@^82aPxsV+Lv=4*#ow9#{{eP8SMvY> literal 0 HcmV?d00001 diff --git a/test-data/hsmf/msgClassContact.msg b/test-data/hsmf/msgClassContact.msg new file mode 100644 index 0000000000000000000000000000000000000000..d925f3d702b40a98ae48fe7eeac3f68bdd7e22c9 GIT binary patch literal 29184 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 literal 0 HcmV?d00001 diff --git a/test-data/hsmf/msgClassStickyNote.msg b/test-data/hsmf/msgClassStickyNote.msg new file mode 100644 index 0000000000000000000000000000000000000000..13873a1e448d9a0283a10ebe9cc542f781231194 GIT binary patch literal 10240 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 Xg=hlpk9fu>pHT}a`EUCF&;$PmnL{EH literal 0 HcmV?d00001 -- 2.39.5