diff options
author | Rainer Klute <klute@apache.org> | 2002-07-18 15:51:39 +0000 |
---|---|---|
committer | Rainer Klute <klute@apache.org> | 2002-07-18 15:51:39 +0000 |
commit | a7f7251e112f6e0ce767b99e8350724c4577048b (patch) | |
tree | f690b50927c197028cb3145ea1f71e861f364f73 | |
parent | f38211ae8f97b3d6ec50b8cf779f41dcef2ee0c1 (diff) | |
download | poi-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.java | 157 |
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"); } |