org.apache.poi.hssf.record

## Class AbstractEscherHolderRecord

- java.lang.Object
- - org.apache.poi.hssf.record.RecordBase
  - - org.apache.poi.hssf.record.Record
    - - org.apache.poi.hssf.record.AbstractEscherHolderRecord

- All Implemented Interfaces:
    Duplicatable
  Direct Known Subclasses:
    DrawingGroupRecord, DrawingRecordForBiffViewer, EscherAggregate

      public abstract class AbstractEscherHolderRecord
      extends Record

  The escher container record is used to hold escher records. It is abstract and must be subclassed for maximum benefit.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractEscherHolderRecord()`
    `AbstractEscherHolderRecord(AbstractEscherHolderRecord other)`
    `AbstractEscherHolderRecord(RecordInputStream in)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `addEscherRecord(EscherRecord element)`
    `void` | `addEscherRecord(int index, EscherRecord element)`
    `void` | `clearEscherRecords()`
    `AbstractEscherHolderRecord` | `clone()` Deprecated.
    `protected void` | `convertRawBytesToEscherRecords()`
    `abstract AbstractEscherHolderRecord` | `copy()`
    `void` | `decode()` Convert raw data to escher records.
    `EscherRecord` | `findFirstWithId(short id)` Descends into all our children, returning the first EscherRecord with the given id, or null if none found
    `EscherContainerRecord` | `getEscherContainer()` If we have a EscherContainerRecord as one of our children (and most top level escher holders do), then return that.
    `EscherRecord` | `getEscherRecord(int index)`
    `java.util.List<EscherRecord>` | `getEscherRecords()`
    `byte[]` | `getRawData()`
    `protected abstract java.lang.String` | `getRecordName()`
    `int` | `getRecordSize()` gives the current serialized size of the record.
    `abstract short` | `getSid()` return the non static version of the id for this record.
    `void` | `join(AbstractEscherHolderRecord record)` Big drawing group records are split but it's easier to deal with them as a whole group so we need to join them together.
    `void` | `processContinueRecord(byte[] record)`
    `int` | `serialize(int offset, byte[] data)` called by the class that is responsible for writing this sucker.
    `void` | `setRawData(byte[] rawData)`
    `java.lang.String` | `toString()` get a string representation of the record (for biffview/debugging)

    - ### Methods inherited from class org.apache.poi.hssf.record.Record

      `cloneViaReserialise, serialize`

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

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

- - ### Constructor Detail

    - #### AbstractEscherHolderRecord

          public AbstractEscherHolderRecord()

    - #### AbstractEscherHolderRecord

          public AbstractEscherHolderRecord(AbstractEscherHolderRecord other)

    - #### AbstractEscherHolderRecord

          public AbstractEscherHolderRecord(RecordInputStream in)

  - ### Method Detail

    - #### convertRawBytesToEscherRecords

          protected void convertRawBytesToEscherRecords()

    - #### toString

          public java.lang.String toString()

      Description copied from class: `Record`
      get a string representation of the record (for biffview/debugging)
      Overrides:
        `toString` in class `Record`

    - #### getRecordName

          protected abstract java.lang.String getRecordName()

    - #### serialize

          public int serialize(int offset,
                               byte[] data)

      Description copied from class: `RecordBase`
      called by the class that is responsible for writing this sucker. Subclasses should implement this so that their data is passed back in a byte array.
      Specified by:
        `serialize` in class `RecordBase`
      Parameters:
        `offset` - to begin writing at
        `data` - byte array containing instance data
      Returns:
        number of bytes written

    - #### getRecordSize

          public int getRecordSize()

      Description copied from class: `RecordBase`
      gives the current serialized size of the record. Should include the sid and reclength (4 bytes).
      Specified by:
        `getRecordSize` in class `RecordBase`
      Returns:
        the record size

    - #### getSid

          public abstract short getSid()

      Description copied from class: `Record`
      return the non static version of the id for this record.
      Specified by:
        `getSid` in class `Record`
      Returns:
        he id for this record

    - #### clone

          @Deprecated
           @Removal(version="5.0.0")
          public AbstractEscherHolderRecord clone()

      Deprecated.
      Overrides:
        `clone` in class `java.lang.Object`

    - #### copy

          public abstract AbstractEscherHolderRecord copy()

      Specified by:
        `copy` in interface `Duplicatable`
      Specified by:
        `copy` in class `Record`
      Returns:
        a deep copy of the implementing class / instance

    - #### addEscherRecord

          public void addEscherRecord(int index,
                                      EscherRecord element)

    - #### addEscherRecord

          public boolean addEscherRecord(EscherRecord element)

    - #### getEscherRecords

          public java.util.List<EscherRecord> getEscherRecords()

    - #### clearEscherRecords

          public void clearEscherRecords()

    - #### getEscherContainer

          public EscherContainerRecord getEscherContainer()

      If we have a EscherContainerRecord as one of our children (and most top level escher holders do), then return that.
      Returns:
        the EscherContainerRecord or `null` if no child is a container record

    - #### findFirstWithId

          public EscherRecord findFirstWithId(short id)

      Descends into all our children, returning the first EscherRecord with the given id, or null if none found
      Parameters:
        `id` - the record to look for
      Returns:
        the record or `null` if it can't be found

    - #### getEscherRecord

          public EscherRecord getEscherRecord(int index)

    - #### join

          public void join(AbstractEscherHolderRecord record)

      Big drawing group records are split but it's easier to deal with them as a whole group so we need to join them together.
      Parameters:
        `record` - the record data to concatenate to the end

    - #### processContinueRecord

          public void processContinueRecord(byte[] record)

    - #### getRawData

          public byte[] getRawData()

    - #### setRawData

          public void setRawData(byte[] rawData)

    - #### decode

          public void decode()

      Convert raw data to escher records.

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