]> source.dussan.org Git - poi.git/commitdiff
JDK 1.4 fixes for new hpbf stuff. Some clean-up
authorJosh Micich <josh@apache.org>
Mon, 25 Aug 2008 07:56:37 +0000 (07:56 +0000)
committerJosh Micich <josh@apache.org>
Mon, 25 Aug 2008 07:56:37 +0000 (07:56 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@688642 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hpbf/HPBFDocument.java
src/scratchpad/src/org/apache/poi/hpbf/model/EscherDelayStm.java
src/scratchpad/src/org/apache/poi/hpbf/model/EscherPart.java
src/scratchpad/src/org/apache/poi/hpbf/model/EscherStm.java
src/scratchpad/src/org/apache/poi/hpbf/model/HPBFPart.java
src/scratchpad/src/org/apache/poi/hpbf/model/MainContents.java
src/scratchpad/src/org/apache/poi/hpbf/model/QuillContents.java

index 32880a0125fe9147b0ca58bc70d51a9acc5c4bb3..49de0d087672d63d8815ed8c00e91acfd7a0efc7 100644 (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() {
index 08ce4a5f6c28cf3f3e37ce9478d95cfca6ed19f3..032484626e943e4dce7797f471532050fdd838da 100644 (file)
    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);
        }
 }
index c99c64fa07c997b1632735a7b0212f4ec60d0fe5..00e685f8f29ab5541a2f87c52770512121498773 100644 (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 = 
index ac41127393422ba9d1e1c28b24d4337f54bb2771..2ed79ea34156bb72b6eccb4eab0a7b85a86b3335 100644 (file)
    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);
        }
 }
index e25d98be97ee2fb8cd0e7d4295752cd08c2cad78..9db15c664206a430969ccb9204f9f04fdc7916a8 100644 (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;}
 }
index 3d4de50b08b43ee16c4df05e190ad02abb6d6de5..9783ebdc54ec1be6908946c9254a482fbe2aa8bb 100644 (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() {
index aa3f1a000ef906efd18347e0118528c2f0d6e60e..ae626fcae39a1534639a4ef72c3c5cd5479a2de4 100644 (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"
-               };
-       }
 }