Package org.apache.poi.ddf
Class UnknownEscherRecord
- java.lang.Object
-
- org.apache.poi.ddf.EscherRecord
-
- org.apache.poi.ddf.UnknownEscherRecord
-
- All Implemented Interfaces:
Duplicatable,GenericRecord
public final class UnknownEscherRecord extends EscherRecord
This record is used whenever an escher record is encountered that we do not explicitly support.
-
-
Field Summary
-
Fields inherited from class org.apache.poi.ddf.EscherRecord
MAX_NUMBER_OF_CHILDREN
-
-
Constructor Summary
Constructors Constructor Description UnknownEscherRecord()UnknownEscherRecord(UnknownEscherRecord other)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddChildRecord(EscherRecord childRecord)UnknownEscherRecordcopy()intfillFields(byte[] data, int offset, EscherRecordFactory recordFactory)The contract of this method is to deserialize an escher record including its children.protected intfillFields(byte[] data, int offset, EscherRecordFactory recordFactory, int nesting)Internal method to prevent too deep nesting/using too much memory.java.util.List<EscherRecord>getChildRecords()byte[]getData()java.util.Map<java.lang.String,java.util.function.Supplier<?>>getGenericProperties()java.lang.EnumgetGenericRecordType()static intgetMaxRecordLength()java.lang.StringgetRecordName()Subclasses should return the short name for this escher record.intgetRecordSize()Subclasses should effeciently return the number of bytes required to serialize the record.intserialize(int offset, byte[] data, EscherSerializationListener listener)Serializes the record to an existing byte array.voidsetChildRecords(java.util.List<EscherRecord> childRecords)Sets the child records for this record.static voidsetMaxRecordLength(int length)-
Methods inherited from class org.apache.poi.ddf.EscherRecord
display, fillFields, getChild, getGenericChildren, getInstance, getMaxNumberOfChildren, getOptions, getRecordId, getVersion, isContainerRecord, readHeader, readInstance, serialize, serialize, setInstance, setMaxNumberOfChildren, setOptions, setRecordId, setVersion, toString, toXml, toXml
-
-
-
-
Constructor Detail
-
UnknownEscherRecord
public UnknownEscherRecord()
-
UnknownEscherRecord
public UnknownEscherRecord(UnknownEscherRecord other)
-
-
Method Detail
-
setMaxRecordLength
public static void setMaxRecordLength(int length)
- Parameters:
length- the max record length allowed for UnknownEscherRecord
-
getMaxRecordLength
public static int getMaxRecordLength()
- Returns:
- the max record length allowed for UnknownEscherRecord
-
fillFields
public int fillFields(byte[] data, int offset, EscherRecordFactory recordFactory)Description copied from class:EscherRecordThe contract of this method is to deserialize an escher record including its children.- Specified by:
fillFieldsin classEscherRecord- 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.
-
fillFields
protected int fillFields(byte[] data, int offset, EscherRecordFactory recordFactory, int nesting)Description copied from class:EscherRecordInternal method to prevent too deep nesting/using too much memory. This is done by counting the level of "nesting" via the parameter. The default method just forwards to fillFields() so it does not properly handle nesting. Subclasses which do recursive calls need to pass around the nesting-level properly. Usually both fillFields() methods should be overwritten by subclasses, the one without the "nesting"-parameter should routes to this one in classes which overwrite this method and this method should be overwritten with the actual functionality to fill fields.- Overrides:
fillFieldsin classEscherRecord- 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.nesting- The current nesting factor, usually increased by one on each recursive call- Returns:
- The number of bytes written.
-
serialize
public int serialize(int offset, byte[] data, EscherSerializationListener listener)Description copied from class:EscherRecordSerializes the record to an existing byte array.- Specified by:
serializein classEscherRecord- Parameters:
offset- the offset within the byte arraydata- the data array to serialize tolistener- 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.
-
getData
public byte[] getData()
- Returns:
- the data which makes up this record
-
getRecordSize
public int getRecordSize()
Description copied from class:EscherRecordSubclasses should effeciently return the number of bytes required to serialize the record.- Specified by:
getRecordSizein classEscherRecord- Returns:
- number of bytes
-
getChildRecords
public java.util.List<EscherRecord> getChildRecords()
- Overrides:
getChildRecordsin classEscherRecord- 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)
Description copied from class:EscherRecordSets the child records for this record. By default this will throw an exception as only EscherContainerRecords may have children.- Overrides:
setChildRecordsin classEscherRecord- Parameters:
childRecords- Not used in base implementation.
-
getRecordName
public java.lang.String getRecordName()
Description copied from class:EscherRecordSubclasses should return the short name for this escher record.- Specified by:
getRecordNamein classEscherRecord- Returns:
- the short name for this escher record
-
addChildRecord
public void addChildRecord(EscherRecord childRecord)
-
getGenericProperties
public java.util.Map<java.lang.String,java.util.function.Supplier<?>> getGenericProperties()
- Specified by:
getGenericPropertiesin interfaceGenericRecord- Overrides:
getGenericPropertiesin classEscherRecord
-
getGenericRecordType
public java.lang.Enum getGenericRecordType()
-
copy
public UnknownEscherRecord copy()
- Specified by:
copyin interfaceDuplicatable- Specified by:
copyin classEscherRecord- Returns:
- a deep copy of the implementing class / instance
-
-