org.apache.poi.ddf
Class EscherArrayProperty

java.lang.Object
  extended by org.apache.poi.ddf.EscherProperty
      extended by org.apache.poi.ddf.EscherComplexProperty
          extended by org.apache.poi.ddf.EscherArrayProperty
All Implemented Interfaces:
java.lang.Iterable<byte[]>

public final class EscherArrayProperty
extends EscherComplexProperty
implements java.lang.Iterable<byte[]>

Escher array properties are the most weird construction ever invented with all sorts of special cases. I'm hopeful I've got them all.


Constructor Summary
EscherArrayProperty(short propertyNumber, boolean isBlipId, byte[] complexData)
           
EscherArrayProperty(short id, byte[] complexData)
           
 
Method Summary
 byte[] getElement(int index)
           
 int getNumberOfElementsInArray()
           
 int getNumberOfElementsInMemory()
           
 short getSizeOfElements()
           
 java.util.Iterator<byte[]> iterator()
           
 int serializeSimplePart(byte[] data, int pos)
          Serializes the simple part of this property.
 int setArrayData(byte[] data, int offset)
          We have this method because the way in which arrays in escher works is screwed for seemly arbitrary reasons.
 void setElement(int index, byte[] element)
           
 void setNumberOfElementsInArray(int numberOfElements)
           
 void setNumberOfElementsInMemory(int numberOfElements)
           
 void setSizeOfElements(int sizeOfElements)
           
 java.lang.String toString()
          Retrieves the string representation for this property.
 java.lang.String toXml(java.lang.String tab)
           
 
Methods inherited from class org.apache.poi.ddf.EscherComplexProperty
equals, getComplexData, getPropertySize, hashCode, serializeComplexPart, setComplexData
 
Methods inherited from class org.apache.poi.ddf.EscherProperty
getId, getName, getPropertyNumber, isBlipId, isComplex
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

EscherArrayProperty

public EscherArrayProperty(short id,
                           byte[] complexData)

EscherArrayProperty

public EscherArrayProperty(short propertyNumber,
                           boolean isBlipId,
                           byte[] complexData)
Method Detail

getNumberOfElementsInArray

public int getNumberOfElementsInArray()

setNumberOfElementsInArray

public void setNumberOfElementsInArray(int numberOfElements)

getNumberOfElementsInMemory

public int getNumberOfElementsInMemory()

setNumberOfElementsInMemory

public void setNumberOfElementsInMemory(int numberOfElements)

getSizeOfElements

public short getSizeOfElements()

setSizeOfElements

public void setSizeOfElements(int sizeOfElements)

getElement

public byte[] getElement(int index)

setElement

public void setElement(int index,
                       byte[] element)

toString

public java.lang.String toString()
Description copied from class: EscherComplexProperty
Retrieves the string representation for this property.

Overrides:
toString in class EscherComplexProperty

toXml

public java.lang.String toXml(java.lang.String tab)
Overrides:
toXml in class EscherComplexProperty

setArrayData

public int setArrayData(byte[] data,
                        int offset)
We have this method because the way in which arrays in escher works is screwed for seemly arbitrary reasons. While most properties are fairly consistent and have a predictable array size, escher arrays have special cases.

Parameters:
data - The data array containing the escher array information
offset - The offset into the array to start reading from.
Returns:
the number of bytes used by this complex property.

serializeSimplePart

public int serializeSimplePart(byte[] data,
                               int pos)
Serializes the simple part of this property. ie the first 6 bytes. Needs special code to handle the case when the size doesn't include the size of the header block

Overrides:
serializeSimplePart in class EscherComplexProperty
Parameters:
data - the buffer to write to
pos - the starting position
Returns:
the length of the part

iterator

public java.util.Iterator<byte[]> iterator()
Specified by:
iterator in interface java.lang.Iterable<byte[]>