## org.apache.poi.hpsf
Class CustomProperties

    java.lang.Object
      java.util.AbstractMap<K,V>
          java.util.HashMap<java.lang.Object,CustomProperty>
              org.apache.poi.hpsf.CustomProperties

All Implemented Interfaces:
  java.io.Serializable, java.lang.Cloneable, java.util.Map<java.lang.Object,CustomProperty>

    public class CustomProperties

extends java.util.HashMap<java.lang.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:
  Serialized Form

Nested Class Summary

Nested classes/interfaces inherited from class java.util.AbstractMap
`java.util.AbstractMap.SimpleEntry<K,V>, java.util.AbstractMap.SimpleImmutableEntry<K,V>`

Constructor Summary
`CustomProperties()`

Method Summary
`boolean` `containsKey(java.lang.Object key)` Checks against both String Name and Long ID
`boolean` `containsValue(java.lang.Object value)` Checks against both the property, and its values.
`java.lang.Object` `get(java.lang.String name)` Gets a named value from the custom properties.
`int` `getCodepage()` Gets the codepage.
`java.util.Set<java.lang.String>` `idSet()` Returns a set of all the IDs of our custom properties
`boolean` `isPure()` Tells whether this `CustomProperties` instance is pure or one or more properties of the underlying low-level property set has been dropped.
`java.util.Set` `keySet()` Returns a set of all the names of our custom properties.
`java.util.Set<java.lang.String>` `nameSet()` Returns a set of all the names of our custom properties
`java.lang.Object` `put(java.lang.String name, java.lang.Boolean value)` Adds a named boolean property.
`CustomProperty` `put(java.lang.String name, CustomProperty cp)` Puts a `CustomProperty` into this map.
`java.lang.Object` `put(java.lang.String name, java.util.Date value)` Adds a named date property.
`java.lang.Object` `put(java.lang.String name, java.lang.Double value)` Adds a named double property.
`java.lang.Object` `put(java.lang.String name, java.lang.Integer value)` Adds a named integer property.
`java.lang.Object` `put(java.lang.String name, java.lang.Long value)` Adds a named long property.
`java.lang.Object` `put(java.lang.String name, java.lang.String value)` Adds a named string property.
`java.lang.Object` `remove(java.lang.String name)` Removes a custom property.
`void` `setCodepage(int codepage)` Sets the codepage.
`void` `setPure(boolean isPure)` Sets the purity of the custom property set.

Methods inherited from class java.util.HashMap
`clear, clone, entrySet, get, isEmpty, put, putAll, remove, size, values`

Methods inherited from class java.util.AbstractMap
`equals, hashCode, toString`

Methods inherited from class java.lang.Object
`finalize, getClass, notify, notifyAll, wait, wait, wait`

Methods inherited from interface java.util.Map
`equals, hashCode`

Constructor Detail

### CustomProperties

    public CustomProperties()

Method Detail

### put

    public CustomProperty put(java.lang.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 java.lang.Object remove(java.lang.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:
    `HashSet.remove(java.lang.Object)`

### put

    public java.lang.Object put(java.lang.String name,
                                java.lang.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 java.lang.Object put(java.lang.String name,
                                java.lang.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 java.lang.Object put(java.lang.String name,
                                java.lang.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 java.lang.Object put(java.lang.String name,
                                java.lang.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 java.lang.Object put(java.lang.String name,
                                java.lang.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 java.lang.Object get(java.lang.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 java.lang.Object put(java.lang.String name,
                                java.util.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 java.util.Set keySet()

  Returns a set of all the names of our custom properties. Equivalent to `nameSet()`

  Specified by:
    `keySet` in interface `java.util.Map<java.lang.Object,CustomProperty>`
  Overrides:
    `keySet` in class `java.util.HashMap<java.lang.Object,CustomProperty>`

### nameSet

    public java.util.Set<java.lang.String> nameSet()

  Returns a set of all the names of our custom properties

### idSet

    public java.util.Set<java.lang.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(java.lang.Object key)

  Checks against both String Name and Long ID

  Specified by:
    `containsKey` in interface `java.util.Map<java.lang.Object,CustomProperty>`
  Overrides:
    `containsKey` in class `java.util.HashMap<java.lang.Object,CustomProperty>`

### containsValue

    public boolean containsValue(java.lang.Object value)

  Checks against both the property, and its values.

  Specified by:
    `containsValue` in interface `java.util.Map<java.lang.Object,CustomProperty>`
  Overrides:
    `containsValue` in class `java.util.HashMap<java.lang.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

Copyright 2012 The Apache Software Foundation or its licensors, as applicable.