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 Detail

      • AbstractEscherHolderRecord

        public AbstractEscherHolderRecord()
      • AbstractEscherHolderRecord

        public AbstractEscherHolderRecord​(RecordInputStream in)
    • Method Detail

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

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