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;
* 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;
// 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() {
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);
}
}
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;
* 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 =
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);
}
}
*/
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;
}
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;}
}
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;
/**
* 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() {
==================================================================== */
package org.apache.poi.hpbf.model;
-import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hpbf.model.qcbits.QCBit;
/**
* 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
// TODO
throw new IllegalStateException("Not done yet!");
}
-
- public String[] getPath() {
- return new String[] {
- "Quill", "QuillSub", "CONTENTS"
- };
- }
}