You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@poi.apache.org by av...@apache.org on 2003/03/01 15:27:44 UTC
cvs commit: jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel TestCloneSheet.java
avik 2003/03/01 06:27:43
Modified: src/java/org/apache/poi/hssf/model Sheet.java
src/java/org/apache/poi/hssf/record BottomMarginRecord.java
ColumnInfoRecord.java LeftMarginRecord.java
MergeCellsRecord.java ProtectRecord.java
RightMarginRecord.java TopMarginRecord.java
Added: src/testcases/org/apache/poi/hssf/usermodel
TestCloneSheet.java
Log:
fixed clone sheet bug. Thanks to:
Alessandro Vernet for a patch thats part of this commit
Toshiaki Kamoshida for a testcase and lots of debugging
Dennis Doubleday & Henning Boeger for reporting the bugs
Jason Height who wrote cloneSheet in the first place.
Sorry it took so long to patch.
Revision Changes Path
1.26 +4 -0 jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java
Index: Sheet.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java,v
retrieving revision 1.25
retrieving revision 1.26
diff -u -r1.25 -r1.26
--- Sheet.java 21 Feb 2003 15:59:58 -0000 1.25
+++ Sheet.java 1 Mar 2003 14:27:42 -0000 1.26
@@ -283,6 +283,10 @@
/**
* Clones the low level records of this sheet and returns the new sheet instance.
+ * This method is implemented by adding methods for deep cloning to all records that
+ * can be added to a sheet. The <b>Record</b> object does not implement cloneable.
+ * When adding a new record, implement a public clone method if and only if the record
+ * belongs to a sheet.
*/
public Sheet cloneSheet()
{
1.3 +6 -0 jakarta-poi/src/java/org/apache/poi/hssf/record/BottomMarginRecord.java
Index: BottomMarginRecord.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/BottomMarginRecord.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- BottomMarginRecord.java 5 Oct 2002 02:38:06 -0000 1.2
+++ BottomMarginRecord.java 1 Mar 2003 14:27:43 -0000 1.3
@@ -177,6 +177,12 @@
{
this.field_1_margin = field_1_margin;
}
+
+ public Object clone() {
+ BottomMarginRecord rec = new BottomMarginRecord();
+ rec.field_1_margin = this.field_1_margin;
+ return rec;
+ }
} // END OF CLASS
1.3 +11 -0 jakarta-poi/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java
Index: ColumnInfoRecord.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/ColumnInfoRecord.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ColumnInfoRecord.java 11 Feb 2002 03:49:39 -0000 1.2
+++ ColumnInfoRecord.java 1 Mar 2003 14:27:43 -0000 1.3
@@ -355,4 +355,15 @@
buffer.append("[/COLINFO]\n");
return buffer.toString();
}
+
+ public Object clone() {
+ ColumnInfoRecord rec = new ColumnInfoRecord();
+ rec.field_1_first_col = field_1_first_col;
+ rec.field_2_last_col = field_2_last_col;
+ rec.field_3_col_width = field_3_col_width;
+ rec.field_4_xf_index = field_4_xf_index;
+ rec.field_5_options = field_5_options;
+ rec.field_6_reserved = field_6_reserved;
+ return rec;
+ }
}
1.3 +6 -1 jakarta-poi/src/java/org/apache/poi/hssf/record/LeftMarginRecord.java
Index: LeftMarginRecord.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/LeftMarginRecord.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LeftMarginRecord.java 5 Oct 2002 02:38:07 -0000 1.2
+++ LeftMarginRecord.java 1 Mar 2003 14:27:43 -0000 1.3
@@ -178,7 +178,12 @@
this.field_1_margin = field_1_margin;
}
-
+ public Object clone() {
+ LeftMarginRecord rec = new LeftMarginRecord();
+ rec.field_1_margin = this.field_1_margin;
+ return rec;
+ }
+
} // END OF CLASS
1.5 +7 -0 jakarta-poi/src/java/org/apache/poi/hssf/record/MergeCellsRecord.java
Index: MergeCellsRecord.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/MergeCellsRecord.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- MergeCellsRecord.java 10 May 2002 03:01:10 -0000 1.4
+++ MergeCellsRecord.java 1 Mar 2003 14:27:43 -0000 1.5
@@ -322,4 +322,11 @@
public short col_to;
}
+
+ public Object clone() {
+ MergeCellsRecord rec = new MergeCellsRecord();
+ rec.field_1_num_areas = field_1_num_areas;
+ rec.field_2_regions = field_2_regions;
+ return rec;
+ }
}
1.4 +6 -0 jakarta-poi/src/java/org/apache/poi/hssf/record/ProtectRecord.java
Index: ProtectRecord.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/ProtectRecord.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ProtectRecord.java 16 Dec 2002 11:16:41 -0000 1.3
+++ ProtectRecord.java 1 Mar 2003 14:27:43 -0000 1.4
@@ -173,4 +173,10 @@
{
return this.sid;
}
+
+ public Object clone() {
+ ProtectRecord rec = new ProtectRecord();
+ rec.field_1_protect = field_1_protect;
+ return rec;
+ }
}
1.3 +5 -1 jakarta-poi/src/java/org/apache/poi/hssf/record/RightMarginRecord.java
Index: RightMarginRecord.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/RightMarginRecord.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- RightMarginRecord.java 5 Oct 2002 02:38:07 -0000 1.2
+++ RightMarginRecord.java 1 Mar 2003 14:27:43 -0000 1.3
@@ -178,7 +178,11 @@
this.field_1_margin = field_1_margin;
}
-
+ public Object clone() {
+ RightMarginRecord rec = new RightMarginRecord();
+ rec.field_1_margin = this.field_1_margin;
+ return rec;
+ }
} // END OF CLASS
1.3 +5 -1 jakarta-poi/src/java/org/apache/poi/hssf/record/TopMarginRecord.java
Index: TopMarginRecord.java
===================================================================
RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/TopMarginRecord.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TopMarginRecord.java 5 Oct 2002 02:38:07 -0000 1.2
+++ TopMarginRecord.java 1 Mar 2003 14:27:43 -0000 1.3
@@ -178,7 +178,11 @@
this.field_1_margin = field_1_margin;
}
-
+ public Object clone() {
+ TopMarginRecord rec = new TopMarginRecord();
+ rec.field_1_margin = this.field_1_margin;
+ return rec;
+ }
} // END OF CLASS
1.1 jakarta-poi/src/testcases/org/apache/poi/hssf/usermodel/TestCloneSheet.java
Index: TestCloneSheet.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache POI" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache POI", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.poi.hssf.usermodel;
import junit.framework.TestCase;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.Region;
/**
* Test the ability to clone a sheet.
* If adding new records that belong to a sheet (as opposed to a book)
* add that record to the sheet in the testCloneSheetBasic method.
* @author avik
*/
public class TestCloneSheet extends TestCase {
public TestCloneSheet(String arg0) {
super(arg0);
}
public void testCloneSheetBasic(){
try{
HSSFWorkbook b = new HSSFWorkbook();
HSSFSheet s = b.createSheet("Test");
s.addMergedRegion(new Region((short)0,(short)0,(short)1,(short)1));
b.cloneSheet(0);
}
catch(Exception e){fail(e.getMessage());}
}
}