Class CustomProperties

java.lang.Object
java.util.AbstractMap<K,V>
java.util.HashMap<Object,CustomProperty>
org.docx4j.org.apache.poi.hpsf.CustomProperties
All Implemented Interfaces:
Serializable, Cloneable, Map<Object,CustomProperty>

public class CustomProperties extends HashMap<Object,CustomProperty>

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.

Author:
Rainer Klute <klute@rainer-klute.de>
See Also:
  • 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).

    • remove

      public Object remove(String name)

      Removes a custom property.

      Parameters:
      name - The name of the custom property to remove
      Returns:
      The removed property or null if the specified property was not found.
      See Also:
    • put

      public Object put(String name, String value)

      Adds a named string property.

      Parameters:
      name - 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.
    • put

      public Object put(String name, Long value)

      Adds a named long property.

      Parameters:
      name - 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.
    • put

      public Object put(String name, Double value)

      Adds a named double property.

      Parameters:
      name - 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.
    • put

      public Object put(String name, Integer value)

      Adds a named integer property.

      Parameters:
      name - 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.
    • put

      public Object put(String name, Boolean value)

      Adds a named boolean property.

      Parameters:
      name - 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(String name)

      Gets a named value from the custom properties.

      Parameters:
      name - 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.
    • put

      public Object put(String name, Date value)

      Adds a named date property.

      Parameters:
      name - 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.
    • keySet

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

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

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

      public void setCodepage(int codepage)

      Sets the codepage.

      Parameters:
      codepage - the codepage
    • containsKey

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

      public boolean containsValue(Object value)
      Checks against both the property, and its values.
      Specified by:
      containsValue in interface Map<Object,CustomProperty>
      Overrides:
      containsValue in class HashMap<Object,CustomProperty>
    • getCodepage

      public int getCodepage()

      Gets the codepage.

      Returns:
      the codepage or -1 if the codepage is undefined.
    • 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