From 0fcc9507a736a7ec5ff1804ba3aef71d74d7fa8a Mon Sep 17 00:00:00 2001 From: Avik Sengupta Date: Thu, 20 Mar 2003 20:01:17 +0000 Subject: [PATCH] Add clone() to FormulaRecordAggregate Original patch supplied by Henning Boeger Changed to make it deeper clone, added clone to StringRecord in the process Also added a test. git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353033 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/poi/hssf/record/StringRecord.java | 9 +++++ .../aggregates/FormulaRecordAggregate.java | 8 +++++ .../TestFormulaRecordAggregate.java | 34 +++++++++++++++++++ 3 files changed, 51 insertions(+) create mode 100644 src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java diff --git a/src/java/org/apache/poi/hssf/record/StringRecord.java b/src/java/org/apache/poi/hssf/record/StringRecord.java index c551997d7..6b6cdea24 100644 --- a/src/java/org/apache/poi/hssf/record/StringRecord.java +++ b/src/java/org/apache/poi/hssf/record/StringRecord.java @@ -237,5 +237,14 @@ public class StringRecord buffer.append("[/STRING]\n"); return buffer.toString(); } + + public Object clone() { + StringRecord rec = new StringRecord(); + rec.field_1_string_length = this.field_1_string_length; + rec.field_2_unicode_flag= this.field_2_unicode_flag; + rec.field_3_string = this.field_3_string; + return rec; + + } } diff --git a/src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java b/src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java index dd96a5194..6e332254c 100644 --- a/src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java +++ b/src/java/org/apache/poi/hssf/record/aggregates/FormulaRecordAggregate.java @@ -205,6 +205,14 @@ public class FormulaRecordAggregate { return formulaRecord.toString(); } + + /** + * @see java.lang.Object#clone() + */ + public Object clone() { + return new FormulaRecordAggregate((FormulaRecord) this.formulaRecord.clone(), (StringRecord) this.stringRecord.clone()); + } + } diff --git a/src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java b/src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java new file mode 100644 index 000000000..23a368934 --- /dev/null +++ b/src/testcases/org/apache/poi/hssf/record/aggregates/TestFormulaRecordAggregate.java @@ -0,0 +1,34 @@ +/* + * TestFormulaRecordAggregate.java + * + * Created on March 21, 2003, 12:32 AM + */ + +package org.apache.poi.hssf.record.aggregates; +import org.apache.poi.hssf.record.FormulaRecord; +import org.apache.poi.hssf.record.StringRecord; + +/** + * + * @author avik + */ +public class TestFormulaRecordAggregate extends junit.framework.TestCase { + + /** Creates a new instance of TestFormulaRecordAggregate */ + public TestFormulaRecordAggregate(String arg) { + super(arg); + } + + public void testClone() { + FormulaRecord f = new FormulaRecord(); + StringRecord s = new StringRecord(); + FormulaRecordAggregate fagg = new FormulaRecordAggregate(f,s); + FormulaRecordAggregate newFagg = (FormulaRecordAggregate) fagg.clone(); + assertTrue("objects are different", fagg!=newFagg); + assertTrue("deep clone", fagg.getFormulaRecord() != newFagg.getFormulaRecord()); + assertTrue("deep clone", fagg.getStringRecord() != newFagg.getStringRecord()); + + + } + +}