]> source.dussan.org Git - poi.git/commitdiff
Provide one example of how PropertyValues can be encoded and decoded, rest still...
authorNick Burch <nick@apache.org>
Mon, 9 Jul 2012 16:08:30 +0000 (16:08 +0000)
committerNick Burch <nick@apache.org>
Mon, 9 Jul 2012 16:08:30 +0000 (16:08 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1359243 13f79535-47bb-0310-9956-ffa450edef68

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

index 42c3887dedc6eea15c7d89521b6070af7cbb4b14..1468c094d93f57e4f8ea9d2916d7c2e08c8eeda1 100644 (file)
@@ -17,6 +17,8 @@
 
 package org.apache.poi.hsmf.datatypes;
 
+import org.apache.poi.util.LittleEndian;
+
 /**
  * An instance of a {@link MAPIProperty} inside a {@link PropertiesChunk}.
  * Where the {@link Types} type is a fixed length one, this will contain the
@@ -27,5 +29,47 @@ package org.apache.poi.hsmf.datatypes;
 public class PropertyValue {
    private MAPIProperty property;
    private long flags;
-   private byte[] data;
+   protected byte[] data;
+   
+   public PropertyValue(MAPIProperty property, long flags, byte[] data) {
+      this.property = property;
+      this.flags = flags;
+      this.data = data;
+   }
+   
+   public MAPIProperty getProperty() {
+      return property;
+   }
+
+   /**
+    * Get the raw value flags.
+    * TODO Also provide getters for the flag meanings
+    */
+   public long getFlags() {
+      return flags;
+   }
+
+   public Object getValue() {
+      return data;
+   }
+   public void setRawValue(byte[] value) {
+      this.data = value;
+   }
+   
+   // TODO classes for the other important value types
+   public static class LongLongPropertyValue extends PropertyValue {
+      public LongLongPropertyValue(MAPIProperty property, long flags, byte[] data) {
+         super(property, flags, data);
+      }
+      
+      public Long getValue() {
+         return LittleEndian.getLong(data);
+      }
+      public void setValue(long value) {
+         if (data.length != 8) {
+            data = new byte[8];
+         }
+         LittleEndian.putLong(data, 0, value);
+      }
+   }
 }