More friendly output of byte arrays for property values in HSMFDump

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1496982 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Nick Burch 2013-06-26 16:03:09 +00:00
parent 43886b815b
commit c5893c8c34
2 changed files with 46 additions and 1 deletions

View File

@ -62,6 +62,42 @@ public class ByteChunk extends Chunk {
this.value = value;
}
/**
* Returns the data in a debug-friendly string format
*/
public String toString() {
return toDebugFriendlyString(value);
}
/**
* Formats the byte array in a debug-friendly way,
* showing all of a short array, and the start of a
* longer one.
*/
protected static String toDebugFriendlyString(byte[] value) {
if (value == null)
return "(Null Byte Array)";
StringBuffer text = new StringBuffer();
text.append("Bytes len=").append(value.length);
text.append(" [");
int limit = Math.min(value.length, 16);
if (value.length > 16) {
limit = 12;
}
for (int i=0; i<limit; i++) {
if (i > 0)
text.append(',');
text.append(value[i]);
}
if (value.length > 16) {
text.append(",....");
}
text.append("]");
return text.toString();
}
/**
* Returns the data, formatted as a string assuming it
* was a non-unicode string.

View File

@ -60,7 +60,16 @@ public class PropertyValue {
}
public String toString() {
return property + " = " + getValue();
Object v = getValue();
if (v == null)
return "(No value available)";
if (v instanceof byte[]) {
return ByteChunk.toDebugFriendlyString((byte[])v);
} else {
// Just use the normal toString on the value
return v.toString();
}
}
// TODO classes for the other important value types