JDK 1.4 fixes for new hpbf stuff. Some clean-up

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@688642 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2008-08-25 07:56:37 +00:00
parent 2dd98d377e
commit 3277d492dd
7 changed files with 50 additions and 77 deletions

View File

@ -14,9 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.hpbf;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
@ -34,7 +34,7 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem;
* for HPBF, our implementation of the publisher
* file format.
*/
public class HPBFDocument extends POIDocument {
public final class HPBFDocument extends POIDocument {
private MainContents mainContents;
private QuillContents quillContents;
private EscherStm escherStm;
@ -59,28 +59,12 @@ public class HPBFDocument extends POIDocument {
// Go looking for our interesting child
// streams
try {
mainContents = new MainContents(dir);
} catch(FileNotFoundException e) {
throw new IllegalArgumentException("File invalid - missing required main Contents part", e);
}
try {
quillContents = new QuillContents(dir);
} catch(FileNotFoundException e) {
throw new IllegalArgumentException("File invalid - missing required Quill CONTENTS part", e);
}
mainContents = new MainContents(dir);
quillContents = new QuillContents(dir);
// Now the Escher bits
try {
escherStm = new EscherStm(dir);
} catch(FileNotFoundException e) {
throw new IllegalArgumentException("File invalid - missing required EscherStm part", e);
}
try {
escherDelayStm = new EscherDelayStm(dir);
} catch(FileNotFoundException e) {
throw new IllegalArgumentException("File invalid - missing required EscherDelayStm part", e);
}
escherStm = new EscherStm(dir);
escherDelayStm = new EscherDelayStm(dir);
}
public MainContents getMainContents() {

View File

@ -14,22 +14,17 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.hpbf.model;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.poifs.filesystem.DirectoryNode;
public class EscherDelayStm extends EscherPart {
public EscherDelayStm(DirectoryNode baseDir) throws FileNotFoundException,
IOException {
super(baseDir);
}
public final class EscherDelayStm extends EscherPart {
private static final String[] PATH = { "Escher", "EscherDelayStm", };
public String[] getPath() {
return new String[] {
"Escher", "EscherDelayStm"
};
public EscherDelayStm(DirectoryNode baseDir) throws IOException {
super(baseDir, PATH);
}
}

View File

@ -14,9 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.hpbf.model;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
@ -34,9 +34,8 @@ public abstract class EscherPart extends HPBFPart {
* Creates the Escher Part, and finds our child
* escher records
*/
public EscherPart(DirectoryNode baseDir) throws FileNotFoundException,
IOException {
super(baseDir);
public EscherPart(DirectoryNode baseDir, String[] parts) throws IOException {
super(baseDir, parts);
// Now create our Escher children
DefaultEscherRecordFactory erf =

View File

@ -14,22 +14,16 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.hpbf.model;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.poifs.filesystem.DirectoryNode;
public class EscherStm extends EscherPart {
public EscherStm(DirectoryNode baseDir) throws FileNotFoundException,
IOException {
super(baseDir);
}
public String[] getPath() {
return new String[] {
"Escher", "EscherStm"
};
public final class EscherStm extends EscherPart {
private static final String[] PATH = { "Escher", "EscherStm", };
public EscherStm(DirectoryNode baseDir) throws IOException {
super(baseDir, PATH);
}
}

View File

@ -30,23 +30,35 @@ import org.apache.poi.poifs.filesystem.DocumentEntry;
*/
public abstract class HPBFPart {
protected byte[] data;
public HPBFPart(DirectoryNode baseDir) throws FileNotFoundException, IOException {
String[] path = getPath();
/**
* @param path the path to the part, eg Contents or Quill, QuillSub, CONTENTS
*/
public HPBFPart(DirectoryNode baseDir, String[] path) throws IOException {
DirectoryNode dir = getDir(path, baseDir);
String name = path[path.length-1];
DocumentEntry docProps =
(DocumentEntry)dir.getEntry(name);
DocumentEntry docProps;
try {
docProps = (DocumentEntry)dir.getEntry(name);
} catch (FileNotFoundException e) {
throw new IllegalArgumentException("File invalid - failed to find document entry '"
+ name + "'");
}
// Grab the data from the part stream
data = new byte[docProps.getSize()];
dir.createDocumentInputStream(name).read(data);
}
private DirectoryNode getDir(String[] path, DirectoryNode baseDir) throws FileNotFoundException {
private DirectoryNode getDir(String[] path, DirectoryNode baseDir) {
DirectoryNode dir = baseDir;
for(int i=0; i<path.length-1; i++) {
dir = (DirectoryNode)dir.getEntry(path[i]);
try {
dir = (DirectoryNode)dir.getEntry(path[i]);
} catch (FileNotFoundException e) {
throw new IllegalArgumentException("File invalid - failed to find directory entry '"
+ path[i] + "'");
}
}
return dir;
}
@ -86,8 +98,7 @@ public abstract class HPBFPart {
public byte[] getData() { return data; }
/**
* Returns the path to the part, eg Contents
* or Quill, QuillSub, CONTENTS
* Returns
*/
public abstract String[] getPath();
public final String[] getPath() {return null;}
}

View File

@ -14,9 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
==================================================================== */
package org.apache.poi.hpbf.model;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.poifs.filesystem.DirectoryNode;
@ -24,14 +24,11 @@ import org.apache.poi.poifs.filesystem.DirectoryNode;
/**
* The main Contents. Not yet understood
*/
public class MainContents extends HPBFPart {
public MainContents(DirectoryNode baseDir)
throws FileNotFoundException, IOException {
super(baseDir);
}
public String[] getPath() {
return new String[] { "Contents" };
public final class MainContents extends HPBFPart {
private static final String[] PATH = { "Contents", };
public MainContents(DirectoryNode baseDir) throws IOException {
super(baseDir, PATH);
}
protected void generateData() {

View File

@ -16,7 +16,6 @@
==================================================================== */
package org.apache.poi.hpbf.model;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hpbf.model.qcbits.QCBit;
@ -28,12 +27,12 @@ import org.apache.poi.util.LittleEndian;
/**
* Quill -> QuillSub -> CONTENTS
*/
public class QuillContents extends HPBFPart {
public final class QuillContents extends HPBFPart {
private static final String[] PATH = { "Quill", "QuillSub", "CONTENTS", };
private QCBit[] bits;
public QuillContents(DirectoryNode baseDir)
throws FileNotFoundException, IOException {
super(baseDir);
public QuillContents(DirectoryNode baseDir) throws IOException {
super(baseDir, PATH);
// Now parse the first 512 bytes, and produce
// all our bits
@ -85,10 +84,4 @@ public class QuillContents extends HPBFPart {
// TODO
throw new IllegalStateException("Not done yet!");
}
public String[] getPath() {
return new String[] {
"Quill", "QuillSub", "CONTENTS"
};
}
}