Package org.apache.poi.ddf
Class EscherArrayProperty
java.lang.Object
org.apache.poi.ddf.EscherProperty
org.apache.poi.ddf.EscherComplexProperty
org.apache.poi.ddf.EscherArrayProperty
- All Implemented Interfaces:
Iterable<byte[]>,GenericRecord
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
ConstructorsConstructorDescriptionEscherArrayProperty(short propertyNumber, boolean isBlipId, byte[] complexData) Deprecated.EscherArrayProperty(short id, int complexSize) Create an instance of an escher array property.EscherArrayProperty(EscherPropertyTypes type, boolean isBlipId, int complexSize) Create an instance of an escher array property. -
Method Summary
Modifier and TypeMethodDescriptionbyte[]getElement(int index) static intintintshortIterator<byte[]> iterator()intserializeSimplePart(byte[] data, int pos) Serializes the simple part of this property.intsetArrayData(byte[] data, int offset) We have this method because the way in which arrays in escher works is screwed for seemly arbitrary reasons.voidsetElement(int index, byte[] element) static voidsetMaxRecordLength(int length) voidsetNumberOfElementsInArray(int numberOfElements) voidsetNumberOfElementsInMemory(int numberOfElements) voidsetSizeOfElements(int sizeOfElements) Spliterator<byte[]> Methods inherited from class org.apache.poi.ddf.EscherComplexProperty
equals, getComplexData, getPropertySize, hashCode, serializeComplexPart, setComplexData, setComplexDataMethods inherited from class org.apache.poi.ddf.EscherProperty
getGenericChildren, getGenericRecordType, getId, getName, getPropertyNumber, isBlipId, isComplex, toString, toXml
-
Constructor Details
-
EscherArrayProperty
Create an instance of an escher array property. This constructor can be used to create emptyComplexParts with a complexSize = 0. Preferably useEscherArrayProperty(EscherPropertyTypes, boolean, int)withEscherComplexProperty.setComplexData(byte[]).- Parameters:
id- The id consists of the property number, a flag indicating whether this is a blip id and a flag indicating that this is a complex property.complexSize- the data size
-
EscherArrayProperty
@Deprecated @Removal(version="5.0.0") public EscherArrayProperty(short propertyNumber, boolean isBlipId, byte[] complexData) Deprecated.Create an instance of an escher array property. This constructor defaults to a 6 bytes header if the complexData is null or byte[0].- Parameters:
propertyNumber- the property number part of the property idisBlipId-true, if it references a blipcomplexData- the data
-
EscherArrayProperty
Create an instance of an escher array property. This constructor defaults to a 6 bytes header if the complexSize is 0.- Parameters:
type- the property type of the property idisBlipId-true, if it references a blipcomplexSize- the data size
-
-
Method Details
-
setMaxRecordLength
public static void setMaxRecordLength(int length) - Parameters:
length- the max record length allowed for EscherArrayProperty
-
getMaxRecordLength
public static int getMaxRecordLength()- Returns:
- the max record length allowed for EscherArrayProperty
-
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) -
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 informationoffset- 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:
serializeSimplePartin classEscherComplexProperty- Parameters:
data- the buffer to write topos- the starting position- Returns:
- the length of the part
-
iterator
-
spliterator
- Specified by:
spliteratorin interfaceIterable<byte[]>- Since:
- POI 5.2.0
-
getGenericProperties
- Specified by:
getGenericPropertiesin interfaceGenericRecord- Overrides:
getGenericPropertiesin classEscherComplexProperty
-
EscherArrayProperty(EscherPropertyTypes, boolean, int)andEscherComplexProperty.setComplexData(byte[])