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() |
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
|
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.
|
protected java.lang.Object[][] |
getAttributeMap()
For the purpose of providing toString() and toXml() a subclass can either override those methods
or provide a Object[][] array in the form { { "Attribute Name (Header)", value, "optional attribute", value }, ...
|
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.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, 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 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 recordsprotected java.lang.Object[][] getAttributeMap()
EscherRecord
{ { "Attribute Name (Header)", value, "optional attribute", value }, ... }
.Null values won't be printed.
The attributes record, version, instance, options must not be returned.
getAttributeMap
in class EscherRecord
Copyright 2018 The Apache Software Foundation or its licensors, as applicable.