aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRainer Klute <klute@apache.org>2002-07-18 15:51:39 +0000
committerRainer Klute <klute@apache.org>2002-07-18 15:51:39 +0000
commita7f7251e112f6e0ce767b99e8350724c4577048b (patch)
treef690b50927c197028cb3145ea1f71e861f364f73
parentf38211ae8f97b3d6ec50b8cf779f41dcef2ee0c1 (diff)
downloadpoi-a7f7251e112f6e0ce767b99e8350724c4577048b.tar.gz
poi-a7f7251e112f6e0ce767b99e8350724c4577048b.zip
Small bug fix for boolean properties that are "true".
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352783 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/java/org/apache/poi/hpsf/Property.java157
1 files changed, 74 insertions, 83 deletions
diff --git a/src/java/org/apache/poi/hpsf/Property.java b/src/java/org/apache/poi/hpsf/Property.java
index c88a3f6d9a..073ac791df 100644
--- a/src/java/org/apache/poi/hpsf/Property.java
+++ b/src/java/org/apache/poi/hpsf/Property.java
@@ -66,46 +66,45 @@ import java.util.*;
import org.apache.poi.util.LittleEndian;
/**
- * <p>
+ * <p>A property in a {@link Section} of a {@link PropertySet}.</p>
*
- * A property in a {@link Section} of a {@link PropertySet}.</p> <p>
+ * <p>The property's <strong>ID</strong> gives the property a meaning
+ * in the context of its {@link Section}. Each {@link Section} spans
+ * its own name space of property IDs.</p>
*
- * The property's <strong>ID</strong> gives the property a meaning in the
- * context of its {@link Section}. Each {@link Section} spans its own name
- * space of property IDs.</p> <p>
+ * <p>The property's <strong>type</strong> determines how its
+ * <strong>value </strong> is interpreted. For example, if the type is
+ * {@link Variant#VT_LPSTR} (byte string), the value consists of a
+ * {@link DWord} telling how many bytes the string contains. The bytes
+ * follow immediately, including any null bytes that terminate the
+ * string. The type {@link Variant#VT_I4} denotes a four-byte integer
+ * value, {@link Variant#VT_FILETIME} some date and time (of a
+ * file).</p>
*
- * The property's <strong>type</strong> determines how its <strong>value
- * </strong> is interpreted. For example, if the type is {@link
- * Variant#VT_LPSTR} (byte string), the value consists of a {@link DWord}
- * telling how many bytes the string contains. The bytes follow immediately,
- * including any null bytes that terminate the string. The type {@link
- * Variant#VT_I4} denotes a four-byte integer value, {@link
- * Variant#VT_FILETIME} some date and time (of a file).</p> <p>
+ * <p><strong>FIXME:</strong> Reading of other types than those
+ * mentioned above and the dictionary property is not yet
+ * implemented.</p>
*
- * <strong>FIXME:</strong> Reading of other types than those mentioned above
- * and the dictionary property is not yet implemented.</p>
- *
- *@author Rainer Klute (klute@rainer-klute.de)
- *@author Drew Varner (Drew.Varner InAndAround sc.edu)
- *@created May 10, 2002
- *@see Section
- *@see Variant
- *@version $Id$
- *@since 2002-02-09
+ * @author Rainer Klute (klute@rainer-klute.de)
+ * @author Drew Varner (Drew.Varner InAndAround sc.edu)
+ * @see Section
+ * @see Variant
+ * @version $Id$
+ * @since 2002-02-09
*/
-public class Property {
+public class Property
+{
private int id;
/**
- * <p>
- *
- * Returns the property's ID.</p>
+ * <p>Returns the property's ID.</p>
*
- *@return The iD value
+ * @return The ID value
*/
- public int getID() {
+ public int getID()
+ {
return id;
}
@@ -115,13 +114,12 @@ public class Property {
/**
- * <p>
+ * <p>Returns the property's type.</p>
*
- * Returns the property's type.</p>
- *
- *@return The type value
+ * @return The type value
*/
- public long getType() {
+ public long getType()
+ {
return type;
}
@@ -131,38 +129,38 @@ public class Property {
/**
- * <p>
- *
- * Returns the property value's.</p>
+ * <p>Returns the property's value.</p>
*
- *@return The value value
+ * @return The property's value
*/
- public Object getValue() {
+ public Object getValue()
+ {
return value;
}
/**
- * <p>
+ * <p>Creates a {@link Property} instance by reading its bytes
+ * from the property set stream.</p>
*
- * Creates a {@link Property} instance by reading its bytes from the
- * property set stream.</p>
- *
- *@param id The property's ID.
- *@param src The bytes the property set stream consists of.
- *@param offset The property's type/value pair's offset in the section.
- *@param length The property's type/value pair's length in bytes. list.
+ * @param id The property's ID.
+ * @param src The bytes the property set stream consists of.
+ * @param offset The property's type/value pair's offset in the
+ * section.
+ * @param length The property's type/value pair's length in bytes.
*/
public Property(final int id, final byte[] src, final long offset,
- int length) {
+ int length)
+ {
this.id = id;
/*
* ID 0 is a special case since it specifies a dictionary of
* property IDs and property names.
*/
- if (id == 0) {
+ if (id == 0)
+ {
value = readDictionary(src, offset, length);
return;
}
@@ -237,10 +235,9 @@ public class Property {
length = length - LittleEndian.INT_SIZE;
final byte[] v = new byte[length];
- for (int i = 0; i < length; i++) {
+ for (int i = 0; i < length; i++)
v[i] = src[(int)(o + i)];
- }
- value = v;
+ value = v;
break;
}
case Variant.VT_BOOL:
@@ -252,24 +249,18 @@ public class Property {
*/
final int first = o + LittleEndian.INT_SIZE;
long bool = LittleEndian.getUInt(src, o);
- if (bool == -1) {
+ if (bool != 0)
value = new Boolean(true);
- } else if (bool == 0) {
+ else
value = new Boolean(false);
- } else {
- throw new IllegalPropertySetDataException
- ("Illegal property set data: A boolean must be " +
- "either -1 (true) or 0 (false).");
- }
- break;
+ break;
}
default:
{
final byte[] v = new byte[length];
- for (int i = 0; i < length; i++) {
+ for (int i = 0; i < length; i++)
v[i] = src[(int)(offset + i)];
- }
- value = v;
+ value = v;
break;
}
}
@@ -278,19 +269,18 @@ public class Property {
/**
- * <p>
- *
- * Reads a dictionary.</p>
+ * <p>Reads a dictionary.</p>
*
- *@param src The byte array containing the bytes making out the
- * dictionary.
- *@param offset At this offset within <var>src</var> the dictionary
- * starts.
- *@param length The dictionary contains at most this many bytes.
- *@return Description of the Return Value
+ * @param src The byte array containing the bytes making out the
+ * dictionary.
+ * @param offset At this offset within <var>src</var> the
+ * dictionary starts.
+ * @param length The dictionary contains at most this many bytes.
+ * @return The dictonary
*/
protected Map readDictionary(final byte[] src, final long offset,
- final int length) {
+ final int length)
+ {
/*
* FIXME: Check the length!
*/
@@ -303,7 +293,8 @@ public class Property {
o += LittleEndian.INT_SIZE;
final Map m = new HashMap((int)nrEntries, (float) 1.0);
- for (int i = 0; i < nrEntries; i++) {
+ for (int i = 0; i < nrEntries; i++)
+ {
/*
* The key
*/
@@ -315,13 +306,13 @@ public class Property {
*/
final long sLength = LittleEndian.getUInt(src, o);
o += LittleEndian.INT_SIZE;
+
/*
* Strip trailing 0x00 bytes.
*/
long l = sLength;
- while (src[(int)(o + l - 1)] == 0x00) {
+ while (src[(int)(o + l - 1)] == 0x00)
l--;
- }
final String s = new String(src, o, (int)l);
o += sLength;
m.put(id, s);
@@ -332,16 +323,16 @@ public class Property {
/**
- * <p>
- *
- * Reads a code page.</p>
+ * <p>Reads a code page.</p>
*
- *@param src The byte array containing the bytes making out the code
- * page.
- *@param offset At this offset within <var>src</var> the code page starts.
- *@return Description of the Return Value
+ * @param src The byte array containing the bytes making out the
+ * code page.
+ * @param offset At this offset within <var>src</var> the code
+ * page starts.
+ * @return The code page.
*/
- protected int readCodePage(final byte[] src, final long offset) {
+ protected int readCodePage(final byte[] src, final long offset)
+ {
throw new UnsupportedOperationException("FIXME");
}