Class Property

java.lang.Object
org.docx4j.org.apache.poi.hpsf.Property
Direct Known Subclasses:
MutableProperty

public class Property
extends java.lang.Object

A property in a Section of a PropertySet.

The property's ID gives the property a meaning in the context of its Section. Each Section spans its own name space of property IDs.

The property's type determines how its value is interpreted. For example, if the type is Variant.VT_LPSTR (byte string), the value consists of a DWord telling how many bytes the string contains. The bytes follow immediately, including any null bytes that terminate the string. The type Variant.VT_I4 denotes a four-byte integer value, Variant.VT_FILETIME some date and time (of a file).

Please note that not all Variant types yet. This might change over time but largely depends on your feedback so that the POI team knows which variant types are really needed. So please feel free to submit error reports or patches for the types you need.

Microsoft documentation: Property Set Display Name Dictionary.

Author:
Rainer Klute <klute@rainer-klute.de>, Drew Varner (Drew.Varner InAndAround sc.edu)
See Also:
Section, Variant
  • Field Summary

    Fields 
    Modifier and Type Field Description
    protected long id
    The property's ID.
    protected long type
    The property's type.
    protected java.lang.Object value
    The property's value.
  • Constructor Summary

    Constructors 
    Modifier Constructor Description
    protected Property()
    Creates an empty property.
      Property​(long id, byte[] src, long offset, int length, int codepage)
    Creates a Property instance by reading its bytes from the property set stream.
      Property​(long id, long type, java.lang.Object value)
    Creates a property.
  • Method Summary

    Modifier and Type Method Description
    boolean equals​(java.lang.Object o)
    Compares two properties.
    long getID()
    Returns the property's ID.
    protected int getSize()
    Returns the property's size in bytes.
    long getType()
    Returns the property's type.
    java.lang.Object getValue()
    Returns the property's value.
    int hashCode()  
    protected java.util.Map<?,​?> readDictionary​(byte[] src, long offset, int length, int codepage)
    Reads a dictionary.
    java.lang.String toString()  

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, wait, wait, wait
  • Field Details

    • id

      protected long id

      The property's ID.

    • type

      protected long type

      The property's type.

    • value

      protected java.lang.Object value

      The property's value.

  • Constructor Details

    • Property

      public Property​(long id, long type, java.lang.Object value)

      Creates a property.

      Parameters:
      id - the property's ID.
      type - the property's type, see Variant.
      value - the property's value. Only certain types are allowed, see Variant.
    • Property

      public Property​(long id, byte[] src, long offset, int length, int codepage) throws java.io.UnsupportedEncodingException

      Creates a Property instance by reading its bytes from the property set stream.

      Parameters:
      id - The property's ID.
      src - The bytes the property set stream consists of.
      offset - The property's type/value pair's offset in the section.
      length - The property's type/value pair's length in bytes.
      codepage - The section's and thus the property's codepage. It is needed only when reading string values.
      Throws:
      java.io.UnsupportedEncodingException - if the specified codepage is not supported.
    • Property

      protected Property()

      Creates an empty property. It must be filled using the set method to be usable.

  • Method Details

    • getID

      public long getID()

      Returns the property's ID.

      Returns:
      The ID value
    • getType

      public long getType()

      Returns the property's type.

      Returns:
      The type value
    • getValue

      public java.lang.Object getValue()

      Returns the property's value.

      Returns:
      The property's value
    • readDictionary

      protected java.util.Map<?,​?> readDictionary​(byte[] src, long offset, int length, int codepage) throws java.io.UnsupportedEncodingException

      Reads a dictionary.

      Parameters:
      src - The byte array containing the bytes making out the dictionary.
      offset - At this offset within src the dictionary starts.
      length - The dictionary contains at most this many bytes.
      codepage - The codepage of the string values.
      Returns:
      The dictonary
      Throws:
      java.io.UnsupportedEncodingException - if the dictionary's codepage is not (yet) supported.
    • getSize

      protected int getSize() throws WritingNotSupportedException

      Returns the property's size in bytes. This is always a multiple of 4.

      Returns:
      the property's size in bytes
      Throws:
      WritingNotSupportedException - if HPSF does not yet support the property's variant type.
    • equals

      public boolean equals​(java.lang.Object o)

      Compares two properties.

      Please beware that a property with ID == 0 is a special case: It does not have a type, and its value is the section's dictionary. Another special case are strings: Two properties may have the different types Variant.VT_LPSTR and Variant.VT_LPWSTR;

      Overrides:
      equals in class java.lang.Object
      See Also:
      Object.equals(java.lang.Object)
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class java.lang.Object
      See Also:
      Object.hashCode()
    • toString

      public java.lang.String toString()
      Overrides:
      toString in class java.lang.Object
      See Also:
      Object.toString()