| Method from org.apache.poi.ddf.EscherContainerRecord Detail: |
public void addChildRecord(EscherRecord record) {
this.childRecords.add( record );
}
|
public void display(PrintWriter w,
int indent) {
super.display( w, indent );
for ( Iterator iterator = childRecords.iterator(); iterator.hasNext(); )
{
EscherRecord escherRecord = (EscherRecord) iterator.next();
escherRecord.display( w, indent + 1 );
}
}
|
public int fillFields(byte[] data,
int offset,
EscherRecordFactory recordFactory) {
int bytesRemaining = readHeader( data, offset );
int bytesWritten = 8;
offset += 8;
while ( bytesRemaining > 0 && offset < data.length )
{
EscherRecord child = recordFactory.createRecord(data, offset);
int childBytesWritten = child.fillFields( data, offset, recordFactory );
bytesWritten += childBytesWritten;
offset += childBytesWritten;
bytesRemaining -= childBytesWritten;
getChildRecords().add( child );
if (offset >= data.length && bytesRemaining > 0)
{
System.out.println("WARNING: " + bytesRemaining + " bytes remaining but no space left");
}
}
return bytesWritten;
}
|
public EscherSpRecord getChildById(short recordId) {
for ( Iterator iterator = childRecords.iterator(); iterator.hasNext(); )
{
EscherRecord escherRecord = (EscherRecord) iterator.next();
if (escherRecord.getRecordId() == recordId)
return (EscherSpRecord) escherRecord;
}
return null;
}
|
public List getChildContainers() {
List containers = new ArrayList();
for ( Iterator iterator = getChildRecords().iterator(); iterator.hasNext(); )
{
EscherRecord r = (EscherRecord) iterator.next();
if(r instanceof EscherContainerRecord) {
containers.add(r);
}
}
return containers;
}
Returns all of our children which are also
EscherContainers (may be 0, 1, or vary rarely
2 or 3) |
public List getChildRecords() {
return childRecords;
}
Returns a list of all the child (escher) records
of the container. |
public String getRecordName() {
switch ((short)getRecordId())
{
case DGG_CONTAINER:
return "DggContainer";
case BSTORE_CONTAINER:
return "BStoreContainer";
case DG_CONTAINER:
return "DgContainer";
case SPGR_CONTAINER:
return "SpgrContainer";
case SP_CONTAINER:
return "SpContainer";
case SOLVER_CONTAINER:
return "SolverContainer";
default:
return "Container 0x" + HexDump.toHex(getRecordId());
}
}
|
public int getRecordSize() {
int childRecordsSize = 0;
for ( Iterator iterator = getChildRecords().iterator(); iterator.hasNext(); )
{
EscherRecord r = (EscherRecord) iterator.next();
childRecordsSize += r.getRecordSize();
}
return 8 + childRecordsSize;
}
|
public boolean hasChildOfType(short recordId) {
for ( Iterator iterator = getChildRecords().iterator(); iterator.hasNext(); )
{
EscherRecord r = (EscherRecord) iterator.next();
if(r.getRecordId() == recordId) {
return true;
}
}
return false;
}
Do any of our (top level) children have the
given recordId? |
public int serialize(int offset,
byte[] data,
EscherSerializationListener listener) {
listener.beforeRecordSerialize( offset, getRecordId(), this );
LittleEndian.putShort(data, offset, getOptions());
LittleEndian.putShort(data, offset+2, getRecordId());
int remainingBytes = 0;
for ( Iterator iterator = getChildRecords().iterator(); iterator.hasNext(); )
{
EscherRecord r = (EscherRecord) iterator.next();
remainingBytes += r.getRecordSize();
}
LittleEndian.putInt(data, offset+4, remainingBytes);
int pos = offset+8;
for ( Iterator iterator = getChildRecords().iterator(); iterator.hasNext(); )
{
EscherRecord r = (EscherRecord) iterator.next();
pos += r.serialize(pos, data, listener );
}
listener.afterRecordSerialize( pos, getRecordId(), pos - offset, this );
return pos - offset;
}
|
public void setChildRecords(List childRecords) {
this.childRecords = childRecords;
}
|
public String toString() {
return toString("");
}
|
public String toString(String indent) {
String nl = System.getProperty( "line.separator" );
StringBuffer children = new StringBuffer();
if ( getChildRecords().size() > 0 )
{
children.append( " children: " + nl );
int count = 0;
for ( Iterator iterator = getChildRecords().iterator(); iterator.hasNext(); )
{
String newIndent = indent + " ";
EscherRecord record = (EscherRecord) iterator.next();
children.append(newIndent + "Child " + count + ":" + nl);
if(record instanceof EscherContainerRecord) {
EscherContainerRecord ecr = (EscherContainerRecord)record;
children.append( ecr.toString(newIndent));
} else {
children.append( record.toString() );
}
count++;
}
}
return
indent + getClass().getName() + " (" + getRecordName() + "):" + nl +
indent + " isContainer: " + isContainerRecord() + nl +
indent + " options: 0x" + HexDump.toHex( getOptions() ) + nl +
indent + " recordId: 0x" + HexDump.toHex( getRecordId() ) + nl +
indent + " numchildren: " + getChildRecords().size() + nl +
indent + children.toString();
}
|