Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.poi.ddf
Class EscherRecord

    java.lang.Object
      org.apache.poi.ddf.EscherRecord

All Implemented Interfaces:
  java.lang.Cloneable

Direct Known Subclasses:
  AbstractEscherOptRecord, EscherBlipRecord, EscherBSERecord, EscherChildAnchorRecord, EscherClientAnchorRecord, EscherClientDataRecord, EscherContainerRecord, EscherDggRecord, EscherDgRecord, EscherPlaceholder, EscherSpgrRecord, EscherSplitMenuColorsRecord, EscherSpRecord, EscherTextboxRecord, UnknownEscherRecord

    public abstract class EscherRecord

extends java.lang.Object
implements java.lang.Cloneable

The base abstract record from which all escher records are defined. Subclasses will need to define methods for serialization/deserialization and for determining the record size.

Constructor Summary
`EscherRecord()` Create a new instance

Method Summary
`EscherRecord` | `clone()` Escher records may need to be clonable in the future.
`void` | `display(java.io.PrintWriter w, int indent)` The display methods allows escher variables to print the record names according to their hierarchy.
`protected int` | `fillFields(byte[] data, EscherRecordFactory f)` Delegates to fillFields(byte[], int, EscherRecordFactory)
`abstract int` | `fillFields(byte[] data, int offset, EscherRecordFactory recordFactory)` The contract of this method is to deserialize an escher record including it's children.
`protected abstract java.lang.Object[][]` | `getAttributeMap()` For the purpose of providing toString() and toXml() a subclass can either override those methods or provide a Object[][] array in the form { { "Attribute Name (Header)", value, "optional attribute", value }, ...
`EscherRecord` | `getChild(int index)` Returns the indexed child record.
`java.util.List<EscherRecord>` | `getChildRecords()`
`short` | `getInstance()` Returns the instance part of the option record.
`short` | `getOptions()` Note that `options` is an internal field.
`short` | `getRecordId()` Return the current record id.
`abstract java.lang.String` | `getRecordName()` Subclasses should return the short name for this escher record.
`abstract int` | `getRecordSize()` Subclasses should effeciently return the number of bytes required to serialize the record.
`short` | `getVersion()` Returns the version part of the option record.
`boolean` | `isContainerRecord()` Determine whether this is a container record by inspecting the option field.
`protected int` | `readHeader(byte[] data, int offset)` Reads the 8 byte header information and populates the `options` and `recordId` records.
`protected static short` | `readInstance(byte[] data, int offset)` Read the options field from header and return instance part of it.
`byte[]` | `serialize()` Serializes to a new byte array.
`int` | `serialize(int offset, byte[] data)` Serializes to an existing byte array without serialization listener.
`abstract int` | `serialize(int offset, byte[] data, EscherSerializationListener listener)` Serializes the record to an existing byte array.
`void` | `setChildRecords(java.util.List<EscherRecord> childRecords)` Sets the child records for this record.
`void` | `setInstance(short value)` Sets the instance part of record
`void` | `setOptions(short options)` Set the options this this record.
`void` | `setRecordId(short recordId)` Sets the record id for this record.
`void` | `setVersion(short value)` Sets the version part of record
`java.lang.String` | `toString()`
`java.lang.String` | `toXml()`
`java.lang.String` | `toXml(java.lang.String tab)`

Methods inherited from class java.lang.Object
`equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

Constructor Detail

### EscherRecord

    public EscherRecord()

  Create a new instance

Method Detail

### fillFields

    protected int fillFields(byte[] data,
                             EscherRecordFactory f)

  Delegates to fillFields(byte[], int, EscherRecordFactory)

  Parameters:
    `data` - they bytes to serialize from
    `f` - the escher record factory
  Returns:
    The number of bytes written.
  See Also:
    `fillFields(byte[], int, org.apache.poi.ddf.EscherRecordFactory)`

### fillFields

    public abstract int fillFields(byte[] data,
                                   int offset,
                                   EscherRecordFactory recordFactory)

  The contract of this method is to deserialize an escher record including it's children.

  Parameters:
    `data` - The byte array containing the serialized escher records.
    `offset` - The offset into the byte array.
    `recordFactory` - A factory for creating new escher records.
  Returns:
    The number of bytes written.

### readHeader

    protected int readHeader(byte[] data,
                             int offset)

  Reads the 8 byte header information and populates the `options` and `recordId` records.

  Parameters:
    `data` - the byte array to read from
    `offset` - the offset to start reading from
  Returns:
    the number of bytes remaining in this record. This may include the children if this is a container.

### readInstance

    protected static short readInstance(byte[] data,
                                        int offset)

  Read the options field from header and return instance part of it.

  Parameters:
    `data` - the byte array to read from
    `offset` - the offset to start reading from
  Returns:
    value of instance part of options field

### isContainerRecord

    public boolean isContainerRecord()

  Determine whether this is a container record by inspecting the option field.

  Returns:
    true is this is a container field.

### getOptions

    @Internal
    public short getOptions()

  Note that `options` is an internal field. Use `setInstance(short)` ()} and `setVersion(short)` ()} to set the actual fields.

  Returns:
    The options field for this record. All records have one.

### setOptions

    @Internal
    public void setOptions(short options)

  Set the options this this record. Container records should have the last nibble set to 0xF.

  Note that `options` is an internal field. Use `getInstance()` and `getVersion()` to access actual fields.

  Parameters:
    `options` - the record options

### serialize

    public byte[] serialize()

  Serializes to a new byte array. This is done by delegating to serialize(int, byte[]);

  Returns:
    the serialized record.
  See Also:
    `serialize(int, byte[])`

### serialize

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

  Serializes to an existing byte array without serialization listener. This is done by delegating to serialize(int, byte[], EscherSerializationListener).

  Parameters:
    `offset` - the offset within the data byte array.
    `data` - the data array to serialize to.
  Returns:
    The number of bytes written.
  See Also:
    `serialize(int, byte[], org.apache.poi.ddf.EscherSerializationListener)`

### serialize

    public abstract int serialize(int offset,
                                  byte[] data,
                                  EscherSerializationListener listener)

  Serializes the record to an existing byte array.

  Parameters:
    `offset` - the offset within the byte array
    `data` - the data array to serialize to
    `listener` - a listener for begin and end serialization events. This is useful because the serialization is hierarchical/recursive and sometimes you need to be able break into that.
  Returns:
    the number of bytes written.

### getRecordSize

    public abstract int getRecordSize()

  Subclasses should effeciently return the number of bytes required to serialize the record.

  Returns:
    number of bytes

### getRecordId

    public short getRecordId()

  Return the current record id.

  Returns:
    The 16 bit record id.

### setRecordId

    public void setRecordId(short recordId)

  Sets the record id for this record.

  Parameters:
    `recordId` - the record id

### getChildRecords

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

  Returns:
    Returns the children of this record. By default this will be an empty list. EscherCotainerRecord is the only record that may contain children.
  See Also:
    `EscherContainerRecord`

### setChildRecords

    public void setChildRecords(java.util.List<EscherRecord> childRecords)

  Sets the child records for this record. By default this will throw an exception as only EscherContainerRecords may have children.

  Parameters:
    `childRecords` - Not used in base implementation.

### clone

    public EscherRecord clone()
                       throws java.lang.CloneNotSupportedException

  Escher records may need to be clonable in the future.

  Overrides:
    `clone` in class `java.lang.Object`
  Returns:
    the cloned object
  Throws:
    `java.lang.CloneNotSupportedException` - if the subclass hasn't implemented `Cloneable`

### getChild

    public EscherRecord getChild(int index)

  Returns the indexed child record.

  Parameters:
    `index` - the index of the child within the child records
  Returns:
    the indexed child record

### display

    public void display(java.io.PrintWriter w,
                        int indent)

  The display methods allows escher variables to print the record names according to their hierarchy.

  Parameters:
    `w` - The print writer to output to.
    `indent` - The current indent level.

### getRecordName

    public abstract java.lang.String getRecordName()

  Subclasses should return the short name for this escher record.

  Returns:
    the short name for this escher record

### getInstance

    public short getInstance()

  Returns the instance part of the option record.

  Returns:
    The instance part of the record

### setInstance

    public void setInstance(short value)

  Sets the instance part of record

  Parameters:
    `value` - instance part value

### getVersion

    public short getVersion()

  Returns the version part of the option record.

  Returns:
    The version part of the option record

### setVersion

    public void setVersion(short value)

  Sets the version part of record

  Parameters:
    `value` - version part value

### toXml

    public java.lang.String toXml()

### toXml

    public final java.lang.String toXml(java.lang.String tab)

  Parameters:
    `tab` - - each children must be indented right relative to its parent
  Returns:
    xml representation of this record

### toString

    public final java.lang.String toString()

  Overrides:
    `toString` in class `java.lang.Object`

### getAttributeMap

    @Internal
    protected abstract java.lang.Object[][] getAttributeMap()

  For the purpose of providing toString() and toXml() a subclass can either override those methods or provide a Object[][] array in the form `{ { "Attribute Name (Header)", value, "optional attribute", value }, ... }` .

  Null values won't be printed.

  The attributes record, version, instance, options must not be returned.

  Returns:
    the attribute map
  Since:
    POI 3.17-beta2

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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