]> source.dussan.org Git - poi.git/commitdiff
Enhancements from Drew for boolean properties. Plus doc change for DWord.
authorRainer Klute <klute@apache.org>
Fri, 3 May 2002 07:29:09 +0000 (07:29 +0000)
committerRainer Klute <klute@apache.org>
Fri, 3 May 2002 07:29:09 +0000 (07:29 +0000)
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352594 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hpsf/DocumentSummaryInformation.java
src/java/org/apache/poi/hpsf/Property.java
src/java/org/apache/poi/hpsf/PropertySet.java
src/java/org/apache/poi/hpsf/Section.java
src/java/org/apache/poi/hpsf/littleendian/DWord.java

index a950c0db8db8e7e939d0fcb58ef089fd72c57912..3cc2499f79d9a31b8fe51e834ebd0ae652c2b493 100644 (file)
@@ -65,6 +65,8 @@ import org.apache.poi.hpsf.wellknown.*;
  * @see SummaryInformation
  *
  * @author Rainer Klute (klute@rainer-klute.de)
+ * @author Drew Varner (Drew.Varner closeTo sc.edu)
+ *
  * @version $Id$
  * @since 2002-02-09
  */
@@ -191,16 +193,12 @@ public class DocumentSummaryInformation extends SpecialPropertySet
 
 
     /**
-     * <p>Returns the stream's scale (or <code>null</code>)
-     * <strong>when this method is implemented. Please note that the
-     * return type is likely to change!</strong>
+     * <p>Returns <code>true</code> when scaling of the thumbnail is
+     * desired, <code>false</code> if cropping is desired.</p>
      */
     public boolean getScale()
     {
-        if (true)
-            throw new UnsupportedOperationException("FIXME");
-       // return (byte[]) getProperty(PropertyIDMap.PID_SCALE);
-       return false;
+        return getPropertyBooleanValue(PropertyIDMap.PID_SCALE);
     }
 
 
@@ -254,15 +252,15 @@ public class DocumentSummaryInformation extends SpecialPropertySet
 
 
     /**
-     * <p>Returns the stream's links dirty information <strong>when
-     * this method is implemented.</strong>
+     * <p>Returns <code>true</code> if the custom links are hampered
+     * by excessive noise, for all applications.</p>
+     *
+     * <p><strong>FIXME:</strong> Explain this some more! I (Rainer)
+     * don't understand it.</p>
      */
     public boolean getLinksDirty()
     {
-        if (true)
-            throw new UnsupportedOperationException("FIXME");
-        // return (byte[]) getProperty(PropertyIDMap.PID_LINKSDIRTY);
-        return false;
+        return getPropertyBooleanValue(PropertyIDMap.PID_LINKSDIRTY);
     }
 
 }
index 28265580285bf1df1a32803273cbfbd5ee4f7686..9432603839324e9e517f30b461becb0fd673d855 100644 (file)
@@ -90,6 +90,7 @@ import org.apache.poi.hpsf.littleendian.*;
  *
  * @author Rainer Klute (klute@rainer-klute.de)
  * @author Drew Varner (Drew.Varner InAndAround sc.edu)
+ *
  * @version $Id$
  * @since 2002-02-09
  */
@@ -207,21 +208,45 @@ public class Property
             }
             case Variant.VT_CF:
             {
-                // the first four bytes in src, from
-                // src[offset] to src[offset + 3] contain
-                // the DWord for VT_CF, so skip it, we don't
-                // need it
+                /* The first four bytes in src, from rc[offset] to
+                 * src[offset + 3] contain the DWord for VT_CF, so
+                 * skip it, we don't need it. */
 
-                // truncate the length of the return array by
-                // a DWord length (4 bytes)
+                /* Truncate the length of the return array by a DWord
+                 * length (4 bytes). */
                 length = length - DWord.LENGTH;
 
                 final byte[] v = new byte[length];
                 for (int i = 0; i < length; i++)
-                    v[i] = src[offset + i + DWord.LENGTH];
+                    v[i] = src[o + i];
                 value = v;
                 break;
             }
+            case Variant.VT_BOOL:
+            {
+                /* The first four bytes in src, from src[offset] to
+                 * src[offset + 3] contain the DWord for VT_BOOL, so
+                 * skip it, we don't need it. */
+                final int first = o + DWord.LENGTH;
+                DWord bool = new DWord(src,o);
+                if (bool.intValue() == -1)
+                {
+                    value = new Boolean(true);
+                }
+                else if (bool.intValue() == 0)
+                {
+                    value = new Boolean(false);
+                }
+                else
+                    /* FIXME: Someone might invent a new
+                     * HPSFRuntimeException subclass
+                     * IllegalPropertySetDataException for this and
+                     * similar cases. */
+                    throw new HPSFRuntimeException
+                        ("Illegal property set data: A boolean must be " +
+                         "either -1 (true) or 0 (false).");
+                break;
+            }
             default:
             {
                 final byte[] v = new byte[length];
index b328993298e7c0d979c9f0d6ecbc9eae65316565..0ac0e378358c501b197374fae5f450f4388cd067 100644 (file)
@@ -91,6 +91,8 @@ import org.apache.poi.poifs.filesystem.*;
  * Section}).
  *
  * @author Rainer Klute (klute@rainer-klute.de)
+ * @author Drew Varner (Drew.Varner hanginIn sc.edu)
+ *
  * @version $Id$
  * @since 2002-02-09
  */
@@ -465,6 +467,25 @@ public class PropertySet
 
 
 
+    /**
+     * <p>Convenience method returning the value of a boolean property
+     * with the specified ID. If the property is not available,
+     * <code>false</code> is returned. A subsequent call to {@link
+     * #wasNull} will return <code>true</code> to let the caller
+     * distinguish that case from a real property value of
+     * <code>false</code>.</p>
+     *
+     * @throws NoSingleSectionException if the {@link PropertySet} has
+     * more or less than one {@link Section}.
+     */
+    protected boolean getPropertyBooleanValue(final int id)
+        throws NoSingleSectionException
+    {
+        return getSingleSection().getPropertyBooleanValue(id);
+    }
+
+
+
     /**
      * <p>Convenience method returning the value of the numeric
      * property with the specified ID. If the property is not
index cc0c68230ae911d7cac6b73520f0f7c1db539b61..03072bfd051573e5f23d9755876621a16ec48e8e 100644 (file)
@@ -62,6 +62,8 @@ import org.apache.poi.hpsf.wellknown.*;
  * <p>Represents a section in a {@link PropertySet}.</p>
  *
  * @author Rainer Klute (klute@rainer-klute.de)
+ * @author Drew Varner (Drew.Varner allUpIn sc.edu)
+ *
  * @version $Id$
  * @since 2002-02-09
  */
@@ -231,6 +233,24 @@ public class Section
 
 
 
+    /**
+     * <p>Returns the value of the boolean property with the specified
+     * ID. If the property is not available, <code>false</code> is
+     * returned. A subsequent call to {@link #wasNull} will return
+     * <code>true</code> to let the caller distinguish that case from
+     * a real property value of <code>false</code>.</p>
+     */
+    protected boolean getPropertyBooleanValue(final int id)
+    {
+        final Boolean b = (Boolean) getProperty(id);
+        if (b != null)
+            return b.booleanValue();
+        else
+            return false;
+    }
+
+
+
     private boolean wasNull;
 
     /**
index 2a7fb34dcea7aba5f8d0b4859d9fb14fc31a6fce..d369716c2fa0d5752f1675380648d65c9c69ac57 100644 (file)
@@ -63,7 +63,7 @@
 package org.apache.poi.hpsf.littleendian;
 
 /**
- * <p>Represents a double word (4 bytes).</p>
+ * <p>Represents an unsigned double word (4 bytes).</p>
  *
  * @author Rainer Klute (klute@rainer-klute.de)
  * @version $Id$
@@ -97,7 +97,7 @@ public class DWord extends LittleEndian
 
 
     /**
-     * <p>Return the integral value of this {@link DWord}.</p>
+     * <p>Returns the integral value of this {@link DWord}.</p>
      *
      * <p><strong>FIXME:</strong> Introduce a superclass for the
      * numeric types and make this a method of the superclass!</p>