org.apache.poi.hssf.record
Class AbstractEscherHolderRecord

java.lang.Object
  extended by org.apache.poi.hssf.record.RecordBase
      extended by org.apache.poi.hssf.record.Record
          extended by org.apache.poi.hssf.record.AbstractEscherHolderRecord
All Implemented Interfaces:
java.lang.Cloneable
Direct Known Subclasses:
DrawingGroupRecord, DrawingRecordForBiffViewer, EscherAggregate

public abstract class AbstractEscherHolderRecord
extends Record
implements java.lang.Cloneable

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


Constructor Summary
AbstractEscherHolderRecord()
           
AbstractEscherHolderRecord(RecordInputStream in)
           
 
Method Summary
 boolean addEscherRecord(EscherRecord element)
           
 void addEscherRecord(int index, EscherRecord element)
           
 void clearEscherRecords()
           
 AbstractEscherHolderRecord clone()
           
protected  void convertRawBytesToEscherRecords()
           
 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(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

public AbstractEscherHolderRecord clone()
Overrides:
clone in class 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.