You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by ye...@apache.org on 2008/01/10 19:04:41 UTC

svn commit: r610855 - in /poi/trunk/src: documentation/content/xdocs/ java/org/apache/poi/hssf/record/ testcases/org/apache/poi/hssf/data/ testcases/org/apache/poi/hssf/record/ testcases/org/apache/poi/hssf/usermodel/

Author: yegor
Date: Thu Jan 10 10:04:38 2008
New Revision: 610855

URL: http://svn.apache.org/viewvc?rev=610855&view=rev
Log:
fixed bug 44200: Sheet not cloneable when Note added to excel cell

Added:
    poi/trunk/src/testcases/org/apache/poi/hssf/data/44200.xls   (with props)
Modified:
    poi/trunk/src/documentation/content/xdocs/changes.xml
    poi/trunk/src/documentation/content/xdocs/status.xml
    poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java
    poi/trunk/src/java/org/apache/poi/hssf/record/NoteStructureSubRecord.java
    poi/trunk/src/java/org/apache/poi/hssf/record/TextObjectRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java
    poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java

Modified: poi/trunk/src/documentation/content/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/changes.xml?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/changes.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/changes.xml Thu Jan 10 10:04:38 2008
@@ -36,6 +36,7 @@
 
 		<!-- Don't forget to update status.xml too! -->
         <release version="3.0.2-FINAL" date="2008-??-??">
+            <action dev="POI-DEVELOPERS" type="fix">44200 - Enable cloning of sheets with notes </action>
             <action dev="POI-DEVELOPERS" type="add">43008 - Add a moveCell method to HSSFRow, and deprecate setCellNum(), which didn't update things properly</action>
             <action dev="POI-DEVELOPERS" type="fix">43058 - Support setting row grouping on files from CR IX, which lack GutsRecords</action>
             <action dev="POI-DEVELOPERS" type="fix">31795 - Support cloning of sheets with certain drawing objects on them</action>

Modified: poi/trunk/src/documentation/content/xdocs/status.xml
URL: http://svn.apache.org/viewvc/poi/trunk/src/documentation/content/xdocs/status.xml?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/documentation/content/xdocs/status.xml (original)
+++ poi/trunk/src/documentation/content/xdocs/status.xml Thu Jan 10 10:04:38 2008
@@ -33,6 +33,7 @@
 	<!-- Don't forget to update changes.xml too! -->
     <changes>
         <release version="3.0.2-FINAL" date="2008-??-??">
+            <action dev="POI-DEVELOPERS" type="fix">44200 - Enable cloning of sheets with notes </action>
             <action dev="POI-DEVELOPERS" type="add">43008 - Add a moveCell method to HSSFRow, and deprecate setCellNum(), which didn't update things properly</action>
             <action dev="POI-DEVELOPERS" type="fix">43058 - Support setting row grouping on files from CR IX, which lack GutsRecords</action>
             <action dev="POI-DEVELOPERS" type="fix">31795 - Support cloning of sheets with certain drawing objects on them</action>

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/NoteRecord.java Thu Jan 10 10:04:38 2008
@@ -243,4 +243,15 @@
     public void setAuthor(String author){
         field_5_author = author;
     }
+
+    public Object clone() {
+        NoteRecord rec = new NoteRecord();
+        rec.field_1_row = field_1_row;
+        rec.field_2_col = field_2_col;
+        rec.field_3_flags = field_3_flags;
+        rec.field_4_shapeid = field_4_shapeid;
+        rec.field_5_author = field_5_author;
+        return rec;
+    }
+
 }

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/NoteStructureSubRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/NoteStructureSubRecord.java?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/NoteStructureSubRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/NoteStructureSubRecord.java Thu Jan 10 10:04:38 2008
@@ -125,6 +125,15 @@
     {
         return sid;
     }
+
+    public Object clone() {
+        NoteStructureSubRecord rec = new NoteStructureSubRecord();
+        byte[] recdata = new byte[reserved.length];
+        System.arraycopy(reserved, 0, recdata, 0, recdata.length);
+        rec.reserved = recdata;
+        return rec;
+    }
+
 }
 
 

Modified: poi/trunk/src/java/org/apache/poi/hssf/record/TextObjectRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/java/org/apache/poi/hssf/record/TextObjectRecord.java?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/java/org/apache/poi/hssf/record/TextObjectRecord.java (original)
+++ poi/trunk/src/java/org/apache/poi/hssf/record/TextObjectRecord.java Thu Jan 10 10:04:38 2008
@@ -251,4 +251,21 @@
         buffer.append( "[/TXO]\n" );
         return buffer.toString();
     }
+
+    public Object clone() {
+
+        TextObjectRecord rec = new TextObjectRecord();
+        rec.str = str;
+
+        rec.setOptions(getOptions());
+        rec.setTextOrientation(getTextOrientation());
+        rec.setReserved4(getReserved4());
+        rec.setReserved5(getReserved5());
+        rec.setReserved6(getReserved6());
+        rec.setTextLength(getTextLength());
+        rec.setFormattingRunLength(getFormattingRunLength());
+        rec.setReserved7(getReserved7());
+        return rec;
+    }
+
 }

Added: poi/trunk/src/testcases/org/apache/poi/hssf/data/44200.xls
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/data/44200.xls?rev=610855&view=auto
==============================================================================
Binary file - no diff available.

Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/data/44200.xls
------------------------------------------------------------------------------
    svn:executable = *

Propchange: poi/trunk/src/testcases/org/apache/poi/hssf/data/44200.xls
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/data/TestDataValidation.xls?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
Binary files - no diff available.

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteRecord.java Thu Jan 10 10:04:38 2008
@@ -79,4 +79,27 @@
         System.arraycopy(ser, 4, recdata, 0, recdata.length);
         assertTrue(Arrays.equals(data, recdata));
     }
+
+    public void testClone()
+    {
+        NoteRecord record = new NoteRecord();
+
+        record.setRow((short)1);
+        record.setColumn((short)2);
+        record.setFlags(NoteRecord.NOTE_VISIBLE);
+        record.setShapeId((short)1026);
+        record.setAuthor("Apache Software Foundation");
+
+        NoteRecord cloned = (NoteRecord)record.clone();
+        assertEquals(record.getRow(), cloned.getRow());
+        assertEquals(record.getColumn(), cloned.getColumn());
+        assertEquals(record.getFlags(), cloned.getFlags());
+        assertEquals(record.getShapeId(), cloned.getShapeId());
+        assertEquals(record.getAuthor(), cloned.getAuthor());
+
+        //finally check that the serialized data is the same
+        byte[] src = record.serialize();
+        byte[] cln = cloned.serialize();
+        assertTrue(Arrays.equals(src, cln));
+    }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestNoteStructureSubRecord.java Thu Jan 10 10:04:38 2008
@@ -65,4 +65,16 @@
         assertEquals(ser.length - 4, data.length);
 
     }
+
+    public void testClone()
+    {
+        NoteStructureSubRecord record = new NoteStructureSubRecord();
+        byte[] src = record.serialize();
+
+        NoteStructureSubRecord cloned = (NoteStructureSubRecord)record.clone();
+        byte[] cln = cloned.serialize();
+
+        assertEquals(record.getRecordSize(), cloned.getRecordSize());
+        assertTrue(Arrays.equals(src, cln));
+    }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/record/TestTextObjectRecord.java Thu Jan 10 10:04:38 2008
@@ -117,4 +117,44 @@
         }
 
     }
+
+    /**
+     * Test cloning
+     */
+    public void testClone() {
+        String text = "Hello, World";
+        HSSFRichTextString str = new HSSFRichTextString(text);
+
+        TextObjectRecord obj = new TextObjectRecord();
+        int frLength = ( str.numFormattingRuns() + 1 ) * 8;
+        obj.setFormattingRunLength( (short) frLength );
+        obj.setTextLength( (short) str.length() );
+        obj.setReserved1(true);
+        obj.setReserved2((short)2);
+        obj.setReserved3((short)3);
+        obj.setReserved4((short)4);
+        obj.setReserved5((short)5);
+        obj.setReserved6((short)6);
+        obj.setReserved7((short)7);
+        obj.setStr( str );
+
+
+        TextObjectRecord cloned = (TextObjectRecord)obj.clone();
+        assertEquals(obj.getReserved2(), cloned.getReserved2());
+        assertEquals(obj.getReserved3(), cloned.getReserved3());
+        assertEquals(obj.getReserved4(), cloned.getReserved4());
+        assertEquals(obj.getReserved5(), cloned.getReserved5());
+        assertEquals(obj.getReserved6(), cloned.getReserved6());
+        assertEquals(obj.getReserved7(), cloned.getReserved7());
+        assertEquals(obj.getRecordSize(), cloned.getRecordSize());
+        assertEquals(obj.getOptions(), cloned.getOptions());
+        assertEquals(obj.getHorizontalTextAlignment(), cloned.getHorizontalTextAlignment());
+        assertEquals(obj.getFormattingRunLength(), cloned.getFormattingRunLength());
+        assertEquals(obj.getStr().getString(), cloned.getStr().getString());
+
+        //finally check that the serialized data is the same
+        byte[] src = obj.serialize();
+        byte[] cln = cloned.serialize();
+        assertTrue(Arrays.equals(src, cln));
+    }
 }

Modified: poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java
URL: http://svn.apache.org/viewvc/poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java?rev=610855&r1=610854&r2=610855&view=diff
==============================================================================
--- poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java (original)
+++ poi/trunk/src/testcases/org/apache/poi/hssf/usermodel/TestBugs.java Thu Jan 10 10:04:38 2008
@@ -913,7 +913,27 @@
 
     }
 
-    
+    /**
+     * Bug 44200: Sheet not cloneable when Note added to excel cell
+     */
+    public void test44200() throws Exception {
+        FileInputStream in = new FileInputStream(new File(cwd, "44200.xls"));
+        HSSFWorkbook wb = new HSSFWorkbook(in);
+        in.close();
+
+        wb.cloneSheet(0);
+        assertTrue("No Exceptions while cloning sheet", 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);
+
+    }
+
 }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org