]> source.dussan.org Git - poi.git/commitdiff
Support decoding a few more property types
authorNick Burch <nick@apache.org>
Wed, 26 Jun 2013 16:17:00 +0000 (16:17 +0000)
committerNick Burch <nick@apache.org>
Wed, 26 Jun 2013 16:17:00 +0000 (16:17 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1496988 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hsmf/datatypes/PropertiesChunk.java
src/scratchpad/src/org/apache/poi/hsmf/datatypes/PropertyValue.java

index 605c382e6ef9a9477aa470db06a4f61fe5b08143..2e6c508bbc0903f2b345a9b636de88601045389a 100644 (file)
@@ -26,6 +26,8 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.poi.hsmf.datatypes.PropertyValue.LongLongPropertyValue;
+import org.apache.poi.hsmf.datatypes.PropertyValue.LongPropertyValue;
+import org.apache.poi.hsmf.datatypes.PropertyValue.ShortPropertyValue;
 import org.apache.poi.hsmf.datatypes.PropertyValue.TimePropertyValue;
 import org.apache.poi.hsmf.datatypes.Types.MAPIType;
 import org.apache.poi.util.IOUtils;
@@ -177,13 +179,19 @@ public abstract class PropertiesChunk extends Chunk {
                // We'll match up the chunk later
                propVal = new ChunkBasedPropertyValue(prop, flags, data);
             }
+            else if (type == Types.SHORT) {
+                propVal = new ShortPropertyValue(prop, flags, data);
+             }
+            else if (type == Types.LONG) {
+                propVal = new LongPropertyValue(prop, flags, data);
+             }
             else if (type == Types.LONG_LONG) {
                propVal = new LongLongPropertyValue(prop, flags, data);
             }
             else if (type == Types.TIME) {
                propVal = new TimePropertyValue(prop, flags, data);
             }
-            // TODO Add in the rest of the type
+            // TODO Add in the rest of the types
             else {
                propVal = new PropertyValue(prop, flags, data);
             }
index 1ea8a2628d9499a9a711923a596d3211e915702d..b76b2de295ba1bfb4039a6c306e4d3d7bb355919 100644 (file)
@@ -73,6 +73,39 @@ public class PropertyValue {
    }
    
    // TODO classes for the other important value types
+   
+   public static class ShortPropertyValue extends PropertyValue {
+       public ShortPropertyValue(MAPIProperty property, long flags, byte[] data) {
+          super(property, flags, data);
+       }
+       
+       public Short getValue() {
+          return LittleEndian.getShort(data);
+       }
+       public void setValue(short value) {
+          if (data.length != 2) {
+             data = new byte[2];
+          }
+          LittleEndian.putShort(data, 0, value);
+       }
+    }
+    
+   public static class LongPropertyValue extends PropertyValue {
+       public LongPropertyValue(MAPIProperty property, long flags, byte[] data) {
+          super(property, flags, data);
+       }
+       
+       public Integer getValue() {
+          return LittleEndian.getInt(data);
+       }
+       public void setValue(int value) {
+          if (data.length != 4) {
+             data = new byte[4];
+          }
+          LittleEndian.putInt(data, 0, value);
+       }
+    }
+    
    public static class LongLongPropertyValue extends PropertyValue {
       public LongLongPropertyValue(MAPIProperty property, long flags, byte[] data) {
          super(property, flags, data);