Class CustomProperties

java.lang.Object
org.apache.poi.hpsf.CustomProperties
All Implemented Interfaces:
Map<String,Object>

public class CustomProperties extends Object implements Map<String,Object>
Maintains the instances of CustomProperty that belong to a DocumentSummaryInformation. The class maintains the names of the custom properties in a dictionary. It implements the Map interface and by this provides a simplified view on custom properties: A property's name is the key that maps to a typed value. This implementation hides property IDs from the developer and regards the property names as keys to typed values.

While this class provides a simple API to custom properties, it ignores the fact that not names, but IDs are the real keys to properties. Under the hood this class maintains a 1:1 relationship between IDs and names. Therefore you should not use this class to process property sets with several IDs mapping to the same name or with properties without a name: the result will contain only a subset of the original properties. If you really need to deal such property sets, use HPSF's low-level access methods.

An application can call the isPure method to check whether a property set parsed by CustomProperties is still pure (i.e. unmodified) or whether one or more properties have been dropped.

This class is not thread-safe; concurrent access to instances of this class must be synchronized.

While this class is roughly HashMap<Long,CustomProperty>, that's the internal representation. To external calls, it should appear as HashMap<String,Object> mapping between Names and Custom Property Values.

  • Constructor Details

    • CustomProperties

      public CustomProperties()
  • Method Details

    • put

      public CustomProperty put(String name, CustomProperty cp)
      Puts a CustomProperty into this map. It is assumed that the CustomProperty already has a valid ID. Otherwise use put(CustomProperty).
      Parameters:
      name - the property name
      cp - the property
      Returns:
      the previous property stored under this name
    • put

      public Object put(String key, Object value)
      Adds a named property.
      Specified by:
      put in interface Map<String,Object>
      Parameters:
      key - The property's name.
      value - The property's value.
      Returns:
      the property that was stored under the specified name before, or null if there was no such property before.
    • get

      public Object get(Object key)
      Gets a named value from the custom properties - only works for keys of type String
      Specified by:
      get in interface Map<String,Object>
      Parameters:
      key - the name of the value to get
      Returns:
      the value or null if a value with the specified name is not found in the custom properties.
    • remove

      public CustomProperty remove(Object key)
      Removes a custom property - only works for keys of type String
      Specified by:
      remove in interface Map<String,Object>
      Parameters:
      key - The name of the custom property to remove
      Returns:
      The removed property or null if the specified property was not found.
    • size

      public int size()
      Specified by:
      size in interface Map<String,Object>
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface Map<String,Object>
    • clear

      public void clear()
      Specified by:
      clear in interface Map<String,Object>
    • hashCode

      public int hashCode()
      Specified by:
      hashCode in interface Map<String,Object>
      Overrides:
      hashCode in class Object
    • equals

      public boolean equals(Object obj)
      Specified by:
      equals in interface Map<String,Object>
      Overrides:
      equals in class Object
    • putAll

      public void putAll(Map<? extends String,?> m)
      Specified by:
      putAll in interface Map<String,Object>
    • properties

      public List<CustomProperty> properties()
      Returns:
      the list of properties
    • values

      public Collection<Object> values()
      Specified by:
      values in interface Map<String,Object>
      Returns:
      the list of property values - use properties() for the wrapped values
    • entrySet

      public Set<Map.Entry<String,Object>> entrySet()
      Specified by:
      entrySet in interface Map<String,Object>
    • keySet

      public Set keySet()
      Returns a set of all the names of our custom properties. Equivalent to nameSet()
      Specified by:
      keySet in interface Map<String,Object>
      Returns:
      a set of all the names of our custom properties
    • nameSet

      public Set<String> nameSet()
      Returns a set of all the names of our custom properties
      Returns:
      a set of all the names of our custom properties
    • idSet

      public Set<Long> idSet()
      Returns a set of all the IDs of our custom properties
      Returns:
      a set of all the IDs of our custom properties
    • setCodepage

      public void setCodepage(int codepage)
      Sets the codepage.
      Parameters:
      codepage - the codepage
    • getCodepage

      public int getCodepage()
      Gets the codepage.
      Returns:
      the codepage or -1 if the codepage is undefined.
    • containsKey

      public boolean containsKey(Object key)
      Checks against both String Name and Long ID
      Specified by:
      containsKey in interface Map<String,Object>
    • containsValue

      public boolean containsValue(Object value)
      Checks against both the property, and its values.
      Specified by:
      containsValue in interface Map<String,Object>
    • isPure

      public boolean isPure()
      Tells whether this CustomProperties instance is pure or one or more properties of the underlying low-level property set has been dropped.
      Returns:
      true if the CustomProperties is pure, else false.
    • setPure

      public void setPure(boolean isPure)
      Sets the purity of the custom property set.
      Parameters:
      isPure - the purity