Author: nick
Date: Wed Jan 12 17:22:40 2011
New Revision: 1058243
URL: http://svn.apache.org/viewvc?rev=1058243&view=rev
Log:
HMEF dumping and properties tweaks
Modified:
poi/trunk/src/scratchpad/src/org/apache/poi/hmef/MAPIAttribute.java
poi/trunk/src/scratchpad/src/org/apache/poi/hmef/dev/HMEFDumper.java
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hmef/MAPIAttribute.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hmef/MAPIAttribute.java?rev=1058243&r1=1058242&r2=1058243&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hmef/MAPIAttribute.java
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hmef/MAPIAttribute.java Wed Jan
12 17:22:40 2011
@@ -104,7 +104,8 @@ public class MAPIAttribute {
MAPIProperty prop = MAPIProperty.get(id);
if(id >= 0x8000 && id <= 0xFFFF) {
// TODO
- throw new UnsupportedOperationException("Not yet implemented for
id " + id);
+ System.err.println("Not yet implemented for id " + id);
+ break;
}
// Now read in the value(s)
@@ -128,11 +129,10 @@ public class MAPIAttribute {
// Data is always padded out to a 4 byte boundary
if(len % 4 != 0) {
- byte[] padding = new byte[len % 4];
+ byte[] padding = new byte[4 - (len % 4)];
IOUtils.readFully(inp, padding);
}
}
- break;
}
// All done
Modified: poi/trunk/src/scratchpad/src/org/apache/poi/hmef/dev/HMEFDumper.java
URL:
http://svn.apache.org/viewvc/poi/trunk/src/scratchpad/src/org/apache/poi/hmef/dev/HMEFDumper.java?rev=1058243&r1=1058242&r2=1058243&view=diff
==============================================================================
--- poi/trunk/src/scratchpad/src/org/apache/poi/hmef/dev/HMEFDumper.java
(original)
+++ poi/trunk/src/scratchpad/src/org/apache/poi/hmef/dev/HMEFDumper.java Wed
Jan 12 17:22:40 2011
@@ -37,15 +37,24 @@ public final class HMEFDumper {
throw new IllegalArgumentException("Filename must be given");
}
- for(String filename : args) {
+ boolean truncatePropData = true;
+ for(int i=0; i<args.length; i++) {
+ if(args[i].equalsIgnoreCase("--full")) {
+ truncatePropData = false;
+ continue;
+ }
+
HMEFDumper dumper = new HMEFDumper(
- new FileInputStream(filename)
+ new FileInputStream(args[i])
);
+ dumper.setTruncatePropertyData(truncatePropData);
dumper.dump();
}
}
private InputStream inp;
+ private boolean truncatePropertyData;
+
public HMEFDumper(InputStream inp) throws IOException {
this.inp = inp;
@@ -63,6 +72,10 @@ public final class HMEFDumper {
LittleEndian.readUShort(inp);
}
+ public void setTruncatePropertyData(boolean truncate) {
+ truncatePropertyData = truncate;
+ }
+
private void dump() throws IOException {
int level;
@@ -86,7 +99,11 @@ public final class HMEFDumper {
String indent = " ";
System.out.println(indent + "Data of length " +
attr.getData().length);
if(attr.getData().length > 0) {
- int len = Math.min( attr.getData().length, 48 );
+ int len = attr.getData().length;
+ if(truncatePropertyData) {
+ len = Math.min( attr.getData().length, 48 );
+ }
+
int loops = len/16;
if(loops == 0) loops = 1;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]