use of org.apache.poi.hdgf.pointers.Pointer in project poi by apache.
the class HDGFDiagram method debug.
/**
* Prints out some simple debug on the base contents of the file.
* @see org.apache.poi.hdgf.dev.VSDDumper
*/
public void debug() {
System.err.println("Trailer is at " + trailerPointer.getOffset());
System.err.println("Trailer has type " + trailerPointer.getType());
System.err.println("Trailer has length " + trailerPointer.getLength());
System.err.println("Trailer has format " + trailerPointer.getFormat());
for (int i = 0; i < trailer.getPointedToStreams().length; i++) {
Stream stream = trailer.getPointedToStreams()[i];
Pointer ptr = stream.getPointer();
System.err.println("Looking at pointer " + i);
System.err.println("\tType is " + ptr.getType() + "\t\t" + Integer.toHexString(ptr.getType()));
System.err.println("\tOffset is " + ptr.getOffset() + "\t\t" + Long.toHexString(ptr.getOffset()));
System.err.println("\tAddress is " + ptr.getAddress() + "\t" + Long.toHexString(ptr.getAddress()));
System.err.println("\tLength is " + ptr.getLength() + "\t\t" + Long.toHexString(ptr.getLength()));
System.err.println("\tFormat is " + ptr.getFormat() + "\t\t" + Long.toHexString(ptr.getFormat()));
System.err.println("\tCompressed is " + ptr.destinationCompressed());
System.err.println("\tStream is " + stream.getClass());
if (stream instanceof PointerContainingStream) {
PointerContainingStream pcs = (PointerContainingStream) stream;
if (pcs.getPointedToStreams() != null && pcs.getPointedToStreams().length > 0) {
System.err.println("\tContains " + pcs.getPointedToStreams().length + " other pointers/streams");
for (int j = 0; j < pcs.getPointedToStreams().length; j++) {
Stream ss = pcs.getPointedToStreams()[j];
Pointer sptr = ss.getPointer();
System.err.println("\t\t" + j + " - Type is " + sptr.getType() + "\t\t" + Integer.toHexString(sptr.getType()));
System.err.println("\t\t" + j + " - Length is " + sptr.getLength() + "\t\t" + Long.toHexString(sptr.getLength()));
}
}
}
if (stream instanceof StringsStream) {
System.err.println("\t\t**strings**");
StringsStream ss = (StringsStream) stream;
System.err.println("\t\t" + ss._getContentsLength());
}
}
}
use of org.apache.poi.hdgf.pointers.Pointer in project poi by apache.
the class VSDDumper method dumpStream.
private void dumpStream(Stream stream, int indent) {
Pointer ptr = stream.getPointer();
dumpVal("Stream at", ptr.getOffset(), indent);
dumpVal("Type is", ptr.getType(), indent + 1);
dumpVal("Format is", ptr.getFormat(), indent + 1);
dumpVal("Length is", ptr.getLength(), indent + 1);
if (ptr.destinationCompressed()) {
dumpVal("DC.Length is", stream._getContentsLength(), indent + 1);
}
dumpVal("Compressed is", ptr.destinationCompressed(), indent + 1);
dumpVal("Stream is", stream.getClass().getName(), indent + 1);
byte[] db = stream._getStore()._getContents();
String ds = (db.length >= 8) ? Arrays.toString(db) : "[]";
dumpVal("First few bytes are", ds, indent + 1);
if (stream instanceof PointerContainingStream) {
Stream[] streams = ((PointerContainingStream) stream).getPointedToStreams();
dumpVal("Nbr of children", streams.length, indent + 1);
for (Stream s : streams) {
dumpStream(s, indent + 1);
}
}
if (stream instanceof ChunkStream) {
Chunk[] chunks = ((ChunkStream) stream).getChunks();
dumpVal("Nbr of chunks", chunks.length, indent + 1);
for (Chunk chunk : chunks) {
dumpChunk(chunk, indent + 1);
}
}
}
use of org.apache.poi.hdgf.pointers.Pointer in project poi by apache.
the class PointerContainingStream method findChildren.
/**
* Performs a recursive search, identifying the pointers we contain,
* creating the Streams for where they point to, then searching
* those if appropriate.
*/
public void findChildren(byte[] documentData) {
// For each pointer, generate the Stream it points to
childStreams = new Stream[childPointers.length];
for (int i = 0; i < childPointers.length; i++) {
Pointer ptr = childPointers[i];
childStreams[i] = Stream.createStream(ptr, documentData, chunkFactory, pointerFactory);
// Process chunk streams into their chunks
if (childStreams[i] instanceof ChunkStream) {
ChunkStream child = (ChunkStream) childStreams[i];
child.findChunks();
}
// Recurse into pointer containing streams
if (childStreams[i] instanceof PointerContainingStream) {
PointerContainingStream child = (PointerContainingStream) childStreams[i];
child.findChildren(documentData);
}
}
}
Aggregations