org.apache.poi.hsmf.datatypes

## Class PropertiesChunk

- java.lang.Object
- - org.apache.poi.hsmf.datatypes.Chunk
  - - org.apache.poi.hsmf.datatypes.PropertiesChunk

- Direct Known Subclasses:
    MessagePropertiesChunk, StoragePropertiesChunk

      public abstract class PropertiesChunk
      extends Chunk

  A Chunk which holds (single) fixed-length properties, and pointer to the variable length ones / multi-valued ones (which get their own chunk).

  There are two kinds of PropertiesChunks, which differ only in their headers.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static java.lang.String` | `NAME`
    `static int` | `PROPERTIES_FLAG_READABLE`
    `static int` | `PROPERTIES_FLAG_WRITEABLE`
    `static java.lang.String` | `VARIABLE_LENGTH_PROPERTY_PREFIX`

    - ### Fields inherited from class org.apache.poi.hsmf.datatypes.Chunk

      `DEFAULT_NAME_PREFIX`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `PropertiesChunk(ChunkGroup parentGroup)` Creates a Properties Chunk.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.lang.String` | `getEntryName()` Creates a string to use to identify this chunk in the POI file system object.
    `java.util.Map<MAPIProperty,java.util.List<PropertyValue>>` | `getProperties()` Returns all the properties in the chunk, along with their values.
    `java.util.Map<MAPIProperty,PropertyValue>` | `getRawProperties()` Returns all the properties in the chunk, without looking up any chunk-based values
    `PropertyValue` | `getRawValue(MAPIProperty property)` Returns the value / pointer to the value chunk of the property, or null if none exists
    `java.util.List<PropertyValue>` | `getValues(MAPIProperty property)` Returns all values for the given property, looking up chunk based ones as required, of null if none exist
    `protected void` | `matchVariableSizedPropertiesToChunks()` Called once the parent ChunkGroup has been populated, to match up the Chunks in it with our Variable Sized Properties.
    `protected void` | `readProperties(java.io.InputStream value)`
    `void` | `setProperty(PropertyValue value)` Defines a property.
    `protected void` | `writeNodeData(DirectoryEntry directory, java.util.List<PropertyValue> values)` Write the nodes for variable-length data.
    `void` | `writeProperties(DirectoryEntry directory)` Writes this chunk in the specified `DirectoryEntry`.
    `protected java.util.List<PropertyValue>` | `writeProperties(java.io.OutputStream out)` Writes the header of the properties.

    - ### Methods inherited from class org.apache.poi.hsmf.datatypes.Chunk

      `getChunkId, getType, readValue, writeValue`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### NAME

          public static final java.lang.String NAME

      See Also:
        Constant Field Values

    - #### VARIABLE_LENGTH_PROPERTY_PREFIX

          public static final java.lang.String VARIABLE_LENGTH_PROPERTY_PREFIX

      See Also:
        Constant Field Values

    - #### PROPERTIES_FLAG_READABLE

          public static final int PROPERTIES_FLAG_READABLE

      See Also:
        Constant Field Values

    - #### PROPERTIES_FLAG_WRITEABLE

          public static final int PROPERTIES_FLAG_WRITEABLE

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### PropertiesChunk

          protected PropertiesChunk(ChunkGroup parentGroup)

      Creates a Properties Chunk.

  - ### Method Detail

    - #### getEntryName

          public java.lang.String getEntryName()

      Description copied from class: `Chunk`
      Creates a string to use to identify this chunk in the POI file system object.
      Overrides:
        `getEntryName` in class `Chunk`

    - #### getRawProperties

          public java.util.Map<MAPIProperty,PropertyValue> getRawProperties()

      Returns all the properties in the chunk, without looking up any chunk-based values

    - #### getProperties

          public java.util.Map<MAPIProperty,java.util.List<PropertyValue>> getProperties()

      Returns all the properties in the chunk, along with their values.

      Any chunk-based values will be looked up and returned as such

    - #### setProperty

          public void setProperty(PropertyValue value)

      Defines a property. Multi-valued properties are not yet supported.

    - #### getValues

          public java.util.List<PropertyValue> getValues(MAPIProperty property)

      Returns all values for the given property, looking up chunk based ones as required, of null if none exist

    - #### getRawValue

          public PropertyValue getRawValue(MAPIProperty property)

      Returns the value / pointer to the value chunk of the property, or null if none exists

    - #### matchVariableSizedPropertiesToChunks

          protected void matchVariableSizedPropertiesToChunks()

      Called once the parent ChunkGroup has been populated, to match up the Chunks in it with our Variable Sized Properties.

    - #### readProperties

          protected void readProperties(java.io.InputStream value)
                                 throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### writeProperties

          public void writeProperties(DirectoryEntry directory)
                               throws java.io.IOException

      Writes this chunk in the specified `DirectoryEntry`.
      Parameters:
        `directory` - The directory.
      Throws:
        `java.io.IOException` - If an I/O error occurs.

    - #### writeNodeData

          protected void writeNodeData(DirectoryEntry directory,
                                       java.util.List<PropertyValue> values)
                                throws java.io.IOException

      Write the nodes for variable-length data. Those properties are returned by `writeProperties(java.io.OutputStream)`.
      Parameters:
        `directory` - The directory.
        `values` - The values.
      Throws:
        `java.io.IOException` - If an I/O error occurs.

    - #### writeProperties

          protected java.util.List<PropertyValue> writeProperties(java.io.OutputStream out)
                                                           throws java.io.IOException

      Writes the header of the properties.
      Parameters:
        `out` - The `OutputStream`.
      Returns:
        The variable-length properties that need to be written in another node.
      Throws:
        `java.io.IOException` - If an I/O error occurs.

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