mirror of https://github.com/apache/poi.git
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:
parent
2dd98d377e
commit
3277d492dd
|
@ -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() {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 =
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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;}
|
||||
}
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -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"
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue