Package org.apache.poi.ddf
Class EscherContainerRecord
- java.lang.Object
-
- org.apache.poi.ddf.EscherRecord
-
- org.apache.poi.ddf.EscherContainerRecord
-
- All Implemented Interfaces:
Iterable<EscherRecord>
,Duplicatable
,GenericRecord
public final class EscherContainerRecord extends EscherRecord implements Iterable<EscherRecord>
Escher container records store other escher records as children. The container records themselves never store any information beyond the standard header used by all escher records. This one record is used to represent many different types of records.
-
-
Field Summary
Fields Modifier and Type Field Description static short
BSTORE_CONTAINER
static short
DG_CONTAINER
static short
DGG_CONTAINER
static short
SOLVER_CONTAINER
static short
SP_CONTAINER
static short
SPGR_CONTAINER
-
Constructor Summary
Constructors Constructor Description EscherContainerRecord()
EscherContainerRecord(EscherContainerRecord other)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addChildBefore(EscherRecord record, int insertBeforeRecordId)
Add a child record before the record with given recordIdvoid
addChildRecord(EscherRecord record)
Append a child recordEscherContainerRecord
copy()
void
display(PrintWriter w, int indent)
The display methods allows escher variables to print the record names according to their hierarchy.int
fillFields(byte[] data, int pOffset, EscherRecordFactory recordFactory)
The contract of this method is to deserialize an escher record including its children.EscherRecord
getChild(int index)
Returns the indexed child record.<T extends EscherRecord>
TgetChildById(short recordId)
List<EscherContainerRecord>
getChildContainers()
Returns all of our children which are also EscherContainers (may be 0, 1, or vary rarely 2 or 3)int
getChildCount()
List<EscherRecord>
getChildRecords()
Map<String,Supplier<?>>
getGenericProperties()
Enum
getGenericRecordType()
String
getRecordName()
Subclasses should return the short name for this escher record.void
getRecordsById(short recordId, List<EscherRecord> out)
Recursively find records with the specified record IDint
getRecordSize()
Subclasses should effeciently return the number of bytes required to serialize the record.boolean
hasChildOfType(short recordId)
Do any of our (top level) children have the given recordId?Iterator<EscherRecord>
iterator()
boolean
removeChildRecord(EscherRecord toBeRemoved)
Removes the given escher record from the child listint
serialize(int offset, byte[] data, EscherSerializationListener listener)
Serializes the record to an existing byte array.void
setChildRecords(List<EscherRecord> childRecords)
replaces the internal child list with the contents of the suppliedchildRecords
Spliterator<EscherRecord>
spliterator()
-
Methods inherited from class org.apache.poi.ddf.EscherRecord
fillFields, getGenericChildren, getInstance, getOptions, getRecordId, getVersion, isContainerRecord, readHeader, readInstance, serialize, serialize, setInstance, setOptions, setRecordId, setVersion, toString, toXml, toXml
-
-
-
-
Field Detail
-
DGG_CONTAINER
public static final short DGG_CONTAINER
-
BSTORE_CONTAINER
public static final short BSTORE_CONTAINER
-
DG_CONTAINER
public static final short DG_CONTAINER
-
SPGR_CONTAINER
public static final short SPGR_CONTAINER
-
SP_CONTAINER
public static final short SP_CONTAINER
-
SOLVER_CONTAINER
public static final short SOLVER_CONTAINER
-
-
Constructor Detail
-
EscherContainerRecord
public EscherContainerRecord()
-
EscherContainerRecord
public EscherContainerRecord(EscherContainerRecord other)
-
-
Method Detail
-
fillFields
public int fillFields(byte[] data, int pOffset, EscherRecordFactory recordFactory)
Description copied from class:EscherRecord
The contract of this method is to deserialize an escher record including its children.- Specified by:
fillFields
in classEscherRecord
- Parameters:
data
- The byte array containing the serialized escher records.pOffset
- The offset into the byte array.recordFactory
- A factory for creating new escher records.- Returns:
- The number of bytes written.
-
serialize
public int serialize(int offset, byte[] data, EscherSerializationListener listener)
Description copied from class:EscherRecord
Serializes the record to an existing byte array.- Specified by:
serialize
in 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.
-
getRecordSize
public int getRecordSize()
Description copied from class:EscherRecord
Subclasses should effeciently return the number of bytes required to serialize the record.- Specified by:
getRecordSize
in classEscherRecord
- Returns:
- number of bytes
-
hasChildOfType
public boolean hasChildOfType(short recordId)
Do any of our (top level) children have the given recordId?- Parameters:
recordId
- the recordId of the child- Returns:
- true, if any child has the given recordId
-
getChild
public EscherRecord getChild(int index)
Description copied from class:EscherRecord
Returns the indexed child record.- Overrides:
getChild
in classEscherRecord
- Parameters:
index
- the index of the child within the child records- Returns:
- the indexed child record
-
getChildRecords
public List<EscherRecord> getChildRecords()
- Overrides:
getChildRecords
in classEscherRecord
- Returns:
- a copy of the list of all the child records of the container.
- See Also:
EscherContainerRecord
-
getChildCount
public int getChildCount()
-
iterator
public Iterator<EscherRecord> iterator()
- Specified by:
iterator
in interfaceIterable<EscherRecord>
- Returns:
- an iterator over the child records
-
spliterator
public Spliterator<EscherRecord> spliterator()
- Specified by:
spliterator
in interfaceIterable<EscherRecord>
- Returns:
- a spliterator over the child records
- Since:
- POI 5.2.0
-
setChildRecords
public void setChildRecords(List<EscherRecord> childRecords)
replaces the internal child list with the contents of the suppliedchildRecords
- Overrides:
setChildRecords
in classEscherRecord
- Parameters:
childRecords
- Not used in base implementation.
-
removeChildRecord
public boolean removeChildRecord(EscherRecord toBeRemoved)
Removes the given escher record from the child list- Parameters:
toBeRemoved
- the escher record to be removed- Returns:
- true, if the record was found and removed
-
getChildContainers
public List<EscherContainerRecord> getChildContainers()
Returns all of our children which are also EscherContainers (may be 0, 1, or vary rarely 2 or 3)- Returns:
- EscherContainer children
-
getRecordName
public String getRecordName()
Description copied from class:EscherRecord
Subclasses should return the short name for this escher record.- Specified by:
getRecordName
in classEscherRecord
- Returns:
- the short name for this escher record
-
display
public void display(PrintWriter w, int indent)
Description copied from class:EscherRecord
The display methods allows escher variables to print the record names according to their hierarchy.- Overrides:
display
in classEscherRecord
- Parameters:
w
- The print writer to output to.indent
- The current indent level.
-
addChildRecord
public void addChildRecord(EscherRecord record)
Append a child record- Parameters:
record
- the record to be added
-
addChildBefore
public void addChildBefore(EscherRecord record, int insertBeforeRecordId)
Add a child record before the record with given recordId- Parameters:
record
- the record to be addedinsertBeforeRecordId
- the recordId of the next sibling
-
getChildById
public <T extends EscherRecord> T getChildById(short recordId)
-
getRecordsById
public void getRecordsById(short recordId, List<EscherRecord> out)
Recursively find records with the specified record ID- Parameters:
recordId
- the recordId to be searched forout
- - list to store found records
-
getGenericProperties
public Map<String,Supplier<?>> getGenericProperties()
- Specified by:
getGenericProperties
in interfaceGenericRecord
- Overrides:
getGenericProperties
in classEscherRecord
-
getGenericRecordType
public Enum getGenericRecordType()
- Specified by:
getGenericRecordType
in interfaceGenericRecord
-
copy
public EscherContainerRecord copy()
- Specified by:
copy
in interfaceDuplicatable
- Specified by:
copy
in classEscherRecord
- Returns:
- a deep copy of the implementing class / instance
-
-