]> source.dussan.org Git - poi.git/commitdiff
Merged revisions 613395-613401 via svnmerge from
authorUgo Cei <ugo@apache.org>
Mon, 21 Jan 2008 09:56:56 +0000 (09:56 +0000)
committerUgo Cei <ugo@apache.org>
Mon, 21 Jan 2008 09:56:56 +0000 (09:56 +0000)
https://svn.apache.org/repos/asf/poi/trunk

........
  r613395 | yegor | 2008-01-19 15:27:02 +0100 (Sat, 19 Jan 2008) | 1 line

  use JDK 1.4 compatible constructor for IllegalStateException
........
  r613396 | yegor | 2008-01-19 15:28:10 +0100 (Sat, 19 Jan 2008) | 1 line

  add a check to prevent NPE in HSSFSheet.autoSizeColumn(). See Bug 44246
........
  r613400 | yegor | 2008-01-19 15:44:07 +0100 (Sat, 19 Jan 2008) | 1 line

  added unit tests for closed Bug 37684: Unhandled Continue Record Error
........
  r613401 | yegor | 2008-01-19 15:54:06 +0100 (Sat, 19 Jan 2008) | 1 line

  added a unit test for fixed bug 41139: Constructing HSSFWorkbook is failed,threw threw ArrayIndexOutOfBoundsException for creating UnknownRecord
........

git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@613822 13f79535-47bb-0310-9956-ffa450edef68

src/java/org/apache/poi/hssf/record/DVRecord.java
src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
src/testcases/org/apache/poi/hssf/data/37684-1.xls [new file with mode: 0755]
src/testcases/org/apache/poi/hssf/data/37684-2.xls [new file with mode: 0755]
src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls
src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
src/testcases/org/apache/poi/hssf/usermodel/TestUnfixedBugs.java

index e5527d61f19a0429d3c00c42c163bcdc7d7b7831..a7b68a1743ff9f4d7cb13df8bec30e1ad40ca62c 100644 (file)
@@ -187,10 +187,13 @@ public class DVRecord extends Record
        this.field_not_used_2 = in.readShort();
 
        //read sec formula data condition
-       // Not sure if this was needed or not...
+       //Not sure if this was needed or not...
        try {
            in.skip(this.field_size_sec_formula);
-       } catch(IOException e) { throw new IllegalStateException(e); } 
+       } catch(IOException e) {
+           e.printStackTrace();
+           throw new IllegalStateException(e.getMessage());
+       }
 
        token_pos = 0;
        while (token_pos < this.field_size_sec_formula)
index bb779fef36b727654c8efd8713c111867325cb9e..0250a4cbaab23ea830e847e518fbbb8a01d4d79a 100644 (file)
@@ -1748,27 +1748,28 @@ public class HSSFSheet
                 } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
                     sval = String.valueOf(cell.getBooleanCellValue());
                 }
+                if(sval != null) {
+                    String txt = sval + defaultChar;
+                    str = new AttributedString(txt);
+                    copyAttributes(font, str, 0, txt.length());
 
-                String txt = sval + defaultChar;
-                str = new AttributedString(txt);
-                copyAttributes(font, str, 0, txt.length());
-
-                layout = new TextLayout(str.getIterator(), frc);
-                if(style.getRotation() != 0){
-                    /*
-                     * Transform the text using a scale so that it's height is increased by a multiple of the leading,
-                     * and then rotate the text before computing the bounds. The scale results in some whitespace around
-                     * the unrotated top and bottom of the text that normally wouldn't be present if unscaled, but
-                     * is added by the standard Excel autosize.
-                     */
-                    AffineTransform trans = new AffineTransform();
-                    trans.concatenate(AffineTransform.getRotateInstance(style.getRotation()*2.0*Math.PI/360.0));
-                    trans.concatenate(
-                    AffineTransform.getScaleInstance(1, fontHeightMultiple)
-                    );
-                    width = Math.max(width, layout.getOutline(trans).getBounds().getWidth() / defaultCharWidth);
-                } else {
-                    width = Math.max(width, layout.getBounds().getWidth() / defaultCharWidth);
+                    layout = new TextLayout(str.getIterator(), frc);
+                    if(style.getRotation() != 0){
+                        /*
+                         * Transform the text using a scale so that it's height is increased by a multiple of the leading,
+                         * and then rotate the text before computing the bounds. The scale results in some whitespace around
+                         * the unrotated top and bottom of the text that normally wouldn't be present if unscaled, but
+                         * is added by the standard Excel autosize.
+                         */
+                        AffineTransform trans = new AffineTransform();
+                        trans.concatenate(AffineTransform.getRotateInstance(style.getRotation()*2.0*Math.PI/360.0));
+                        trans.concatenate(
+                        AffineTransform.getScaleInstance(1, fontHeightMultiple)
+                        );
+                        width = Math.max(width, layout.getOutline(trans).getBounds().getWidth() / defaultCharWidth);
+                    } else {
+                        width = Math.max(width, layout.getBounds().getWidth() / defaultCharWidth);
+                    }
                 }
             }
 
diff --git a/src/testcases/org/apache/poi/hssf/data/37684-1.xls b/src/testcases/org/apache/poi/hssf/data/37684-1.xls
new file mode 100755 (executable)
index 0000000..a59769e
Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/37684-1.xls differ
diff --git a/src/testcases/org/apache/poi/hssf/data/37684-2.xls b/src/testcases/org/apache/poi/hssf/data/37684-2.xls
new file mode 100755 (executable)
index 0000000..b17d0fa
Binary files /dev/null and b/src/testcases/org/apache/poi/hssf/data/37684-2.xls differ
index 556ea8192758d22c8b5427a379673771298ee08d..a9460375cb21958270dc7234ef79e5152de86bab 100644 (file)
Binary files a/src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls and b/src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls differ
index 006b60c3dd6c38eaac3c18b356cb113ddb1be024..d0dc7203e1f127ee18b15cc86723e8f31093673c 100644 (file)
@@ -954,6 +954,63 @@ extends TestCase {
         assertTrue("No Exceptions while reading file", true);
 
     }
+
+    /**
+     * Bug 37684  : Unhandled Continue Record Error
+     */
+    public void test37684 () throws Exception {
+        FileInputStream in = new FileInputStream(new File(cwd, "37684-1.xls"));
+        HSSFWorkbook wb = new HSSFWorkbook(in);
+        in.close();
+
+        assertTrue("No exceptions while reading workbook", true);
+
+        //serialize and read again
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        wb.write(out);
+        out.close();
+        assertTrue("No exceptions while saving workbook", true);
+
+        wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+        assertTrue("No exceptions while reading saved stream", true);
+
+
+        in = new FileInputStream(new File(cwd, "37684-2.xls"));
+        wb = new HSSFWorkbook(in);
+        in.close();
+
+        assertTrue("No exceptions while reading workbook", true);
+
+        //serialize and read again
+        out = new ByteArrayOutputStream();
+        wb.write(out);
+        out.close();
+        assertTrue("No exceptions while saving workbook", true);
+
+        wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+        assertTrue("No exceptions while reading saved stream", true);
+    }
+
+    /**
+     * Bug 41139: Constructing HSSFWorkbook is failed,threw threw ArrayIndexOutOfBoundsException for creating UnknownRecord
+     */
+    public void test41139() throws Exception {
+        FileInputStream in = new FileInputStream(new File(cwd, "41139.xls"));
+        HSSFWorkbook wb = new HSSFWorkbook(in);
+        in.close();
+
+        assertTrue("No Exceptions while reading file", true);
+
+        //serialize and read again
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        wb.write(out);
+        out.close();
+
+        wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
+        assertTrue("No Exceptions while reading file", true);
+
+    }
+
 }
 
 
index e0e61768f86f561f17af4fdb0022806a8dc04481..3f876c8663932ee765b234e6fcfc7e2a5d65d6a9 100644 (file)
@@ -44,79 +44,13 @@ public class TestUnfixedBugs extends TestCase {
        protected String cwd = System.getProperty("HSSF.testdata.path");
        
         
-        /* ArrayIndexOutOfBound in BOFRecord */  
-        public void test28772() throws java.io.IOException {
-       String filename = System.getProperty("HSSF.testdata.path");
-       filename=filename+"/28772.xls";
-       FileInputStream in = new FileInputStream(filename);
-       HSSFWorkbook wb = new HSSFWorkbook(in);
-       assertTrue("Read book fine!" , true);
-   }
-        
-        /**
-            * Bug 37684: Unhandled Continue Record Error
-            * 
-            * BUT NOW(Jan07): It triggers bug 41026!!
-            * 
-            * java.lang.ArrayIndexOutOfBoundsException: 30
-         at org.apache.poi.hssf.record.aggregates.ValueRecordsAggregate.rowHasCells(ValueRecordsAggregate.java:219)
-            */
-           public void test37684() throws Exception {
-               FileInputStream in = new FileInputStream(new File(cwd, "37684.xls"));
-               HSSFWorkbook wb = new HSSFWorkbook(in);
-               in.close();
-
-               HSSFSheet sheet = wb.getSheetAt( 0 );
-               assertNotNull(sheet);
-
-               assertTrue("No Exceptions while reading file", true);
-
-               //serialize and read again
-               ByteArrayOutputStream out = new ByteArrayOutputStream();
-               wb.write(out);
-               out.close();
-
-               wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
-               assertTrue("No Exceptions while reading file", true);
-
-           }
-           
-           /**
-            * Bug 41139: Constructing HSSFWorkbook is failed,threw threw ArrayIndexOutOfBoundsException for creating UnknownRecord
-            * 
-            * BUT NOW (Jan07): It throws the following in write!!
-            * java.lang.RuntimeException: Coding Error: This method should never be called. This ptg should be converted
-         at org.apache.poi.hssf.record.formula.AreaNPtg.writeBytes(AreaNPtg.java:54)
-         at org.apache.poi.hssf.record.formula.Ptg.serializePtgStack(Ptg.java:384)
-         at org.apache.poi.hssf.record.NameRecord.serialize(NameRecord.java:544)
-         at org.apache.poi.hssf.model.Workbook.serialize(Workbook.java:757)
-         at org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:952)
-         at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:898)
-
-            */
-           public void test41139() throws Exception {
-               FileInputStream in = new FileInputStream(new File(cwd, "41139.xls"));
-               HSSFWorkbook wb = new HSSFWorkbook(in);
-               in.close();
-
-               assertTrue("No Exceptions while reading file", true);
-
-               //serialize and read again
-               ByteArrayOutputStream out = new ByteArrayOutputStream();
-               wb.write(out);
-               out.close();
-
-               wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
-               assertTrue("No Exceptions while reading file", true);
 
-           }
-           
-           public void test43493() throws Exception {
-               // Has crazy corrup subrecords on
-               //  a EmbeddedObjectRefSubRecord
-               File f = new File(cwd, "43493.xls");
-               HSSFWorkbook wb = new HSSFWorkbook(
-                               new FileInputStream(f)
-               );
-           }
+    public void test43493() throws Exception {
+        // Has crazy corrup subrecords on
+        //  a EmbeddedObjectRefSubRecord
+        File f = new File(cwd, "43493.xls");
+        HSSFWorkbook wb = new HSSFWorkbook(
+                new FileInputStream(f)
+        );
+    }
 }