Class AbstractEscherHolderRecord

All Implemented Interfaces:
org.apache.poi.common.Duplicatable, GenericRecord
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.

Child records are deserialized on-demand unless the poi.deserialize.escher System Property is defined.

  • Constructor Details

    • AbstractEscherHolderRecord

      public AbstractEscherHolderRecord()
    • AbstractEscherHolderRecord

      public AbstractEscherHolderRecord(AbstractEscherHolderRecord other)
    • AbstractEscherHolderRecord

      public AbstractEscherHolderRecord(RecordInputStream in)
  • Method Details

    • 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
    • copy

      public abstract AbstractEscherHolderRecord copy()
      Specified by:
      copy in interface org.apache.poi.common.Duplicatable
      Specified by:
      copy in class Record
    • addEscherRecord

      public void addEscherRecord(int index, EscherRecord element)
    • addEscherRecord

      public boolean addEscherRecord(EscherRecord element)
    • getEscherRecords

      public 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.
    • getGenericChildren

      public List<EscherRecord> getGenericChildren()