org.apache.poi.poifs.property

## Class Property

- java.lang.Object
- - org.apache.poi.poifs.property.Property

- All Implemented Interfaces:
    POIFSViewable, Child
  Direct Known Subclasses:
    DirectoryProperty, DocumentProperty

      public abstract class Property
      extends java.lang.Object
      implements Child, POIFSViewable

  This abstract base class is the ancestor of all classes implementing POIFS Property behavior.
  Author:
    Marc Johnson (mjohnson at apache dot org)

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected static int` | `_NO_INDEX`
    `protected static byte` | `_NODE_BLACK`
    `protected static byte` | `_NODE_RED`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `protected` | `Property()`
    `protected` | `Property(int index, byte[] array, int offset)` Constructor from byte data

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `getChildIndex()` Get the child property (its index in the Property Table)
    `protected int` | `getIndex()` get the index for this Property
    `java.lang.String` | `getName()` Get the name of this property
    `Child` | `getNextChild()` Get the next Child, if any
    `Child` | `getPreviousChild()` Get the previous Child, if any
    `java.lang.String` | `getShortDescription()` Provides a short description of the object, to be used when a POIFSViewable object has not provided its contents.
    `int` | `getSize()` find out the document size
    `int` | `getStartBlock()`
    `ClassID` | `getStorageClsid()` Sets the storage clsid, which is the Class ID of a COM object which reads and writes this stream
    `java.lang.Object[]` | `getViewableArray()` Get an array of objects, some of which may implement POIFSViewable
    `java.util.Iterator<java.lang.Object>` | `getViewableIterator()` Get an Iterator of objects, some of which may implement POIFSViewable
    `abstract boolean` | `isDirectory()`
    `static boolean` | `isSmall(int length)` does the length indicate a small document?
    `boolean` | `preferArray()` Give viewers a hint as to whether to call getViewableArray or getViewableIterator
    `protected abstract void` | `preWrite()` Perform whatever activities need to be performed prior to writing
    `protected void` | `setChildProperty(int child)` Set the child property.
    `protected void` | `setIndex(int index)` Set the index for this Property
    `protected void` | `setName(java.lang.String name)` Set the name; silently truncates the name if it's too long.
    `void` | `setNextChild(Child child)` Set the next Child
    `protected void` | `setNodeColor(byte nodeColor)` Set the node color.
    `void` | `setPreviousChild(Child child)` Set the previous Child
    `protected void` | `setPropertyType(byte propertyType)` Set the property type.
    `protected void` | `setSize(int size)` Set the size of the document associated with this Property
    `void` | `setStartBlock(int startBlock)` Set the start block for the document referred to by this Property.
    `void` | `setStorageClsid(ClassID clsidStorage)` Sets the storage class ID for this property stream.
    `boolean` | `shouldUseSmallBlocks()` Based on the currently defined size, should this property use small blocks?
    `void` | `writeData(java.io.OutputStream stream)` Write the raw data to an OutputStream.

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

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

- - ### Field Detail

    - #### _NO_INDEX

          protected static final int _NO_INDEX

      See Also:
        Constant Field Values

    - #### _NODE_BLACK

          protected static final byte _NODE_BLACK

      See Also:
        Constant Field Values

    - #### _NODE_RED

          protected static final byte _NODE_RED

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Property

          protected Property()

    - #### Property

          protected Property(int index,
                             byte[] array,
                             int offset)

      Constructor from byte data
      Parameters:
        `index` - index number
        `array` - byte data
        `offset` - offset into byte data

  - ### Method Detail

    - #### writeData

          public void writeData(java.io.OutputStream stream)
                         throws java.io.IOException

      Write the raw data to an OutputStream.
      Parameters:
        `stream` - the OutputStream to which the data should be written.
      Throws:
        `java.io.IOException` - on problems writing to the specified stream.

    - #### setStartBlock

          public void setStartBlock(int startBlock)

      Set the start block for the document referred to by this Property.
      Parameters:
        `startBlock` - the start block index

    - #### getStartBlock

          public int getStartBlock()

      Returns:
        the start block

    - #### getSize

          public int getSize()

      find out the document size
      Returns:
        size in bytes

    - #### shouldUseSmallBlocks

          public boolean shouldUseSmallBlocks()

      Based on the currently defined size, should this property use small blocks?
      Returns:
        true if the size is less than _big_block_minimum_bytes

    - #### isSmall

          public static boolean isSmall(int length)

      does the length indicate a small document?
      Parameters:
        `length` - length in bytes
      Returns:
        true if the length is less than _big_block_minimum_bytes

    - #### getName

          public java.lang.String getName()

      Get the name of this property
      Returns:
        property name as String

    - #### isDirectory

          public abstract boolean isDirectory()

      Returns:
        true if a directory type Property

    - #### getStorageClsid

          public ClassID getStorageClsid()

      Sets the storage clsid, which is the Class ID of a COM object which reads and writes this stream
      Returns:
        storage Class ID for this property stream

    - #### setName

          protected void setName(java.lang.String name)

      Set the name; silently truncates the name if it's too long.
      Parameters:
        `name` - the new name

    - #### setStorageClsid

          public void setStorageClsid(ClassID clsidStorage)

      Sets the storage class ID for this property stream. This is the Class ID of the COM object which can read and write this property stream
      Parameters:
        `clsidStorage` - Storage Class ID

    - #### setPropertyType

          protected void setPropertyType(byte propertyType)

      Set the property type. Makes no attempt to validate the value.
      Parameters:
        `propertyType` - the property type (root, file, directory)

    - #### setNodeColor

          protected void setNodeColor(byte nodeColor)

      Set the node color.
      Parameters:
        `nodeColor` - the node color (red or black)

    - #### setChildProperty

          protected void setChildProperty(int child)

      Set the child property.
      Parameters:
        `child` - the child property's index in the Property Table

    - #### getChildIndex

          protected int getChildIndex()

      Get the child property (its index in the Property Table)
      Returns:
        child property index

    - #### setSize

          protected void setSize(int size)

      Set the size of the document associated with this Property
      Parameters:
        `size` - the size of the document, in bytes

    - #### setIndex

          protected void setIndex(int index)

      Set the index for this Property
      Parameters:
        `index` - this Property's index within its containing Property Table

    - #### getIndex

          protected int getIndex()

      get the index for this Property
      Returns:
        the index of this Property within its Property Table

    - #### preWrite

          protected abstract void preWrite()

      Perform whatever activities need to be performed prior to writing

    - #### getNextChild

          public Child getNextChild()

      Get the next Child, if any
      Specified by:
        `getNextChild` in interface `Child`
      Returns:
        the next Child; may return null

    - #### getPreviousChild

          public Child getPreviousChild()

      Get the previous Child, if any
      Specified by:
        `getPreviousChild` in interface `Child`
      Returns:
        the previous Child; may return null

    - #### setNextChild

          public void setNextChild(Child child)

      Set the next Child
      Specified by:
        `setNextChild` in interface `Child`
      Parameters:
        `child` - the new 'next' child; may be null, which has the effect of saying there is no 'next' child

    - #### setPreviousChild

          public void setPreviousChild(Child child)

      Set the previous Child
      Specified by:
        `setPreviousChild` in interface `Child`
      Parameters:
        `child` - the new 'previous' child; may be null, which has the effect of saying there is no 'previous' child

    - #### getViewableArray

          public java.lang.Object[] getViewableArray()

      Get an array of objects, some of which may implement POIFSViewable
      Specified by:
        `getViewableArray` in interface `POIFSViewable`
      Returns:
        an array of Object; may not be null, but may be empty

    - #### getViewableIterator

          public java.util.Iterator<java.lang.Object> getViewableIterator()

      Get an Iterator of objects, some of which may implement POIFSViewable
      Specified by:
        `getViewableIterator` in interface `POIFSViewable`
      Returns:
        an Iterator; may not be null, but may have an empty back end store

    - #### preferArray

          public boolean preferArray()

      Give viewers a hint as to whether to call getViewableArray or getViewableIterator
      Specified by:
        `preferArray` in interface `POIFSViewable`
      Returns:
        true if a viewer should call getViewableArray, false if a viewer should call getViewableIterator

    - #### getShortDescription

          public java.lang.String getShortDescription()

      Provides a short description of the object, to be used when a POIFSViewable object has not provided its contents.
      Specified by:
        `getShortDescription` in interface `POIFSViewable`
      Returns:
        short description

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