public final class EscherContainerRecord extends EscherRecord implements java.lang.Iterable<EscherRecord>
Modifier and Type | Field and 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 and Description |
---|
EscherContainerRecord() |
EscherContainerRecord(EscherContainerRecord other) |
Modifier and Type | Method and Description |
---|---|
void |
addChildBefore(EscherRecord record,
int insertBeforeRecordId)
Add a child record before the record with given recordId
|
void |
addChildRecord(EscherRecord record)
Append a child record
|
EscherContainerRecord |
copy() |
void |
display(java.io.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
it's children.
|
EscherRecord |
getChild(int index)
Returns the indexed child record.
|
<T extends EscherRecord> |
getChildById(short recordId) |
java.util.List<EscherContainerRecord> |
getChildContainers()
Returns all of our children which are also
EscherContainers (may be 0, 1, or vary rarely 2 or 3)
|
java.util.List<EscherRecord> |
getChildRecords() |
java.util.Map<java.lang.String,java.util.function.Supplier<?>> |
getGenericProperties() |
java.lang.Enum |
getGenericRecordType() |
java.lang.String |
getRecordName()
Subclasses should return the short name for this escher record.
|
void |
getRecordsById(short recordId,
java.util.List<EscherRecord> out)
Recursively find records with the specified record ID
|
int |
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?
|
java.util.Iterator<EscherRecord> |
iterator() |
boolean |
removeChildRecord(EscherRecord toBeRemoved)
Removes the given escher record from the child list
|
int |
serialize(int offset,
byte[] data,
EscherSerializationListener listener)
Serializes the record to an existing byte array.
|
void |
setChildRecords(java.util.List<EscherRecord> childRecords)
replaces the internal child list with the contents of the supplied childRecords
|
clone, fillFields, getGenericChildren, getInstance, getOptions, getRecordId, getVersion, isContainerRecord, readHeader, readInstance, serialize, serialize, setInstance, setOptions, setRecordId, setVersion, toString, toXml, toXml
public static final short DGG_CONTAINER
public static final short BSTORE_CONTAINER
public static final short DG_CONTAINER
public static final short SPGR_CONTAINER
public static final short SP_CONTAINER
public static final short SOLVER_CONTAINER
public EscherContainerRecord()
public EscherContainerRecord(EscherContainerRecord other)
public int fillFields(byte[] data, int pOffset, EscherRecordFactory recordFactory)
EscherRecord
fillFields
in class EscherRecord
data
- The byte array containing the serialized escher
records.pOffset
- The offset into the byte array.recordFactory
- A factory for creating new escher records.public int serialize(int offset, byte[] data, EscherSerializationListener listener)
EscherRecord
serialize
in class EscherRecord
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.public int getRecordSize()
EscherRecord
getRecordSize
in class EscherRecord
public boolean hasChildOfType(short recordId)
recordId
- the recordId of the childpublic EscherRecord getChild(int index)
EscherRecord
getChild
in class EscherRecord
index
- the index of the child within the child recordspublic java.util.List<EscherRecord> getChildRecords()
getChildRecords
in class EscherRecord
EscherContainerRecord
public java.util.Iterator<EscherRecord> iterator()
iterator
in interface java.lang.Iterable<EscherRecord>
public void setChildRecords(java.util.List<EscherRecord> childRecords)
setChildRecords
in class EscherRecord
childRecords
- Not used in base implementation.public boolean removeChildRecord(EscherRecord toBeRemoved)
toBeRemoved
- the escher record to be removedpublic java.util.List<EscherContainerRecord> getChildContainers()
public java.lang.String getRecordName()
EscherRecord
getRecordName
in class EscherRecord
public void display(java.io.PrintWriter w, int indent)
EscherRecord
display
in class EscherRecord
w
- The print writer to output to.indent
- The current indent level.public void addChildRecord(EscherRecord record)
record
- the record to be addedpublic void addChildBefore(EscherRecord record, int insertBeforeRecordId)
record
- the record to be addedinsertBeforeRecordId
- the recordId of the next siblingpublic <T extends EscherRecord> T getChildById(short recordId)
public void getRecordsById(short recordId, java.util.List<EscherRecord> out)
recordId
- the recordId to be searched forout
- - list to store found recordspublic java.util.Map<java.lang.String,java.util.function.Supplier<?>> getGenericProperties()
getGenericProperties
in interface GenericRecord
getGenericProperties
in class EscherRecord
public java.lang.Enum getGenericRecordType()
getGenericRecordType
in interface GenericRecord
public EscherContainerRecord copy()
copy
in interface Duplicatable
copy
in class EscherRecord
Copyright 2020 The Apache Software Foundation or its licensors, as applicable.