]> source.dussan.org Git - poi.git/commitdiff
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11721 clone for sheets
authorAndrew C. Oliver <acoliver@apache.org>
Thu, 5 Sep 2002 00:26:28 +0000 (00:26 +0000)
committerAndrew C. Oliver <acoliver@apache.org>
Thu, 5 Sep 2002 00:26:28 +0000 (00:26 +0000)
PR:
Obtained from:
Submitted by:
Reviewed by:

git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352836 13f79535-47bb-0310-9956-ffa450edef68

101 files changed:
src/java/org/apache/poi/hssf/model/Sheet.java
src/java/org/apache/poi/hssf/record/AreaFormatRecord.java
src/java/org/apache/poi/hssf/record/AreaRecord.java
src/java/org/apache/poi/hssf/record/AxisLineFormatRecord.java
src/java/org/apache/poi/hssf/record/AxisOptionsRecord.java
src/java/org/apache/poi/hssf/record/AxisParentRecord.java
src/java/org/apache/poi/hssf/record/AxisRecord.java
src/java/org/apache/poi/hssf/record/AxisUsedRecord.java
src/java/org/apache/poi/hssf/record/BOFRecord.java
src/java/org/apache/poi/hssf/record/BarRecord.java
src/java/org/apache/poi/hssf/record/BlankRecord.java
src/java/org/apache/poi/hssf/record/BoolErrRecord.java
src/java/org/apache/poi/hssf/record/CalcCountRecord.java
src/java/org/apache/poi/hssf/record/CalcModeRecord.java
src/java/org/apache/poi/hssf/record/CategorySeriesAxisRecord.java
src/java/org/apache/poi/hssf/record/CellValueRecordInterface.java
src/java/org/apache/poi/hssf/record/ChartRecord.java
src/java/org/apache/poi/hssf/record/DatRecord.java
src/java/org/apache/poi/hssf/record/DataFormatRecord.java
src/java/org/apache/poi/hssf/record/DefaultColWidthRecord.java
src/java/org/apache/poi/hssf/record/DefaultDataLabelTextPropertiesRecord.java
src/java/org/apache/poi/hssf/record/DefaultRowHeightRecord.java
src/java/org/apache/poi/hssf/record/DeltaRecord.java
src/java/org/apache/poi/hssf/record/DimensionsRecord.java
src/java/org/apache/poi/hssf/record/EOFRecord.java
src/java/org/apache/poi/hssf/record/FontBasisRecord.java
src/java/org/apache/poi/hssf/record/FontIndexRecord.java
src/java/org/apache/poi/hssf/record/FooterRecord.java
src/java/org/apache/poi/hssf/record/FormulaRecord.java
src/java/org/apache/poi/hssf/record/FrameRecord.java
src/java/org/apache/poi/hssf/record/GridsetRecord.java
src/java/org/apache/poi/hssf/record/GutsRecord.java
src/java/org/apache/poi/hssf/record/HCenterRecord.java
src/java/org/apache/poi/hssf/record/HeaderRecord.java
src/java/org/apache/poi/hssf/record/IndexRecord.java
src/java/org/apache/poi/hssf/record/IterationRecord.java
src/java/org/apache/poi/hssf/record/LabelRecord.java
src/java/org/apache/poi/hssf/record/LabelSSTRecord.java
src/java/org/apache/poi/hssf/record/LegendRecord.java
src/java/org/apache/poi/hssf/record/LineFormatRecord.java
src/java/org/apache/poi/hssf/record/LinkedDataRecord.java
src/java/org/apache/poi/hssf/record/NumberFormatIndexRecord.java
src/java/org/apache/poi/hssf/record/NumberRecord.java
src/java/org/apache/poi/hssf/record/ObjectLinkRecord.java
src/java/org/apache/poi/hssf/record/PlotAreaRecord.java
src/java/org/apache/poi/hssf/record/PlotGrowthRecord.java
src/java/org/apache/poi/hssf/record/PrintGridlinesRecord.java
src/java/org/apache/poi/hssf/record/PrintHeadersRecord.java
src/java/org/apache/poi/hssf/record/PrintSetupRecord.java
src/java/org/apache/poi/hssf/record/RKRecord.java
src/java/org/apache/poi/hssf/record/Record.java
src/java/org/apache/poi/hssf/record/RefModeRecord.java
src/java/org/apache/poi/hssf/record/RowRecord.java
src/java/org/apache/poi/hssf/record/SCLRecord.java
src/java/org/apache/poi/hssf/record/SaveRecalcRecord.java
src/java/org/apache/poi/hssf/record/SelectionRecord.java
src/java/org/apache/poi/hssf/record/SeriesChartGroupIndexRecord.java
src/java/org/apache/poi/hssf/record/SeriesIndexRecord.java
src/java/org/apache/poi/hssf/record/SeriesLabelsRecord.java
src/java/org/apache/poi/hssf/record/SeriesListRecord.java
src/java/org/apache/poi/hssf/record/SeriesRecord.java
src/java/org/apache/poi/hssf/record/SeriesTextRecord.java
src/java/org/apache/poi/hssf/record/SeriesToChartGroupRecord.java
src/java/org/apache/poi/hssf/record/SheetPropertiesRecord.java
src/java/org/apache/poi/hssf/record/TextRecord.java
src/java/org/apache/poi/hssf/record/TickRecord.java
src/java/org/apache/poi/hssf/record/UnitsRecord.java
src/java/org/apache/poi/hssf/record/UnknownRecord.java
src/java/org/apache/poi/hssf/record/VCenterRecord.java
src/java/org/apache/poi/hssf/record/WSBoolRecord.java
src/java/org/apache/poi/hssf/record/WindowTwoRecord.java
src/java/org/apache/poi/hssf/record/aggregates/RowRecordsAggregate.java
src/java/org/apache/poi/hssf/record/aggregates/ValueRecordsAggregate.java
src/java/org/apache/poi/hssf/record/formula/AddPtg.java
src/java/org/apache/poi/hssf/record/formula/Area3DPtg.java
src/java/org/apache/poi/hssf/record/formula/AreaPtg.java
src/java/org/apache/poi/hssf/record/formula/AttrPtg.java
src/java/org/apache/poi/hssf/record/formula/ConcatPtg.java
src/java/org/apache/poi/hssf/record/formula/DividePtg.java
src/java/org/apache/poi/hssf/record/formula/EqualPtg.java
src/java/org/apache/poi/hssf/record/formula/ExpPtg.java
src/java/org/apache/poi/hssf/record/formula/FuncPtg.java
src/java/org/apache/poi/hssf/record/formula/FuncVarPtg.java
src/java/org/apache/poi/hssf/record/formula/IntPtg.java
src/java/org/apache/poi/hssf/record/formula/MemErrPtg.java
src/java/org/apache/poi/hssf/record/formula/MissingArgPtg.java
src/java/org/apache/poi/hssf/record/formula/MultiplyPtg.java
src/java/org/apache/poi/hssf/record/formula/NamePtg.java
src/java/org/apache/poi/hssf/record/formula/NumberPtg.java
src/java/org/apache/poi/hssf/record/formula/ParenthesisPtg.java
src/java/org/apache/poi/hssf/record/formula/PowerPtg.java
src/java/org/apache/poi/hssf/record/formula/Ptg.java
src/java/org/apache/poi/hssf/record/formula/Ref3DPtg.java
src/java/org/apache/poi/hssf/record/formula/ReferencePtg.java
src/java/org/apache/poi/hssf/record/formula/StringPtg.java
src/java/org/apache/poi/hssf/record/formula/SubtractPtg.java
src/java/org/apache/poi/hssf/record/formula/UnknownPtg.java
src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java
src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java
src/records/styles/record.xsl
src/testcases/org/apache/poi/hssf/usermodel/TestHSSFSheet.java

index 0fc37939a8299063fdeab0a61bbc1b40c5a2d9e9..ff1ebab8e93f7fd52877b966c03bbf4004d89c34 100644 (file)
@@ -80,6 +80,7 @@ import org.apache.poi.hssf.record
  * @author  Andrew C. Oliver (acoliver at apache dot org)
  * @author  Glen Stampoultzis (glens at apache.org)
  * @author  Shawn Laubach (laubach at acm.org) Just Gridlines, Headers, Footers, and PrintSetup
+ * @author Jason Height (jheight at chariot dot net dot au) Clone support
  *
  * @see org.apache.poi.hssf.model.Workbook
  * @see org.apache.poi.hssf.usermodel.HSSFSheet
@@ -271,6 +272,46 @@ public class Sheet
         return retval;
     }
 
+    /**
+     * Clones the low level records of this sheet and returns the new sheet instance.
+     */
+    public Sheet cloneSheet()
+    {
+      ArrayList clonedRecords = new ArrayList(this.records.size());
+      for (int i=0; i<this.records.size();i++) {
+        Record rec = (Record)((Record)this.records.get(i)).clone();
+        //Need to pull out the Row record and the Value records from their
+        //Aggregates.
+        //This is probably the best way to do it since we probably dont want the createSheet
+        //To cater for these artificial Record types
+        if (rec instanceof RowRecordsAggregate) {
+          RowRecordsAggregate rrAgg = (RowRecordsAggregate)rec;
+          for (Iterator rowIter = rrAgg.getIterator();rowIter.hasNext();) {
+            Record rowRec = (Record)rowIter.next();
+            clonedRecords.add(rowRec);
+          }
+        } else if (rec instanceof ValueRecordsAggregate) {
+          ValueRecordsAggregate vrAgg = (ValueRecordsAggregate)rec;
+          for (Iterator cellIter = vrAgg.getIterator();cellIter.hasNext();) {
+            Record valRec = (Record)cellIter.next();
+            clonedRecords.add(valRec);
+          }
+        } else if (rec instanceof FormulaRecordAggregate) {
+          FormulaRecordAggregate fmAgg = (FormulaRecordAggregate)rec;
+          Record fmAggRec = fmAgg.getFormulaRecord();
+          if (fmAggRec != null)
+            clonedRecords.add(fmAggRec);
+          fmAggRec =   fmAgg.getStringRecord();
+          if (fmAggRec != null)
+            clonedRecords.add(fmAggRec);
+        } else {
+          clonedRecords.add(rec);
+        }
+      }
+      return createSheet(clonedRecords, 0, 0);
+    }
+
+
     /**
      * read support  (offset = 0) Same as createSheet(Record[] recs, int, int)
      * only the record offset is assumed to be 0.
index 0ac1e9e4fe7d7040214cafbf648e075855d0567d..2ae1bc6daa085a4db32bca4b44359757982ce48d 100644 (file)
@@ -209,6 +209,19 @@ public class AreaFormatRecord
         return this.sid;
     }
 
+    public Object clone() {
+      AreaFormatRecord rec = new AreaFormatRecord();
+      
+      rec.field_1_foregroundColor = field_1_foregroundColor;
+      rec.field_2_backgroundColor = field_2_backgroundColor;
+      rec.field_3_pattern = field_3_pattern;
+      rec.field_4_formatFlags = field_4_formatFlags;
+      rec.field_5_forecolorIndex = field_5_forecolorIndex;
+      rec.field_6_backcolorIndex = field_6_backcolorIndex;
+
+      return rec;
+    }
+
 
     /**
      * Get the foreground color field for the AreaFormat record.
index 1d732644da3637589f5d5ce8eb54efc9622a9570..d8aac6f2ddab757d1b5b405a8063d2295f10eb9d 100644 (file)
@@ -171,6 +171,14 @@ public class AreaRecord
         return this.sid;
     }
 
+    public Object clone() {
+      AreaRecord rec = new AreaRecord();
+      
+      rec.field_1_formatFlags = field_1_formatFlags;
+
+      return rec;
+    }
+
 
     /**
      * Get the format flags field for the Area record.
index 7d0e765d23af71793a9d4b05993a22e647f23ee1..79dadd2327fda9f55e9f552d91fa41a8f1d5a67e 100644 (file)
@@ -169,6 +169,14 @@ public class AxisLineFormatRecord
         return this.sid;
     }
 
+    public Object clone() {
+      AxisLineFormatRecord rec = new AxisLineFormatRecord();
+      
+      rec.field_1_axisType = field_1_axisType;
+
+      return rec;
+    }
+
 
     /**
      * Get the axis type field for the AxisLineFormat record.
index ab5c8ab660dfec35c7da2112c87f5aec1cebf72a..5bd2565a09235fe4c379ed91c6d7ab8976a77bb9 100644 (file)
@@ -245,6 +245,22 @@ public class AxisOptionsRecord
         return this.sid;
     }
 
+    public Object clone() {
+      AxisOptionsRecord rec = new AxisOptionsRecord();
+      
+      rec.field_1_minimumCategory = field_1_minimumCategory;
+      rec.field_2_maximumCategory = field_2_maximumCategory;
+      rec.field_3_majorUnitValue = field_3_majorUnitValue;
+      rec.field_4_majorUnit = field_4_majorUnit;
+      rec.field_5_minorUnitValue = field_5_minorUnitValue;
+      rec.field_6_minorUnit = field_6_minorUnit;
+      rec.field_7_baseUnit = field_7_baseUnit;
+      rec.field_8_crossingPoint = field_8_crossingPoint;
+      rec.field_9_options = field_9_options;
+
+      return rec;
+    }
+
 
     /**
      * Get the minimum category field for the AxisOptions record.
index 6dee0a25a29869aa1a8e41cb0c67f4ccd3123ea9..7f40d61dc31511696ab8b50f4df4c679e521aead 100644 (file)
@@ -199,6 +199,18 @@ public class AxisParentRecord
         return this.sid;
     }
 
+    public Object clone() {
+      AxisParentRecord rec = new AxisParentRecord();
+      
+      rec.field_1_axisType = field_1_axisType;
+      rec.field_2_x = field_2_x;
+      rec.field_3_y = field_3_y;
+      rec.field_4_width = field_4_width;
+      rec.field_5_height = field_5_height;
+
+      return rec;
+    }
+
 
     /**
      * Get the axis type field for the AxisParent record.
index f36612934e69432a73593603cbe9bed183e24815..432c92e3e40b2435239c778f0149ca613b54c616 100644 (file)
@@ -200,6 +200,18 @@ public class AxisRecord
         return this.sid;
     }
 
+    public Object clone() {
+      AxisRecord rec = new AxisRecord();
+      
+      rec.field_1_axisType = field_1_axisType;
+      rec.field_2_reserved1 = field_2_reserved1;
+      rec.field_3_reserved2 = field_3_reserved2;
+      rec.field_4_reserved3 = field_4_reserved3;
+      rec.field_5_reserved4 = field_5_reserved4;
+
+      return rec;
+    }
+
 
     /**
      * Get the axis type field for the Axis record.
index b7f84de6de16a20e0611197506d13e25ed21b2e4..c91b98eeb83269cdb480ee2b47db5570557e781f 100644 (file)
@@ -165,6 +165,14 @@ public class AxisUsedRecord
         return this.sid;
     }
 
+    public Object clone() {
+      AxisUsedRecord rec = new AxisUsedRecord();
+      
+      rec.field_1_numAxis = field_1_numAxis;
+
+      return rec;
+    }
+
 
     /**
      * Get the num axis field for the AxisUsed record.
index b98e697fab01aa7233318a66ead1eb3c31b5cfb1..063e7d2330cedb620c4ad739ee456a599d41675d 100644 (file)
@@ -64,6 +64,7 @@ import org.apache.poi.util.LittleEndian;
  *              Used in sheets and workbooks.<P>
  * REFERENCE:  PG 289 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -358,4 +359,15 @@ public class BOFRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      BOFRecord rec = new BOFRecord();
+      rec.field_1_version = field_1_version;
+      rec.field_2_type = field_2_type;
+      rec.field_3_build = field_3_build;
+      rec.field_4_year = field_4_year;
+      rec.field_5_history = field_5_history;
+      rec.field_6_rversion = field_6_rversion;
+      return rec;
+    }
 }
index 89df90b74b7cfc21b97e363e9242888d372ae80f..15af1397135863885d272a816da04487e08bc273 100644 (file)
@@ -190,6 +190,16 @@ public class BarRecord
         return this.sid;
     }
 
+    public Object clone() {
+      BarRecord rec = new BarRecord();
+      
+      rec.field_1_barSpace = field_1_barSpace;
+      rec.field_2_categorySpace = field_2_categorySpace;
+      rec.field_3_formatFlags = field_3_formatFlags;
+
+      return rec;
+    }
+
 
     /**
      * Get the bar space field for the Bar record.
index 88213623b8133156a54a964a5ee970a3daf7c9a7..b2889bfa5826f9f6704de395da613cd21164dc5f 100644 (file)
@@ -67,6 +67,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  Represents a column in a row with no value but with styling.<P>
  * REFERENCE:  PG 287 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -349,4 +350,12 @@ public class BlankRecord
         }
         return false;
     }
+
+    public Object clone() {
+      BlankRecord rec = new BlankRecord();
+      rec.field_1_row = field_1_row;
+      rec.field_2_col = field_2_col;
+      rec.field_3_xf = field_3_xf;
+      return rec;
+    }
 }
index 78f1cd0229a7e21b7b0238f4f259a36223656718..fff9cdd448767e16764d4c96cbfebef9fd174f18 100644 (file)
@@ -66,6 +66,7 @@ import org.apache.poi.util.LittleEndian;
  * Creates new BoolErrRecord. <P>
  * REFERENCE:  PG ??? Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Michael P. Harhen
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -413,4 +414,14 @@ public class BoolErrRecord
         }
         return false;
     }
+
+    public Object clone() {
+      BoolErrRecord rec = new BoolErrRecord();
+      rec.field_1_row = field_1_row;
+      rec.field_2_column = field_2_column;
+      rec.field_3_xf_index = field_3_xf_index;
+      rec.field_4_bBoolErr = field_4_bBoolErr;
+      rec.field_5_fError = field_5_fError;
+      return rec;
+    }
 }
index bee2522a027e6b82b4e60c3dfe24e210f48e4efc..a67d464db77fcc59e9d4ad6da6c4213a80e296af 100644 (file)
@@ -66,6 +66,7 @@ import org.apache.poi.util.LittleEndian;
  *               loop in the event the formulas are not independant. <P>
  * REFERENCE:  PG 292 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  * @see org.apache.poi.hssf.record.CalcModeRecord
  */
@@ -169,4 +170,10 @@ public class CalcCountRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      CalcCountRecord rec = new CalcCountRecord();
+      rec.field_1_iterations = field_1_iterations;
+      return rec;
+    }
 }
index 46ab94231834af9ac3675011cbc59518b6b04ca0..2881114de200ac2dcb3717632f8f15f066696aff 100644 (file)
@@ -64,6 +64,7 @@ import org.apache.poi.util.LittleEndian;
  *               except for tables.<P>
  * REFERENCE:  PG 292 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  * @see org.apache.poi.hssf.record.CalcCountRecord
  */
@@ -194,4 +195,10 @@ public class CalcModeRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      CalcModeRecord rec = new CalcModeRecord();
+      rec.field_1_calcmode = field_1_calcmode;
+      return rec;
+    }
 }
index 38c853a8e0c4afdaf7d59c7fcb97b1ffc5883001..9459ffb93ce4a93b1ffd2570b0e73a8d99b258b5 100644 (file)
@@ -195,6 +195,17 @@ public class CategorySeriesAxisRecord
         return this.sid;
     }
 
+    public Object clone() {
+      CategorySeriesAxisRecord rec = new CategorySeriesAxisRecord();
+      
+      rec.field_1_crossingPoint = field_1_crossingPoint;
+      rec.field_2_labelFrequency = field_2_labelFrequency;
+      rec.field_3_tickMarkFrequency = field_3_tickMarkFrequency;
+      rec.field_4_options = field_4_options;
+
+      return rec;
+    }
+
 
     /**
      * Get the crossing point field for the CategorySeriesAxis record.
index 91759df6d2fce7e009899dd39b9d652fe7f12a23..500d1891cc530cb62c0260649fda441d513ec91a 100644 (file)
@@ -66,6 +66,7 @@ package org.apache.poi.hssf.record;
  * them.
  *
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  *
  * @see org.apache.poi.hssf.model.Sheet
  * @see org.apache.poi.hssf.record.Record
@@ -138,4 +139,6 @@ public interface CellValueRecordInterface
      */
 
     public boolean isEqual(CellValueRecordInterface i);
+
+    public Object clone();
 }
index 132e91b3b29547e13d02b1bb2dfab2897f4cae3d..87a876884c5019dcba325f44a16f9a7d1beaa1ee 100644 (file)
@@ -189,6 +189,17 @@ public class ChartRecord
         return this.sid;
     }
 
+    public Object clone() {
+      ChartRecord rec = new ChartRecord();
+      
+      rec.field_1_x = field_1_x;
+      rec.field_2_y = field_2_y;
+      rec.field_3_width = field_3_width;
+      rec.field_4_height = field_4_height;
+
+      return rec;
+    }
+
 
     /**
      * Get the x field for the Chart record.
index 52c283d3a8eb57c9694693c3bf22a17e49de894d..9203faae831d75b176b3f658c51f7448d3dfdb4a 100644 (file)
@@ -173,6 +173,14 @@ public class DatRecord
         return this.sid;
     }
 
+    public Object clone() {
+      DatRecord rec = new DatRecord();
+      
+      rec.field_1_options = field_1_options;
+
+      return rec;
+    }
+
 
     /**
      * Get the options field for the Dat record.
index ccbf0b8bcd50a16ed8b5fa8cf18413f487463c5f..ddd6a558dde12809bee84a38834915d46b1f6d71 100644 (file)
@@ -191,6 +191,17 @@ public class DataFormatRecord
         return this.sid;
     }
 
+    public Object clone() {
+      DataFormatRecord rec = new DataFormatRecord();
+      
+      rec.field_1_pointNumber = field_1_pointNumber;
+      rec.field_2_seriesIndex = field_2_seriesIndex;
+      rec.field_3_seriesNumber = field_3_seriesNumber;
+      rec.field_4_formatFlags = field_4_formatFlags;
+
+      return rec;
+    }
+
 
     /**
      * Get the point number field for the DataFormat record.
index a5a5234de04787970c2c6637978422a8eca9b67a..8d85b78599596d318ae808434fa03c628fccb325 100644 (file)
@@ -63,6 +63,7 @@ import org.apache.poi.util.LittleEndian;
  *               width set.<P>
  * REFERENCE:  PG 302 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -165,4 +166,10 @@ public class DefaultColWidthRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      DefaultColWidthRecord rec = new DefaultColWidthRecord();
+      rec.field_1_col_width = field_1_col_width;
+      return rec;
+    }
 }
index 08c9a9a40c5049834b10785e6e3eac98eea9a510..0074ba4d946817b9f3cead7dab5fac9e7a9cd54b 100644 (file)
@@ -168,6 +168,14 @@ public class DefaultDataLabelTextPropertiesRecord
         return this.sid;
     }
 
+    public Object clone() {
+      DefaultDataLabelTextPropertiesRecord rec = new DefaultDataLabelTextPropertiesRecord();
+      
+      rec.field_1_categoryDataType = field_1_categoryDataType;
+
+      return rec;
+    }
+
 
     /**
      * Get the category data type field for the DefaultDataLabelTextProperties record.
index 4486373f41beeef92c9e15cfdd763741327e1a3f..5431a2f13d14c1584ab36f525068b23a508458d8 100644 (file)
@@ -63,6 +63,7 @@ import org.apache.poi.util.LittleEndian;
  *               heights.
  * REFERENCE:  PG 301 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -190,4 +191,11 @@ public class DefaultRowHeightRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      DefaultRowHeightRecord rec = new DefaultRowHeightRecord();
+      rec.field_1_option_flags = field_1_option_flags;
+      rec.field_2_row_height = field_2_row_height;
+      return rec;
+    }
 }
index ee5d52e443ce33c69db919d45bcb70de149ec408..56555edc46890051300590138bd672d73b6b91b3 100644 (file)
@@ -62,6 +62,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  controls the accuracy of the calculations<P>
  * REFERENCE:  PG 303 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -167,4 +168,10 @@ public class DeltaRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      DeltaRecord rec = new DeltaRecord();
+      rec.field_1_max_change = field_1_max_change;
+      return rec;
+    }
 }
index bbc034df437f6a05290781aa7ab852302215d99d..2e3354d5e8e0b94be722d3da4ed9192a95b2a25e 100644 (file)
@@ -63,6 +63,7 @@ import org.apache.poi.util.LittleEndian;
  *               of a sheet.<P>
  * REFERENCE:  PG 303 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -244,4 +245,14 @@ public class DimensionsRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      DimensionsRecord rec = new DimensionsRecord();
+      rec.field_1_first_row = field_1_first_row;
+      rec.field_2_last_row = field_2_last_row;
+      rec.field_3_first_col = field_3_first_col;
+      rec.field_4_last_col = field_4_last_col;
+      rec.field_5_zero = field_5_zero;
+      return rec;
+    }
 }
index 80ea80c954bbb677de0ce98de070596d38ba7845..e9e683ee868b652ace081e4d4c17c66a6bd4f569 100644 (file)
@@ -64,6 +64,7 @@ import org.apache.poi.util.LittleEndian;
  *               HSSF File<P>
  * REFERENCE:  PG 307 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -141,4 +142,9 @@ public class EOFRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      EOFRecord rec = new EOFRecord();
+      return rec;
+    }
 }
index 1a08544bd9d75debf0e9a07664521f4740b9d0f9..4fce96de141d508b36d973de7cf61e3942d3ddd8 100644 (file)
@@ -197,6 +197,18 @@ public class FontBasisRecord
         return this.sid;
     }
 
+    public Object clone() {
+      FontBasisRecord rec = new FontBasisRecord();
+      
+      rec.field_1_xBasis = field_1_xBasis;
+      rec.field_2_yBasis = field_2_yBasis;
+      rec.field_3_heightBasis = field_3_heightBasis;
+      rec.field_4_scale = field_4_scale;
+      rec.field_5_indexToFontTable = field_5_indexToFontTable;
+
+      return rec;
+    }
+
 
     /**
      * Get the x Basis field for the FontBasis record.
index 2615d027c7f92a59cc5f62b787ed14ff8eb3cfea..f06d9af62939248e17967d456e8a8c7286e4e51e 100644 (file)
@@ -165,6 +165,14 @@ public class FontIndexRecord
         return this.sid;
     }
 
+    public Object clone() {
+      FontIndexRecord rec = new FontIndexRecord();
+      
+      rec.field_1_fontIndex = field_1_fontIndex;
+
+      return rec;
+    }
+
 
     /**
      * Get the font index field for the FontIndex record.
index 10cf9ab12c100f89d4095206cf091f681a1e6df9..cd3abb2e29a05597376360980c1fa5f3c24100f1 100644 (file)
@@ -64,6 +64,7 @@ import org.apache.poi.util.StringUtil;
  * REFERENCE:  PG 317 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
  * @author Shawn Laubach (laubach@acm.org) Modified 3/14/02
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -218,4 +219,11 @@ public class FooterRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      FooterRecord rec = new FooterRecord();
+      rec.field_1_footer_len = field_1_footer_len;
+      rec.field_2_footer = field_2_footer;
+      return rec;
+    }
 }
index 836bd08d9768d1207fa11950bf18355d9dac9d9f..f790b605a016716e2b005de7caa149206ce30bdd 100644 (file)
@@ -70,6 +70,7 @@ import org.apache.poi.hssf.record.formula.*;
  * Formula Record.
  * REFERENCE:  PG 317/444 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -568,4 +569,25 @@ public class FormulaRecord
         return buffer.toString();
     }
     
+    public Object clone() {
+      FormulaRecord rec = new FormulaRecord();
+      rec.field_1_row = field_1_row;
+      rec.field_2_column = field_2_column;
+      rec.field_3_xf = field_3_xf;
+      rec.field_4_value = field_4_value;
+      rec.field_5_options = field_5_options;
+      rec.field_6_zero = field_6_zero;
+      rec.field_7_expression_len = field_7_expression_len;
+      rec.field_8_parsed_expr = new Stack();
+      int size = 0;
+      if (field_8_parsed_expr != null)
+        size = field_8_parsed_expr.size();
+      for (int i=0; i< size; i++) {
+        Ptg ptg = (Ptg)((Ptg)field_8_parsed_expr.get(i)).clone();
+        rec.field_8_parsed_expr.set(i, ptg);
+      }
+      rec.all_data = all_data;
+      return rec;
+    }
+
 }
index ea48cdc97c5e9afef0a3584ccdc376413d53567d..94893f2530796bfe51e82fd0af2e69b806c2ad0f 100644 (file)
@@ -179,6 +179,15 @@ public class FrameRecord
         return this.sid;
     }
 
+    public Object clone() {
+      FrameRecord rec = new FrameRecord();
+      
+      rec.field_1_borderType = field_1_borderType;
+      rec.field_2_options = field_2_options;
+
+      return rec;
+    }
+
 
     /**
      * Get the border type field for the Frame record.
index b4a3faba9da9eaf818b75286bd12edce1e021055..aaf1a6607665e12f5421fb7b55e6ccbfbca9e668 100644 (file)
@@ -65,6 +65,7 @@ import org.apache.poi.util.LittleEndian;
  *
  * @author Andrew C. Oliver (acoliver at apache dot org)
  * @author  Glen Stampoultzis (glens at apache.org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  *
  * @version 2.0-pre
  */
@@ -176,4 +177,10 @@ public class GridsetRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      GridsetRecord rec = new GridsetRecord();
+      rec.field_1_gridset_flag = field_1_gridset_flag;
+      return rec;
+    }
 }
index 64e770ddc59fe21d5fbeba6bedc8f5b7768297a0..b4dad616cb0708784844573a706337af6d191c52 100644 (file)
@@ -62,6 +62,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  Row/column gutter sizes <P>
  * REFERENCE:  PG 320 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -246,4 +247,13 @@ public class GutsRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      GutsRecord rec = new GutsRecord();
+      rec.field_1_left_row_gutter = field_1_left_row_gutter;
+      rec.field_2_top_col_gutter = field_2_top_col_gutter;
+      rec.field_3_row_level_max = field_3_row_level_max;
+      rec.field_4_col_level_max = field_4_col_level_max;
+      return rec;
+    }
 }
index 2797c4cbff2e2f57d220b310db22190d4e2dbb49..a657f7561e21b470c7e2016fc1d33a317c547055 100644 (file)
@@ -62,6 +62,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  whether to center between horizontal margins<P>
  * REFERENCE:  PG 320 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -170,4 +171,10 @@ public class HCenterRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      HCenterRecord rec = new HCenterRecord();
+      rec.field_1_hcenter = field_1_hcenter;
+      return rec;
+    }
 }
index 07413df7faadb74236286db81613bc98f216fb50..897af1273a29ffccbe672bce6a6ec76b7e03d903 100644 (file)
@@ -64,6 +64,7 @@ import org.apache.poi.util.StringUtil;
  * REFERENCE:  PG 321 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
  * @author Shawn Laubach (laubach@acm.org) Modified 3/14/02
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -220,4 +221,11 @@ public class HeaderRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      HeaderRecord rec = new HeaderRecord();
+      rec.field_1_header_len = field_1_header_len;
+      rec.field_2_header = field_2_header;
+      return rec;
+    }
 }
index a90a3bedc648b195ed236536c29b6e37013f99e4..7971eadbed3d4fbba2bc3f279f8a94193d734c39 100644 (file)
@@ -65,6 +65,7 @@ import org.apache.poi.util.LittleEndian;
  * NOT USED IN THIS RELEASE
  * REFERENCE:  PG 323 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -225,4 +226,15 @@ public class IndexRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      IndexRecord rec = new IndexRecord();
+      rec.field_1_zero = field_1_zero;
+      rec.field_2_first_row = field_2_first_row;
+      rec.field_3_last_row_add1 = field_3_last_row_add1;
+      rec.field_4_zero = field_4_zero;
+      rec.field_5_dbcells = new IntList();
+      rec.field_5_dbcells.addAll(field_5_dbcells);
+      return rec;
+    }
 }
index 8e0717ebf8b3f24674ce255ed815cec4dcdd5c82..4104ddbc4e422c7467ab0b48553155f456eca104 100644 (file)
@@ -65,6 +65,7 @@ import org.apache.poi.util.LittleEndian;
  *                a formula!)<P>
  * REFERENCE:  PG 325 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -174,4 +175,10 @@ public class IterationRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      IterationRecord rec = new IterationRecord();
+      rec.field_1_iteration = field_1_iteration;
+      return rec;
+    }
 }
index bfb231391ee12e1219e2fb3004fab81b1859c9f6..9a7d73dd2e7cd33a6a5ae2fbcffdd4db7ea75715 100644 (file)
@@ -68,6 +68,7 @@ import org.apache.poi.util.StringUtil;
  * use this (except to read), use LabelSST instead <P>
  * REFERENCE:  PG 325 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  * @see org.apache.poi.hssf.record.LabelSSTRecord
  */
@@ -314,4 +315,15 @@ public class LabelRecord
     public void setXFIndex(short xf)
     {
     }
+
+    public Object clone() {
+      LabelRecord rec = new LabelRecord();
+      rec.field_1_row = field_1_row;
+      rec.field_2_column = field_2_column;
+      rec.field_3_xf_index = field_3_xf_index;
+      rec.field_4_string_len = field_4_string_len;
+      rec.field_5_unicode_flag = field_5_unicode_flag;
+      rec.field_6_value = field_6_value;
+      return rec;
+    }
 }
index cfd4115b851ee5cdf0223efd908a393aa6ea54fb..187e80ef908e60d41af8e6339acd80afe307a935 100644 (file)
@@ -63,6 +63,7 @@ import org.apache.poi.util.LittleEndian;
  *               value.  <P>
  * REFERENCE:  PG 325 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -331,4 +332,13 @@ public class LabelSSTRecord
         }
         return false;
     }
+
+    public Object clone() {
+      LabelSSTRecord rec = new LabelSSTRecord();
+      rec.field_1_row = field_1_row;
+      rec.field_2_column = field_2_column;
+      rec.field_3_xf_index = field_3_xf_index;
+      rec.field_4_sst_index = field_4_sst_index;
+      return rec;
+    }
 }
index 7026293bda1d81adbe3ae34e46a73b5f870f3e91..32a0df01a59cf02c484a78e0f715dc53a03ce65c 100644 (file)
@@ -234,6 +234,20 @@ public class LegendRecord
         return this.sid;
     }
 
+    public Object clone() {
+      LegendRecord rec = new LegendRecord();
+      
+      rec.field_1_xAxisUpperLeft = field_1_xAxisUpperLeft;
+      rec.field_2_yAxisUpperLeft = field_2_yAxisUpperLeft;
+      rec.field_3_xSize = field_3_xSize;
+      rec.field_4_ySize = field_4_ySize;
+      rec.field_5_type = field_5_type;
+      rec.field_6_spacing = field_6_spacing;
+      rec.field_7_options = field_7_options;
+
+      return rec;
+    }
+
 
     /**
      * Get the x axis upper left field for the Legend record.
index cad6dd1454e1106c08d6f7838f2ab9824af629f9..3bbec3859d105514aa96bb370d3bf9621a454a4d 100644 (file)
@@ -216,6 +216,18 @@ public class LineFormatRecord
         return this.sid;
     }
 
+    public Object clone() {
+      LineFormatRecord rec = new LineFormatRecord();
+      
+      rec.field_1_lineColor = field_1_lineColor;
+      rec.field_2_linePattern = field_2_linePattern;
+      rec.field_3_weight = field_3_weight;
+      rec.field_4_format = field_4_format;
+      rec.field_5_colourPaletteIndex = field_5_colourPaletteIndex;
+
+      return rec;
+    }
+
 
     /**
      * Get the line color field for the LineFormat record.
index d34f4a0f208899b27c71c6ab4de901ba46473bb2..45118d7bc4ae588bf22e207ca27ecd0dc6e8654d 100644 (file)
@@ -207,6 +207,18 @@ public class LinkedDataRecord
         return this.sid;
     }
 
+    public Object clone() {
+      LinkedDataRecord rec = new LinkedDataRecord();
+      
+      rec.field_1_linkType = field_1_linkType;
+      rec.field_2_referenceType = field_2_referenceType;
+      rec.field_3_options = field_3_options;
+      rec.field_4_indexNumberFmtRecord = field_4_indexNumberFmtRecord;
+      rec.field_5_formulaOfLink = field_5_formulaOfLink;
+
+      return rec;
+    }
+
 
     /**
      * Get the link type field for the LinkedData record.
index 74ec663bc31a98cb6df0000b4bf8cacc665930bf..eb5c9bfb55d3d99568ef7bf699598d6d43116830 100644 (file)
@@ -165,6 +165,14 @@ public class NumberFormatIndexRecord
         return this.sid;
     }
 
+    public Object clone() {
+      NumberFormatIndexRecord rec = new NumberFormatIndexRecord();
+      
+      rec.field_1_formatIndex = field_1_formatIndex;
+
+      return rec;
+    }
+
 
     /**
      * Get the format index field for the NumberFormatIndex record.
index 9aeef7feb7b53d446f56a6c3a4c9a56c6587c4a0..7b1b8092e596dd970b8dc25123aa5a4bad97bcee 100644 (file)
@@ -67,6 +67,7 @@ import org.apache.poi.hssf.record.Record;
  * Contains a numeric cell value. <P>
  * REFERENCE:  PG 334 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -355,4 +356,13 @@ public class NumberRecord
         }
         return false;
     }
+
+    public Object clone() {
+      NumberRecord rec = new NumberRecord();
+      rec.field_1_row = field_1_row;
+      rec.field_2_col = field_2_col;
+      rec.field_3_xf = field_3_xf;
+      rec.field_4_value = field_4_value;
+      return rec;
+    }
 }
index 653772eb34f946076cb711f755f1044872b065cd..07da0a220e7d69d31781b1d6e334d11fa9428566 100644 (file)
@@ -186,6 +186,16 @@ public class ObjectLinkRecord
         return this.sid;
     }
 
+    public Object clone() {
+      ObjectLinkRecord rec = new ObjectLinkRecord();
+      
+      rec.field_1_anchorId = field_1_anchorId;
+      rec.field_2_link1 = field_2_link1;
+      rec.field_3_link2 = field_3_link2;
+
+      return rec;
+    }
+
 
     /**
      * Get the anchor id field for the ObjectLink record.
index 3b4854d1165409715fb3c1d6763a20e53aea29a2..0aa312dad432105f9e19abf61ae1e90e2f84568d 100644 (file)
@@ -157,6 +157,13 @@ public class PlotAreaRecord
         return this.sid;
     }
 
+    public Object clone() {
+      PlotAreaRecord rec = new PlotAreaRecord();
+      
+
+      return rec;
+    }
+
 
 
 }  // END OF CLASS
index 547f8687dd5ad5fe7523d6152e4f0c9bbe4fd156..77ba0e6614e9a087782eab6a877d624888e59169 100644 (file)
@@ -173,6 +173,15 @@ public class PlotGrowthRecord
         return this.sid;
     }
 
+    public Object clone() {
+      PlotGrowthRecord rec = new PlotGrowthRecord();
+      
+      rec.field_1_horizontalScale = field_1_horizontalScale;
+      rec.field_2_verticalScale = field_2_verticalScale;
+
+      return rec;
+    }
+
 
     /**
      * Get the horizontalScale field for the PlotGrowth record.
index 1a2b758579ff9affb2cc61ee6123042f9a5670d4..1b25aafa315477fdffba641981cce5104a0b9961 100644 (file)
@@ -62,6 +62,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  whether to print the gridlines when you enjoy you spreadsheet on paper.<P>
  * REFERENCE:  PG 373 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -173,4 +174,10 @@ public class PrintGridlinesRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      PrintGridlinesRecord rec = new PrintGridlinesRecord();
+      rec.field_1_print_gridlines = field_1_print_gridlines;
+      return rec;
+    }
 }
index d471b01b2000b53934bdd8728a9e237f0741c855..390d3dc60c35c8c2bbb1fb47bac712d049e2e9de 100644 (file)
@@ -63,6 +63,7 @@ import org.apache.poi.util.LittleEndian;
  *               enjoy your spreadsheet in the physical form.<P>
  * REFERENCE:  PG 373 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -171,4 +172,10 @@ public class PrintHeadersRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      PrintHeadersRecord rec = new PrintHeadersRecord();
+      rec.field_1_print_headers = field_1_print_headers;
+      return rec;
+    }
 }
index 8bbe1986ee0d7e3c4e8bbff0860bc466c09f1b1d..6ebdf589a2b4c254931cf61d5981606e96bb1dc0 100644 (file)
@@ -63,6 +63,7 @@ import org.apache.poi.util.BitField;
  * Description:  Stores print setup options -- bogus for HSSF (and marked as such)<P>
  * REFERENCE:  PG 385 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -423,4 +424,20 @@ public class PrintSetupRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      PrintSetupRecord rec = new PrintSetupRecord();
+      rec.field_1_paper_size = field_1_paper_size;
+      rec.field_2_scale = field_2_scale;
+      rec.field_3_page_start = field_3_page_start;
+      rec.field_4_fit_width = field_4_fit_width;
+      rec.field_5_fit_height = field_5_fit_height;
+      rec.field_6_options = field_6_options;
+      rec.field_7_hresolution = field_7_hresolution;
+      rec.field_8_vresolution = field_8_vresolution;
+      rec.field_9_headermargin = field_9_headermargin;
+      rec.field_10_footermargin = field_10_footermargin;
+      rec.field_11_copies = field_11_copies;
+      return rec;
+    }
 }
index 917a7774d0695d766fc6fba45d99236c93c4f5a1..87f06140385634ef8908cb2f0a056dc569857d33 100644 (file)
@@ -71,6 +71,7 @@ import org.apache.poi.hssf.util.RKUtil;
  *
  * REFERENCE:  PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  * @see org.apache.poi.hssf.record.NumberRecord
  */
@@ -339,4 +340,13 @@ public class RKRecord
     public void setXFIndex(short xf)
     {
     }
+
+    public Object clone() {
+      RKRecord rec = new RKRecord();
+      rec.field_1_row = field_1_row;
+      rec.field_2_col = field_2_col;
+      rec.field_3_xf_index = field_3_xf_index;
+      rec.field_4_rk_number = field_4_rk_number;
+      return rec;
+    }
 }
index 867f61f6871539191d731146edf034557937e4ad..f06f55efbb28737a06037223d91baf305ced4ce0 100644 (file)
@@ -63,6 +63,7 @@ package org.apache.poi.hssf.record;
  * Company:
  * @author Andrew C. Oliver
  * @author Marc Johnson (mjohnson at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -241,4 +242,8 @@ public abstract class Record
      */
 
     public abstract short getSid();
+
+    public Object clone() {
+      throw new RuntimeException("The class "+getClass().getName()+" needs to define a clone method");
+    }
 }
index 438397a4f6ec65208a71d6bd431c19fdf5e6787c..acf39f66b9722f94b2f771fc1ad4e62a3433817a 100644 (file)
@@ -62,6 +62,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  Describes which reference mode to use<P>
  * REFERENCE:  PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -170,4 +171,10 @@ public class RefModeRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      RefModeRecord rec = new RefModeRecord();
+      rec.field_1_mode = field_1_mode;
+      return rec;
+    }
 }
index 5c693e28dff3be30878cf41a3bc78885b9dff208..0d78dc703832bede2d5657a1d2daca072c1e8b4a 100644 (file)
@@ -63,6 +63,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  stores the row information for the sheet. <P>
  * REFERENCE:  PG 379 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -512,4 +513,17 @@ public class RowRecord
         }
         return false;
     }
+
+    public Object clone() {
+      RowRecord rec = new RowRecord();
+      rec.field_1_row_number = field_1_row_number;
+      rec.field_2_first_col = field_2_first_col;
+      rec.field_3_last_col = field_3_last_col;
+      rec.field_4_height = field_4_height;
+      rec.field_5_optimize = field_5_optimize;
+      rec.field_6_reserved = field_6_reserved;
+      rec.field_7_option_flags = field_7_option_flags;
+      rec.field_8_xf_index = field_8_xf_index;
+      return rec;
+    }
 }
index 841a12d0376ded6a0161ec8fddeccefac0ea5a76..cec3a73db937677c64bfe8322ca61edd080278ce 100644 (file)
@@ -173,6 +173,15 @@ public class SCLRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SCLRecord rec = new SCLRecord();
+      
+      rec.field_1_numerator = field_1_numerator;
+      rec.field_2_denominator = field_2_denominator;
+
+      return rec;
+    }
+
 
     /**
      * Get the numerator field for the SCL record.
index c445479db66ceb68ee6fe9ed2c20f790f4b806cd..36fa70a06816f5000f574010526805b8414f40c8 100644 (file)
@@ -62,6 +62,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  defines whether to recalculate before saving (set to true)<P>
  * REFERENCE:  PG 381 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -164,4 +165,10 @@ public class SaveRecalcRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      SaveRecalcRecord rec = new SaveRecalcRecord();
+      rec.field_1_recalc = field_1_recalc;
+      return rec;
+    }
 }
index c26d6819506e45f5aa2db418f6707704ed050995..9db020fd5a7fa795a12eeb3b8ed91227b46ba6f3 100644 (file)
@@ -67,6 +67,7 @@ import org.apache.poi.util.LittleEndian;
  * TODO :  Implement reference subrecords
  * REFERENCE:  PG 291 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -279,4 +280,15 @@ public class SelectionRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      SelectionRecord rec = new SelectionRecord();
+      rec.field_1_pane = field_1_pane;
+      rec.field_2_row_active_cell = field_2_row_active_cell;
+      rec.field_3_col_active_cell = field_3_col_active_cell;
+      rec.field_4_ref_active_cell = field_4_ref_active_cell;
+      rec.field_5_num_refs = field_5_num_refs;
+      rec.field_6_refs = field_6_refs;
+      return rec;
+    }
 }
index cfad9dc381e3bdcc68090babc97d77c2b06c9880..e0414e13722fc5a5fa954e117362d51161bcc31c 100644 (file)
@@ -165,6 +165,14 @@ public class SeriesChartGroupIndexRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SeriesChartGroupIndexRecord rec = new SeriesChartGroupIndexRecord();
+      
+      rec.field_1_chartGroupIndex = field_1_chartGroupIndex;
+
+      return rec;
+    }
+
 
     /**
      * Get the chart group index field for the SeriesChartGroupIndex record.
index d7f2f66969593ec2747ae144d4f2679d6f7fe25a..6e920b41ff7daf47244b4eba73a879e88d446b6e 100644 (file)
@@ -165,6 +165,14 @@ public class SeriesIndexRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SeriesIndexRecord rec = new SeriesIndexRecord();
+      
+      rec.field_1_index = field_1_index;
+
+      return rec;
+    }
+
 
     /**
      * Get the index field for the SeriesIndex record.
index 0b7beb375af5b2f99a3ec0392f9552829cb52106..da800664cc31298375cd58573b04e596ae24bfde 100644 (file)
@@ -177,6 +177,14 @@ public class SeriesLabelsRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SeriesLabelsRecord rec = new SeriesLabelsRecord();
+      
+      rec.field_1_formatFlags = field_1_formatFlags;
+
+      return rec;
+    }
+
 
     /**
      * Get the format flags field for the SeriesLabels record.
index b80bc8503964ca8499674d207721b99760c89af7..284ad16507125aa7ca2b2004d6a0a55d8cd899cb 100644 (file)
@@ -163,6 +163,14 @@ public class SeriesListRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SeriesListRecord rec = new SeriesListRecord();
+      
+      rec.field_1_seriesNumbers = field_1_seriesNumbers;
+
+      return rec;
+    }
+
 
     /**
      * Get the series numbers field for the SeriesList record.
index 1e96fb0bfbc296fb2c774a3259fd526b753069fc..780bf0064caf64155a262c0c2e42a4dcb623c7ba 100644 (file)
@@ -217,6 +217,19 @@ public class SeriesRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SeriesRecord rec = new SeriesRecord();
+      
+      rec.field_1_categoryDataType = field_1_categoryDataType;
+      rec.field_2_valuesDataType = field_2_valuesDataType;
+      rec.field_3_numCategories = field_3_numCategories;
+      rec.field_4_numValues = field_4_numValues;
+      rec.field_5_bubbleSeriesType = field_5_bubbleSeriesType;
+      rec.field_6_numBubbleValues = field_6_numBubbleValues;
+
+      return rec;
+    }
+
 
     /**
      * Get the category data type field for the Series record.
index ff45ec14a22cdc310a2e8eb6cfa0fa097aa362e3..cf60c6dfdf6af57832399b04e59e49c723dbccff 100644 (file)
@@ -187,6 +187,17 @@ public class SeriesTextRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SeriesTextRecord rec = new SeriesTextRecord();
+      
+      rec.field_1_id = field_1_id;
+      rec.field_2_textLength = field_2_textLength;
+      rec.field_3_undocumented = field_3_undocumented;
+      rec.field_4_text = field_4_text;
+
+      return rec;
+    }
+
 
     /**
      * Get the id field for the SeriesText record.
index ad5cdf58a374cd943295484ce620462dbfa142b9..291240c85b8fcd65a0015030ba05995a68939075 100644 (file)
@@ -165,6 +165,14 @@ public class SeriesToChartGroupRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SeriesToChartGroupRecord rec = new SeriesToChartGroupRecord();
+      
+      rec.field_1_chartGroupIndex = field_1_chartGroupIndex;
+
+      return rec;
+    }
+
 
     /**
      * Get the chart group index field for the SeriesToChartGroup record.
index d3cf4cf3930871c35817dbf0305df44ef84a3077..20635089b9ff9917e8b17485a93e420a183ab7e1 100644 (file)
@@ -186,6 +186,15 @@ public class SheetPropertiesRecord
         return this.sid;
     }
 
+    public Object clone() {
+      SheetPropertiesRecord rec = new SheetPropertiesRecord();
+      
+      rec.field_1_flags = field_1_flags;
+      rec.field_2_empty = field_2_empty;
+
+      return rec;
+    }
+
 
     /**
      * Get the flags field for the SheetProperties record.
index 73da6e2f32c40e7b3602031703474dca23213a68..5d827624723f9fe43fafba022fb5ab560a8cd25d 100644 (file)
@@ -306,6 +306,25 @@ public class TextRecord
         return this.sid;
     }
 
+    public Object clone() {
+      TextRecord rec = new TextRecord();
+      
+      rec.field_1_horizontalAlignment = field_1_horizontalAlignment;
+      rec.field_2_verticalAlignment = field_2_verticalAlignment;
+      rec.field_3_displayMode = field_3_displayMode;
+      rec.field_4_rgbColor = field_4_rgbColor;
+      rec.field_5_x = field_5_x;
+      rec.field_6_y = field_6_y;
+      rec.field_7_width = field_7_width;
+      rec.field_8_height = field_8_height;
+      rec.field_9_options1 = field_9_options1;
+      rec.field_10_indexOfColorValue = field_10_indexOfColorValue;
+      rec.field_11_options2 = field_11_options2;
+      rec.field_12_textRotation = field_12_textRotation;
+
+      return rec;
+    }
+
 
     /**
      * Get the horizontal alignment field for the Text record.
index efead73f808cb5b66cb6d5970e9ad6b5aa795da4..f1359fabc42fee36ae6919785468831fcdf06cd0 100644 (file)
@@ -245,6 +245,23 @@ public class TickRecord
         return this.sid;
     }
 
+    public Object clone() {
+      TickRecord rec = new TickRecord();
+      
+      rec.field_1_majorTickType = field_1_majorTickType;
+      rec.field_2_minorTickType = field_2_minorTickType;
+      rec.field_3_labelPosition = field_3_labelPosition;
+      rec.field_4_background = field_4_background;
+      rec.field_5_labelColorRgb = field_5_labelColorRgb;
+      rec.field_6_zero1 = field_6_zero1;
+      rec.field_7_zero2 = field_7_zero2;
+      rec.field_8_options = field_8_options;
+      rec.field_9_tickColor = field_9_tickColor;
+      rec.field_10_zero3 = field_10_zero3;
+
+      return rec;
+    }
+
 
     /**
      * Get the major tick type field for the Tick record.
index 8c34a126c7eb99a27f0cfdbd67ca8a45c43e461d..00710fb29ed6f549d82e05b913d3bee0871ce719 100644 (file)
@@ -165,6 +165,14 @@ public class UnitsRecord
         return this.sid;
     }
 
+    public Object clone() {
+      UnitsRecord rec = new UnitsRecord();
+      
+      rec.field_1_units = field_1_units;
+
+      return rec;
+    }
+
 
     /**
      * Get the units field for the Units record.
index e3ace48fbc4d0b400654fa9df6991c5d88abaaf7..e027361b210c986bcdf1325744ccdf04b69500f7 100644 (file)
@@ -64,6 +64,7 @@ import org.apache.poi.util.LittleEndian;
  *               don't know all the records to.  (HSSF leaves these alone!) <P>
  * Company:      SuperLink Software, Inc.<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -174,4 +175,14 @@ public class UnknownRecord
         throw new RecordFormatException(
             "Unknown record cannot be constructed via offset -- we need a copy of the data");
     }
+
+    /** Unlike the other Record.clone methods this is a shallow clone*/
+    public Object clone() {
+      UnknownRecord rec = new UnknownRecord();
+      rec.offset = offset;
+      rec.sid = sid;
+      rec.size = size;
+      rec.thedata = thedata;
+      return rec;
+    }
 }
index a8f55b8bf12153d93dc705e05ad1dcfbfd84aa29..6e3a856394b5753d7d7ad4890195a523d83236c5 100644 (file)
@@ -62,6 +62,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  tells whether to center the sheet between vertical margins<P>
  * REFERENCE:  PG 420 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -170,4 +171,10 @@ public class VCenterRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      VCenterRecord rec = new VCenterRecord();
+      rec.field_1_vcenter = field_1_vcenter;
+      return rec;
+    }
 }
index 9819bbb8b39ed5824f2ff4934ce3e898aed9cd71..9f5f02625ec1dbc7ed385a5097e7fd6c96e85b27 100644 (file)
@@ -65,6 +65,7 @@ import org.apache.poi.util.LittleEndian;
  * REFERENCE:  PG 425 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
  * @author Glen Stampoultzis (gstamp@iprimus.com.au)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -415,4 +416,11 @@ public class WSBoolRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      WSBoolRecord rec = new WSBoolRecord();
+      rec.field_1_wsbool = field_1_wsbool;
+      rec.field_2_wsbool = field_2_wsbool;
+      return rec;
+    }
 }
index 57fe5d615742aa0f06f1855e5f7c331564c53e09..45305bf042bc20ab3a1f5d93a8ca6c91e2390254 100644 (file)
@@ -63,6 +63,7 @@ import org.apache.poi.util.LittleEndian;
  * Description:  sheet window settings<P>
  * REFERENCE:  PG 422 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
  * @author Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 2.0-pre
  */
 
@@ -615,4 +616,16 @@ public class WindowTwoRecord
     {
         return this.sid;
     }
+
+    public Object clone() {
+      WindowTwoRecord rec = new WindowTwoRecord();
+      rec.field_1_options = field_1_options;
+      rec.field_2_top_row = field_2_top_row;
+      rec.field_3_left_col = field_3_left_col;
+      rec.field_4_header_color = field_4_header_color;
+      rec.field_5_page_break_zoom = field_5_page_break_zoom;
+      rec.field_6_normal_zoom = field_6_normal_zoom;
+      rec.field_7_reserved = field_7_reserved;
+      return rec;
+    }
 }
index 1176943c7cf0986605251742c56b72f8a9acc0c8..ed3edfba248ccb9c1f5dcee642a510abf9202dbd 100644 (file)
@@ -67,6 +67,7 @@ import java.util.List;
 /**
  *
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class RowRecordsAggregate
@@ -219,5 +220,16 @@ public class RowRecordsAggregate
         return records.values().iterator();
     }
     
+    /** Performs a deep clone of the record*/
+    public Object clone() {
+      RowRecordsAggregate rec = new RowRecordsAggregate();
+      for (Iterator rowIter = getIterator(); rowIter.hasNext();) {
+        //return the cloned Row Record & insert
+        RowRecord row = (RowRecord)((RowRecord)rowIter.next()).clone();
+        rec.insertRow(row);
+      }
+      return rec;
+    }
+
 }
 
index f30a5afd5a0c233501225c0c480ec9158919a130..db9ab481cc8115a9ce1c1a3c2fdbd783d1a2b488 100644 (file)
@@ -67,6 +67,7 @@ import java.util.TreeMap;
  *
  * @author  andy
  * @author  Glen Stampoultzis (glens at apache.org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class ValueRecordsAggregate
@@ -235,6 +236,16 @@ public class ValueRecordsAggregate
     {
         return records.values().iterator();
     }
+
+    /** Performs a deep clone of the record*/
+    public Object clone() {
+      ValueRecordsAggregate rec = new ValueRecordsAggregate();
+      for (Iterator valIter = getIterator(); valIter.hasNext();) {
+        CellValueRecordInterface val = (CellValueRecordInterface)((CellValueRecordInterface)valIter.next()).clone();
+        rec.insertCell(val);
+      }
+      return rec;
+    }
 }
 
 /*
index 521584b2cbe3a2799ca9533c4983ad0bf815c2ac..5d691bd31826959a50eddffe6d51cefcedad9f11 100644 (file)
@@ -68,6 +68,7 @@ import org.apache.poi.hssf.util.SheetReferences;
  * Addition operator PTG the "+" binomial operator.  If you need more 
  * explanation than that then well...We really can't help you here.
  * @author  Andrew C. Oliver (acoliver@apache.org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class AddPtg
@@ -129,4 +130,8 @@ public class AddPtg
     
     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
            
+    public Object clone() {
+      return new AddPtg();
+    }
+
 }
index 861f59919f75698aef367f9c0ccb4a90483c3a75..5e4ed7f738cf2a63c60f2dbb35f6c9c6e99ec8dc 100644 (file)
@@ -70,6 +70,7 @@ import org.apache.poi.util.BitField;
  * REFERENCE:  <P>
  * @author Libin Roman (Vista Portal LDT. Developer)
  * @author avik
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 1.0-pre
  */
 
@@ -304,4 +305,14 @@ public class Area3DPtg extends Ptg
        return Ptg.CLASS_REF;
    }
 
+   public Object clone() {
+     Area3DPtg ptg = new Area3DPtg();
+     ptg.field_1_index_extern_sheet = field_1_index_extern_sheet;
+     ptg.field_2_first_row = field_2_first_row;
+     ptg.field_3_last_row = field_3_last_row;
+     ptg.field_4_first_column = field_4_first_column;
+     ptg.field_5_last_column = field_5_last_column;
+     return ptg;
+   }
+
 }
index 4b20bd43cca282f886bf9a70ef6c79791346b40f..43cb92cd0fd50f8a1748e0445dd8884200ad1c32 100644 (file)
@@ -70,6 +70,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  * Specifies a rectangular area of cells A1:A4 for instance.
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class AreaPtg
@@ -86,7 +87,9 @@ public class AreaPtg
     private BitField         colRelative = new BitField(0x4000);
     private BitField         column      = new BitField(0x3FFF);
 
-    
+    private AreaPtg() {
+      //Required for clone methods
+    }
    
     public AreaPtg(String arearef) {
         AreaReference ar = new AreaReference(arearef);
@@ -312,4 +315,13 @@ public class AreaPtg
         return Ptg.CLASS_REF;
     }
     
+    public Object clone() {
+      AreaPtg ptg = new AreaPtg();
+      ptg.field_1_first_row = field_1_first_row;
+      ptg.field_2_last_row = field_2_last_row;
+      ptg.field_3_first_column = field_3_first_column;
+      ptg.field_4_last_column = field_4_last_column;
+      return ptg;
+    }
+
 }
index 2e2c4b9fe43e2b2799c539e178cdc6ae0dbb7c3a..91b8b997ab3746bd97a850f7925c1964064c6580 100644 (file)
@@ -72,6 +72,7 @@ import java.util.List;
  * This seems to be a Misc Stuff and Junk record.  One function it serves is
  * in SUM functions (i.e. SUM(A1:A3) causes an area PTG then an ATTR with the SUM option set)
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class AttrPtg
@@ -246,4 +247,11 @@ public class AttrPtg
     
  
     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
+
+    public Object clone() {
+      AttrPtg ptg = new AttrPtg();
+      ptg.field_1_options = field_1_options;
+      ptg.field_2_data = field_2_data;
+      return ptg;
+    }
 }
index 4c053b7fd07fe363a4b20073b84b92769c468220..f6fb7df6654d2ef078683f0c8dc5d6d5443ea7b6 100644 (file)
@@ -67,6 +67,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  *
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class ConcatPtg
@@ -122,4 +123,8 @@ public class ConcatPtg
         return buffer.toString();
     }
            
+    public Object clone() {
+      return new ConcatPtg();
+    }
+
 }
index 002f7c541a6a56d6c6c9adc03a6021b728b75924..92a3544353d20a38b5c791740c35bc54373bcad9 100644 (file)
@@ -67,6 +67,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  * This PTG implements the standard binomial divide "/"
  * @author  Andrew C. Oliver acoliver at apache dot org
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class DividePtg
@@ -120,4 +121,9 @@ public class DividePtg
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }      
+
+    public Object clone() {
+      DividePtg ptg = new DividePtg();
+      return ptg;
+    }
 }
index eca0d5e2bf1f0a56506d1f68e14a1c4e56f33684..aba044e4eedc1b34cd9f9f97d5bdf561efeca6b3 100644 (file)
@@ -122,4 +122,9 @@ public class EqualPtg
         return buffer.toString();
     }       
 
+    public Object clone() {
+      return new EqualPtg();
+    }
+
+
 }
index 03a773d9d1cee206997dae34262a0fb063b7a8c3..019179ae1b9c79d8b25f678db35e6f6b3afd4be7 100644 (file)
@@ -65,6 +65,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  *
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class ExpPtg
@@ -101,4 +102,8 @@ public class ExpPtg
     
     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
     
+    public Object clone() {
+      throw new RuntimeException("NO IDEA SHARED FORMULA EXP PTG");
+    }
+
 }
index 73729fb36177dcd527a1e855e4dcff8f6599ea18..f71d5ca7f1da44c8e2514162db41237c90efc471 100644 (file)
@@ -1,10 +1,19 @@
 package org.apache.poi.hssf.record.formula;
 import org.apache.poi.util.LittleEndian;
 
+/**
+ *
+ * @author Jason Height (jheight at chariot dot net dot au)
+ */
 public class FuncPtg extends AbstractFunctionPtg{
     
     public final static byte sid  = 0x21;
     private int numParams=0;
+
+    private FuncPtg() {
+      //Required for clone methods
+    }
+
     /**Creates new function pointer from a byte array 
      * usually called while reading an excel file. 
      */
@@ -28,4 +37,11 @@ public class FuncPtg extends AbstractFunctionPtg{
      public int getNumberOfOperands() {
         return numParams;
     }
+
+    public Object clone() {
+      FuncPtg ptg = new FuncPtg();
+      ptg.field_1_num_args = field_1_num_args;
+      ptg.field_2_fnc_index = field_2_fnc_index;
+      return ptg;
+    }
 }
\ No newline at end of file
index 12330ebaf5e7e03fad971bec9bd74f7b6b8f8c97..0200ffda75c4cdf77f3d9472a43e677a3f71bf02 100644 (file)
@@ -1,9 +1,18 @@
 package org.apache.poi.hssf.record.formula;
 import org.apache.poi.util.LittleEndian;
+
+/**
+ *
+ * @author Jason Height (jheight at chariot dot net dot au)
+ */
 public class FuncVarPtg extends AbstractFunctionPtg{
     
     public final static byte sid  = 0x22;
     
+    private FuncVarPtg() {
+      //Required for clone methods
+    }
+
  /**Creates new function pointer from a byte array 
      * usually called while reading an excel file. 
      */
@@ -38,5 +47,12 @@ public class FuncVarPtg extends AbstractFunctionPtg{
         return field_1_num_args;
     }
     
+    public Object clone() {
+      FuncVarPtg ptg = new FuncVarPtg();
+      ptg.field_1_num_args = field_1_num_args;
+      ptg.field_2_fnc_index = field_2_fnc_index;
+      return ptg;
+    }
+
     
 }
index d3202bf6bcb96fb12e43b621170b276e06de06bc..e6b8a4d6b3c4c552e7f7d47c3194b0d6c798a663 100644 (file)
@@ -67,6 +67,7 @@ import org.apache.poi.hssf.util.SheetReferences;
  * Integer (short intger)
  * Stores a (java) short value in a formula
  * @author  Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class IntPtg
@@ -79,6 +80,10 @@ public class IntPtg
     private String val;
     private int strlen = 0;
   
+    private IntPtg() {
+      //Required for clone methods
+    }
+
     public IntPtg(byte [] data, int offset)
     {
         setValue(LittleEndian.getShort(data, offset + 1));
@@ -116,4 +121,10 @@ public class IntPtg
         return "" + getValue();
     }
  public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}   
+
+   public Object clone() {
+     IntPtg ptg = new IntPtg();
+     ptg.field_1_value = field_1_value;
+     return ptg;
+   }
 }
index 2afd885a7d3070edcd50346f7fbc416f8028c4cb..0c315e7e8e12db9c11f272f7924715ac5e31d1d4 100644 (file)
@@ -66,6 +66,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  *
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class MemErrPtg
@@ -122,4 +123,11 @@ public class MemErrPtg
         return "ERR#";
     }
     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
+
+    public Object clone() {
+      MemErrPtg ptg = new MemErrPtg();
+      ptg.field_1_reserved = field_1_reserved;
+      ptg.field_2_subex_len = field_2_subex_len;
+      return ptg;
+    }
 }
index 492caa4bb1ef5f0353d862a70b57a9087c4ff3ec..9e734a836aba155bbb8fe53bd4cded11595f9321 100644 (file)
@@ -60,6 +60,7 @@ import org.apache.poi.hssf.util.SheetReferences;
  * Missing Function Arguments
  *
  * Avik Sengupta <avik at apache.org>
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 public class MissingArgPtg
     extends  Ptg
@@ -97,6 +98,10 @@ public class MissingArgPtg
     
     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
         
+    public Object clone() {
+      return new MissingArgPtg();
+    }
+
 }
 
 
index ac3fc1fb9af781834cc8e610aba1ddba5963478b..b2ba9b4d7130af065f0f6f1a4f993fcb4e819034 100644 (file)
@@ -66,6 +66,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  * Implements the standard mathmatical multiplication - *
  * @author  Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class MultiplyPtg
@@ -136,4 +137,8 @@ public class MultiplyPtg
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }                  
+
+    public Object clone() {
+      return new MultiplyPtg();
+    }
 }
index 24ea66f61fd036f6755a7fe3b27931060a2b9a54..e159f39f7812bf5c82803dbcbce715323c6fd4f7 100644 (file)
@@ -66,6 +66,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  *
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class NamePtg
@@ -77,6 +78,11 @@ public class NamePtg
     private short             field_2_label_index;
     private short             field_3_zero;   // reserved must be 0
 
+
+    private NamePtg() {
+      //Required for clone methods
+    }
+
     /** Creates new NamePtg */
 
     public NamePtg(String name)
@@ -109,4 +115,12 @@ public class NamePtg
     }
     
     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
+
+    public Object clone() {
+      NamePtg ptg = new NamePtg();
+      ptg.field_1_ixti = field_1_ixti;
+      ptg.field_2_label_index = field_2_label_index;
+      ptg.field_3_zero = field_3_zero;
+      return ptg;
+    }
 }
index f713268056550d3ef36eea65603554f5ee7df513..f2213d3562becd0ecfc9937f26cd1888ef47eab7 100644 (file)
@@ -61,6 +61,7 @@ import org.apache.poi.hssf.util.SheetReferences;
  * Stores a floating point value in a formula
  * value stored in a 8 byte field using IEEE notation
  * @author  Avik Sengupta
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class NumberPtg
@@ -70,6 +71,9 @@ public class NumberPtg
     public final static byte sid  = 0x1f;
     private double            field_1_value;
 
+    private NumberPtg() {
+      //Required for clone methods
+    }
         
     /** Create a NumberPtg from a byte array read from disk */
     public NumberPtg(byte [] data, int offset)
@@ -114,5 +118,11 @@ public class NumberPtg
         return "" + getValue();
     }
        public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
+
+    public Object clone() {
+      NumberPtg ptg = new NumberPtg();
+      ptg.field_1_value = field_1_value;
+      return ptg;
+    }
 }
 
index 0975c656d811a82df49d9b8a012a806aff7916a4..6957a2fc5ccdcb029308b2e2ec76a9a41bea6b71 100644 (file)
@@ -66,6 +66,7 @@ import org.apache.poi.hssf.util.SheetReferences;
  *
  * Avik Sengupta <lists@aviksengupta.com>
  * Andrew C. Oliver (acoliver at apache dot org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 public class ParenthesisPtg
     extends OperationPtg
@@ -118,5 +119,9 @@ public class ParenthesisPtg
     
     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
         
+    public Object clone() {
+      return new ParenthesisPtg();
+    }
+
 }
 
index 19148992f09b0ffafede214bd4b8674c2eaff676..609732f2c1bc417105b681cd596454c4d5fd8a33 100644 (file)
@@ -67,6 +67,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  *
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class PowerPtg
@@ -122,4 +123,8 @@ public class PowerPtg
         return buffer.toString();
     }       
 
+    public Object clone() {
+      return new PowerPtg();
+    }
+
 }
index 6aaa69bf52c48be0cbe13c9bb1f796d6244acaac..305d9e76979089b51efe67a328cae9aa8a9c1364 100644 (file)
@@ -69,6 +69,7 @@ import org.apache.poi.hssf.util.SheetReferences;
  *
  * @author  andy
  * @author avik
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public abstract class Ptg
@@ -334,6 +335,8 @@ public abstract class Ptg
     
     public abstract byte getDefaultOperandClass();
 
+    public abstract Object clone();
+
     
     
 }
index a00183f3483e76f831fc29ee2bcad73618fd75da..29013a62132dde9be77d649bb9a45bc4cc36ca4f 100644 (file)
@@ -69,6 +69,7 @@ import org.apache.poi.hssf.model.Workbook;
  * Description:  Defined a cell in extern sheet. <P>
  * REFERENCE:  <P>
  * @author Libin Roman (Vista Portal LDT. Developer)
+ * @author Jason Height (jheight at chariot dot net dot au)
  * @version 1.0-pre
  */
 
@@ -204,4 +205,12 @@ public class Ref3DPtg extends Ptg {
 
    public byte getDefaultOperandClass() {return Ptg.CLASS_REF;}
 
+   public Object clone() {
+     Ref3DPtg ptg = new Ref3DPtg();
+     ptg.field_1_index_extern_sheet = field_1_index_extern_sheet;
+     ptg.field_2_row = field_2_row;
+     ptg.field_3_column = field_3_column;
+     return ptg;
+   }
+
 }
index 375d2984ea957e30f822043e0d808b0fc9b02bcd..b718bbd2f714800891484a5981578f7f28cd9b1d 100644 (file)
@@ -69,6 +69,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  * ReferencePtg - handles references (such as A1, A2, IA4)
  * @author  Andrew C. Oliver (acoliver@apache.org)
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class ReferencePtg extends Ptg
@@ -81,7 +82,9 @@ public class ReferencePtg extends Ptg
     private BitField         rowRelative = new BitField(0x8000);
     private BitField         colRelative = new BitField(0x4000);
 
-    
+    private ReferencePtg() {
+      //Required for clone methods
+    }
     
     /**
      * Takes in a String represnetation of a cell reference and fills out the 
@@ -186,4 +189,10 @@ public class ReferencePtg extends Ptg
         return Ptg.CLASS_REF;
     }
     
+    public Object clone() {
+      ReferencePtg ptg = new ReferencePtg();
+      ptg.field_1_row = field_1_row;
+      ptg.field_2_col = field_2_col;
+      return ptg;
+    }
 }
index 2a5e5b764a37080ee341d701a12bd7cd569466ba..76580c4b1720270fd3ee45efa9501006e3c124bd 100644 (file)
@@ -62,6 +62,7 @@ import org.apache.poi.hssf.util.SheetReferences;
  * Number
  * Stores a String value in a formula value stored in the format <length 2 bytes>char[]
  * @author  Werner Froidevaux
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class StringPtg
@@ -71,6 +72,9 @@ public class StringPtg
     public final static byte sid  = 0x17;
     private String            field_1_value;
 
+    private StringPtg() {
+      //Required for clone methods
+    }
 
     /** Create a StringPtg from a byte array read from disk */
     public StringPtg(byte [] data, int offset)
@@ -120,5 +124,11 @@ public class StringPtg
        return Ptg.CLASS_VALUE;
    }
 
+   public Object clone() {
+     StringPtg ptg = new StringPtg();
+     ptg.field_1_value = field_1_value;
+     return ptg;
+   }
+
 }
 
index 4be753c0cb061c25346f5547df1ee9ba23118338..012e872cf4e1acbe8a64828c94f1e30f0ff7c881 100644 (file)
@@ -66,6 +66,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  *
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class SubtractPtg
@@ -118,4 +119,8 @@ public class SubtractPtg
         buffer.append(operands[ 1 ]);
         return buffer.toString();
     }
+
+    public Object clone() {
+      return new SubtractPtg();
+    }
 }
index f912da23604dde4c595e82198ddf64c4bf8ed50c..40733a06d4173f7d2c3caba7b2eed2b5b364425d 100644 (file)
@@ -65,6 +65,7 @@ import org.apache.poi.hssf.util.SheetReferences;
 /**
  *
  * @author  andy
+ * @author Jason Height (jheight at chariot dot net dot au)
  */
 
 public class UnknownPtg
@@ -99,5 +100,9 @@ public class UnknownPtg
     }
     public byte getDefaultOperandClass() {return Ptg.CLASS_VALUE;}
 
+    public Object clone() {
+      return new UnknownPtg();
+    }
+
     
 }
index 9229547d53766df600467afdab48211fd6f27ae0..0cedfc2b04d9dfbd49229c3f56d5f2c82337d15e 100644 (file)
@@ -143,6 +143,10 @@ public class HSSFSheet
         setPropertiesFromSheet(sheet);
     }
 
+    HSSFSheet cloneSheet(Workbook book) {
+      return new HSSFSheet(book, sheet.cloneSheet());
+    }
+
 
     /**
      * used internally to set the properties given a Sheet object
index 27a188dcbf99d7241eb3d43cafe15fd68016756f..a345c44336ee97e30560751c5cb3b7a4480b721c 100644 (file)
@@ -291,6 +291,28 @@ public class HSSFWorkbook
         return sheet;
     }
 
+    /**
+     * create an HSSFSheet from an existing sheet in the HSSFWorkbook.
+     *
+     * @return HSSFSheet representing the cloned sheet.
+     */
+
+    public HSSFSheet cloneSheet(int sheetNum) {
+      HSSFSheet srcSheet = (HSSFSheet)sheets.get(sheetNum);
+      String srcName = workbook.getSheetName(sheetNum);
+      if (srcSheet != null) {
+        HSSFSheet clonedSheet = srcSheet.cloneSheet(workbook);
+        WindowTwoRecord windowTwo = (WindowTwoRecord) clonedSheet.getSheet().findFirstRecordBySid(WindowTwoRecord.sid);
+        windowTwo.setSelected(sheets.size() == 1);
+        windowTwo.setPaged(sheets.size() == 1);
+
+        sheets.add(clonedSheet);
+        workbook.setSheetName(sheets.size()-1, srcName+"[1]");
+        return clonedSheet;
+      }
+      return null;
+    }
+
     /**
      * create an HSSFSheet for this HSSFWorkbook, adds it to the sheets and returns
      * the high level representation.  Use this to create new sheets.
index d4ae2ac80dd43dfa619a47fa121b26b83df70f26..685af43c729cbee21910b4c18fe1ad9ce8572918 100644 (file)
@@ -177,6 +177,16 @@ public class <xsl:value-of select="@name"/>Record
         return this.sid;
     }
 
+    public Object clone() {
+      <xsl:value-of select="@name"/>Record rec = new <xsl:value-of select="@name"/>Record();
+
+<xsl:for-each select="//fields/field"><xsl:text>      rec.</xsl:text><xsl:value-of select="recutil:getFieldName(position(),@name,0)"/><xsl:text> = </xsl:text><xsl:value-of select="recutil:getFieldName(position(),@name,0)"/><xsl:text>;
+</xsl:text></xsl:for-each>
+      return rec;
+    }
+
+
+
 <xsl:apply-templates select="//field" mode="getset"/>
 <xsl:apply-templates select="//field" mode="bits"/>
 
index ddaedd922e89dd2623cb18f5b40872fb904756c8..5ce12b461842b650d24fda510031deb0c30680e1 100644 (file)
@@ -199,4 +199,20 @@ public class TestHSSFSheet
         sheet.removeRow(row);
     }
 
+    public void testCloneSheet() {
+        HSSFWorkbook workbook = new HSSFWorkbook();
+        HSSFSheet sheet = workbook.createSheet("Test Clone");
+        HSSFRow row = sheet.createRow((short) 0);
+        HSSFCell cell = row.createCell((short) 0);
+        cell.setCellValue("clone_test"); 
+        HSSFSheet cloned = workbook.cloneSheet(0);
+  
+        //Check for a good clone
+        assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test");
+        
+        //Check that the cells are not somehow linked
+        cell.setCellValue("Difference Check");
+        assertEquals(cloned.getRow((short)0).getCell((short)0).getStringCellValue(), "clone_test");
+    }
+
 }