From 1fd52310cd92e6c426950d8045aafe3fb0d0ea6a Mon Sep 17 00:00:00 2001 From: Josh Micich Date: Tue, 22 Dec 2009 00:51:29 +0000 Subject: [PATCH] Renamed model.Workbook to InternalWorkbook to alleviate name clash. git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@893050 13f79535-47bb-0310-9956-ffa450edef68 --- .../eventusermodel/EventWorkbookBuilder.java | 90 +++++------- .../{Workbook.java => InternalWorkbook.java} | 16 ++- src/java/org/apache/poi/hssf/model/Sheet.java | 4 +- .../apache/poi/hssf/record/FormatRecord.java | 2 +- .../apache/poi/hssf/record/PaletteRecord.java | 135 +++++++++--------- .../poi/hssf/record/RecalcIdRecord.java | 4 +- .../apache/poi/hssf/usermodel/HSSFCell.java | 4 +- .../poi/hssf/usermodel/HSSFCellStyle.java | 8 +- .../poi/hssf/usermodel/HSSFDataFormat.java | 14 +- .../usermodel/HSSFEvaluationWorkbook.java | 4 +- .../apache/poi/hssf/usermodel/HSSFName.java | 14 +- .../hssf/usermodel/HSSFRichTextString.java | 8 +- .../apache/poi/hssf/usermodel/HSSFSheet.java | 8 +- .../poi/hssf/usermodel/HSSFWorkbook.java | 40 +++--- .../TestEventWorkbookBuilder.java | 56 ++++---- .../apache/poi/hssf/model/TestWorkbook.java | 16 +-- .../poi/hssf/usermodel/SanityChecker.java | 4 +- .../apache/poi/hssf/usermodel/TestBugs.java | 22 +-- .../poi/hssf/usermodel/TestHSSFDateUtil.java | 4 +- .../poi/hssf/usermodel/TestHSSFWorkbook.java | 8 ++ .../poi/hssf/usermodel/TestWorkbook.java | 4 +- .../poi/hssf/util/TestAreaReference.java | 101 +++++++------ 22 files changed, 267 insertions(+), 299 deletions(-) rename src/java/org/apache/poi/hssf/model/{Workbook.java => InternalWorkbook.java} (99%) diff --git a/src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java b/src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java index c7a1471a7d..c8c2491f3c 100644 --- a/src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java +++ b/src/java/org/apache/poi/hssf/eventusermodel/EventWorkbookBuilder.java @@ -20,7 +20,7 @@ import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.model.HSSFFormulaParser; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.BoundSheetRecord; import org.apache.poi.hssf.record.EOFRecord; import org.apache.poi.hssf.record.ExternSheetRecord; @@ -30,39 +30,31 @@ import org.apache.poi.hssf.record.SupBookRecord; import org.apache.poi.hssf.usermodel.HSSFWorkbook; /** - * When working with the EventUserModel, if you want to + * When working with the EventUserModel, if you want to * process formulas, you need an instance of - * {@link Workbook} to pass to a {@link HSSFWorkbook}, - * to finally give to {@link HSSFFormulaParser}, + * {@link InternalWorkbook} to pass to a {@link HSSFWorkbook}, + * to finally give to {@link HSSFFormulaParser}, * and this will build you stub ones. * Since you're working with the EventUserModel, you - * wouldn't want to get a full {@link Workbook} and + * wouldn't want to get a full {@link InternalWorkbook} and * {@link HSSFWorkbook}, as they would eat too much memory. * Instead, you should collect a few key records as they * go past, then call this once you have them to build a - * stub {@link Workbook}, and from that a stub + * stub {@link InternalWorkbook}, and from that a stub * {@link HSSFWorkbook}, to use with the {@link HSSFFormulaParser}. - * + * * The records you should collect are: * * {@link ExternSheetRecord} * * {@link BoundSheetRecord} - * You should probably also collect {@link SSTRecord}, + * You should probably also collect {@link SSTRecord}, * but it's not required to pass this in. - * + * * To help, this class includes a HSSFListener wrapper * that will do the collecting for you. */ public class EventWorkbookBuilder { - /** - * Wraps up your stub {@link Workbook} as a stub - * {@link HSSFWorkbook}, ready for passing to - * {@link HSSFFormulaParser} - * @param workbook A stub {@link Workbook} - */ - public static HSSFWorkbook createStubHSSFWorkbook(Workbook workbook) { - return new StubHSSFWorkbook(workbook); - } - + + /** * Creates a stub Workbook from the supplied records, * suitable for use with the {@link HSSFFormulaParser} @@ -71,10 +63,10 @@ public class EventWorkbookBuilder { * @param sst The SSTRecord in your file. * @return A stub Workbook suitable for use with {@link HSSFFormulaParser} */ - public static Workbook createStubWorkbook(ExternSheetRecord[] externs, + public static InternalWorkbook createStubWorkbook(ExternSheetRecord[] externs, BoundSheetRecord[] bounds, SSTRecord sst) { List wbRecords = new ArrayList(); - + // Core Workbook records go first if(bounds != null) { for(int i=0; i(); @@ -187,11 +189,11 @@ public final class Workbook { * @param recs an array of Record objects * @return Workbook object */ - public static Workbook createWorkbook(List recs) { + public static InternalWorkbook createWorkbook(List recs) { if (log.check( POILogger.DEBUG )) log.log(DEBUG, "Workbook (readfile) created with reclen=", Integer.valueOf(recs.size())); - Workbook retval = new Workbook(); + InternalWorkbook retval = new InternalWorkbook(); List records = new ArrayList(recs.size() / 3); retval.records.setRecords(records); @@ -329,11 +331,11 @@ public final class Workbook { * Creates an empty workbook object with three blank sheets and all the empty * fields. Use this to create a workbook from scratch. */ - public static Workbook createWorkbook() + public static InternalWorkbook createWorkbook() { if (log.check( POILogger.DEBUG )) log.log( DEBUG, "creating new workbook from scratch" ); - Workbook retval = new Workbook(); + InternalWorkbook retval = new InternalWorkbook(); List records = new ArrayList( 30 ); retval.records.setRecords(records); List formats = retval.formats; diff --git a/src/java/org/apache/poi/hssf/model/Sheet.java b/src/java/org/apache/poi/hssf/model/Sheet.java index 9bb93a603e..90a9a109ed 100644 --- a/src/java/org/apache/poi/hssf/model/Sheet.java +++ b/src/java/org/apache/poi/hssf/model/Sheet.java @@ -91,7 +91,7 @@ import org.apache.poi.util.POILogger; * @author Brian Sanders (kestrel at burdell dot org) Active Cell support * @author Jean-Pierre Paris (jean-pierre.paris at m4x dot org) (Just a little) * - * @see org.apache.poi.hssf.model.Workbook + * @see org.apache.poi.hssf.model.InternalWorkbook * @see org.apache.poi.hssf.usermodel.HSSFSheet */ public final class Sheet { @@ -151,7 +151,7 @@ public final class Sheet { * * @return Sheet object with all values set to those read from the file * - * @see org.apache.poi.hssf.model.Workbook + * @see org.apache.poi.hssf.model.InternalWorkbook * @see org.apache.poi.hssf.record.Record */ public static Sheet createSheet(RecordStream rs) { diff --git a/src/java/org/apache/poi/hssf/record/FormatRecord.java b/src/java/org/apache/poi/hssf/record/FormatRecord.java index 2d2f238c51..f587d57c91 100644 --- a/src/java/org/apache/poi/hssf/record/FormatRecord.java +++ b/src/java/org/apache/poi/hssf/record/FormatRecord.java @@ -58,7 +58,7 @@ public final class FormatRecord extends StandardRecord { * get the format index code (for built in formats) * * @return the format index code - * @see org.apache.poi.hssf.model.Workbook + * @see org.apache.poi.hssf.model.InternalWorkbook */ public int getIndexCode() { return field_1_index_code; diff --git a/src/java/org/apache/poi/hssf/record/PaletteRecord.java b/src/java/org/apache/poi/hssf/record/PaletteRecord.java index a58eea67d4..2f222465b6 100644 --- a/src/java/org/apache/poi/hssf/record/PaletteRecord.java +++ b/src/java/org/apache/poi/hssf/record/PaletteRecord.java @@ -34,35 +34,32 @@ public final class PaletteRecord extends StandardRecord { public final static byte STANDARD_PALETTE_SIZE = (byte) 56; /** The byte index of the first color */ public final static short FIRST_COLOR_INDEX = (short) 0x8; - - private List field_2_colors; - public PaletteRecord() - { + private final List _colors; + + public PaletteRecord() { PColor[] defaultPalette = createDefaultPalette(); - field_2_colors = new ArrayList(defaultPalette.length); + _colors = new ArrayList(defaultPalette.length); for (int i = 0; i < defaultPalette.length; i++) { - field_2_colors.add(defaultPalette[i]); + _colors.add(defaultPalette[i]); } } - public PaletteRecord(RecordInputStream in) - { + public PaletteRecord(RecordInputStream in) { int field_1_numcolors = in.readShort(); - field_2_colors = new ArrayList(field_1_numcolors); + _colors = new ArrayList(field_1_numcolors); for (int k = 0; k < field_1_numcolors; k++) { - field_2_colors.add(new PColor(in)); - } + _colors.add(new PColor(in)); + } } - public String toString() - { + public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("[PALETTE]\n"); - buffer.append(" numcolors = ").append(field_2_colors.size()).append('\n'); - for (int i = 0; i < field_2_colors.size(); i++) { - PColor c = field_2_colors.get(i); + buffer.append(" numcolors = ").append(_colors.size()).append('\n'); + for (int i = 0; i < _colors.size(); i++) { + PColor c = _colors.get(i); buffer.append("* colornum = ").append(i).append('\n'); buffer.append(c.toString()); buffer.append("/*colornum = ").append(i).append('\n'); @@ -71,20 +68,18 @@ public final class PaletteRecord extends StandardRecord { return buffer.toString(); } - public void serialize(LittleEndianOutput out) - { - out.writeShort(field_2_colors.size()); - for (int i = 0; i < field_2_colors.size(); i++) { - field_2_colors.get(i).serialize(out); + public void serialize(LittleEndianOutput out) { + out.writeShort(_colors.size()); + for (int i = 0; i < _colors.size(); i++) { + _colors.get(i).serialize(out); } } protected int getDataSize() { - return 2 + field_2_colors.size() * PColor.ENCODED_SIZE; + return 2 + _colors.size() * PColor.ENCODED_SIZE; } - public short getSid() - { + public short getSid() { return sid; } @@ -94,16 +89,14 @@ public final class PaletteRecord extends StandardRecord { * @return the RGB triplet for the color, or null if the specified index * does not exist */ - public byte[] getColor(short byteIndex) { + public byte[] getColor(int byteIndex) { int i = byteIndex - FIRST_COLOR_INDEX; - if (i < 0 || i >= field_2_colors.size()) - { + if (i < 0 || i >= _colors.size()) { return null; } - PColor color = field_2_colors.get(i); - return new byte[] { color.red, color.green, color.blue }; + return _colors.get(i).getTriplet(); } - + /** * Sets the color value at a given index * @@ -120,18 +113,16 @@ public final class PaletteRecord extends StandardRecord { { return; } - // may need to grow - fill intervening pallette entries with black - while (field_2_colors.size() <= i) { - field_2_colors.add(new PColor(0, 0, 0)); + // may need to grow - fill intervening palette entries with black + while (_colors.size() <= i) { + _colors.add(new PColor(0, 0, 0)); } PColor custColor = new PColor(red, green, blue); - field_2_colors.set(i, custColor); + _colors.set(i, custColor); } - + /** * Creates the default palette as PaletteRecord binary data - * - * @see org.apache.poi.hssf.model.Workbook#createPalette */ private static PColor[] createDefaultPalette() { @@ -199,41 +190,45 @@ public final class PaletteRecord extends StandardRecord { return new PColor(r, g, b); } -/** - * PColor - element in the list of colors - consider it a "struct" - */ -private static final class PColor { - public static final short ENCODED_SIZE = 4; - public byte red; - public byte green; - public byte blue; + /** + * PColor - element in the list of colors + */ + private static final class PColor { + public static final short ENCODED_SIZE = 4; + private int _red; + private int _green; + private int _blue; - public PColor(int red, int green, int blue) { - this.red=(byte) red; - this.green=(byte) green; - this.blue=(byte) blue; - } + public PColor(int red, int green, int blue) { + _red = red; + _green = green; + _blue = blue; + } - public PColor(RecordInputStream in) { - red=in.readByte(); - green=in.readByte(); - blue=in.readByte(); - in.readByte(); // unused - } + public byte[] getTriplet() { + return new byte[] { (byte) _red, (byte) _green, (byte) _blue }; + } - public void serialize(LittleEndianOutput out) { - out.writeByte(red); - out.writeByte(green); - out.writeByte(blue); - out.writeByte(0); - } + public PColor(RecordInputStream in) { + _red = in.readByte(); + _green = in.readByte(); + _blue = in.readByte(); + in.readByte(); // unused + } - public String toString() { - StringBuffer buffer = new StringBuffer(); - buffer.append(" red = ").append(red & 0xff).append('\n'); - buffer.append(" green = ").append(green & 0xff).append('\n'); - buffer.append(" blue = ").append(blue & 0xff).append('\n'); - return buffer.toString(); - } + public void serialize(LittleEndianOutput out) { + out.writeByte(_red); + out.writeByte(_green); + out.writeByte(_blue); + out.writeByte(0); + } + + public String toString() { + StringBuffer buffer = new StringBuffer(); + buffer.append(" red = ").append(_red & 0xff).append('\n'); + buffer.append(" green = ").append(_green & 0xff).append('\n'); + buffer.append(" blue = ").append(_blue & 0xff).append('\n'); + return buffer.toString(); + } + } } -} \ No newline at end of file diff --git a/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java b/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java index c336e14d30..e938552c64 100644 --- a/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java +++ b/src/java/org/apache/poi/hssf/record/RecalcIdRecord.java @@ -25,12 +25,10 @@ import org.apache.poi.util.LittleEndianOutput; * Description: This record contains an ID that marks when a worksheet was last * recalculated. It's an optimization Excel uses to determine if it * needs to recalculate the spreadsheet when it's opened. So far, only - * the two engine ids 0x80 0x38 0x01 0x00 + * the two engine ids 0x80 0x38 0x01 0x00 * and 0x60 0x69 0x01 0x00 have been seen.

* REFERENCE: http://chicago.sourceforge.net/devel/docs/excel/biff8.html

* @author Luc Girardin (luc dot girardin at macrofocus dot com) - * - * @see org.apache.poi.hssf.model.Workbook */ public final class RecalcIdRecord extends StandardRecord { public final static short sid = 0x01C1; diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java index 551d503560..6557a81226 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCell.java @@ -23,7 +23,7 @@ import java.util.*; import org.apache.poi.hssf.model.HSSFFormulaParser; import org.apache.poi.hssf.model.Sheet; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.BlankRecord; import org.apache.poi.hssf.record.BoolErrRecord; import org.apache.poi.hssf.record.CellValueRecordInterface; @@ -229,7 +229,7 @@ public class HSSFCell implements Cell { /** * Returns the Workbook that this Cell is bound to */ - protected Workbook getBoundWorkbook() { + protected InternalWorkbook getBoundWorkbook() { return _book.getWorkbook(); } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java b/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java index 606fe3c5fd..92642b30eb 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFCellStyle.java @@ -18,7 +18,7 @@ package org.apache.poi.hssf.usermodel; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.ExtendedFormatRecord; import org.apache.poi.hssf.record.FontRecord; import org.apache.poi.hssf.record.StyleRecord; @@ -38,7 +38,7 @@ import org.apache.poi.ss.usermodel.Font; public final class HSSFCellStyle implements CellStyle { private ExtendedFormatRecord _format = null; private short _index = 0; - private Workbook _workbook = null; + private InternalWorkbook _workbook = null; /** Creates new HSSFCellStyle why would you want to do this?? */ @@ -46,7 +46,7 @@ public final class HSSFCellStyle implements CellStyle { { this(index, rec, workbook.getWorkbook()); } - protected HSSFCellStyle(short index, ExtendedFormatRecord rec, Workbook workbook) + protected HSSFCellStyle(short index, ExtendedFormatRecord rec, InternalWorkbook workbook) { _workbook = workbook; _index = index; @@ -125,7 +125,7 @@ public final class HSSFCellStyle implements CellStyle { * the DataFormat against the supplied low level workbook * @see org.apache.poi.hssf.usermodel.HSSFDataFormat */ - public String getDataFormatString(org.apache.poi.hssf.model.Workbook workbook) { + public String getDataFormatString(org.apache.poi.hssf.model.InternalWorkbook workbook) { HSSFDataFormat format = new HSSFDataFormat( workbook ); return format.getFormat(getDataFormat()); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java b/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java index 28fd8e0557..f18f377387 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFDataFormat.java @@ -29,7 +29,7 @@ import java.util.List; import java.util.ListIterator; import java.util.Vector; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.FormatRecord; import org.apache.poi.ss.usermodel.BuiltinFormats; import org.apache.poi.ss.usermodel.DataFormat; @@ -37,15 +37,15 @@ import org.apache.poi.ss.usermodel.DataFormat; /** * Identifies both built-in and user defined formats within a workbook.

* See {@link BuiltinFormats} for a list of supported built-in formats.

- * + * * International Formats
- * Since version 2003 Excel has supported international formats. These are denoted + * Since version 2003 Excel has supported international formats. These are denoted * with a prefix "[$-xxx]" (where xxx is a 1-7 digit hexadecimal number). - * See the Microsoft article + * See the Microsoft article * * Creating international number formats * for more details on these codes. - * + * * @author Andrew C. Oliver (acoliver at apache dot org) * @author Shawn M. Laubach (slaubach at apache dot org) */ @@ -53,7 +53,7 @@ public final class HSSFDataFormat implements DataFormat { private static final String[] _builtinFormats = BuiltinFormats.getAll(); private final Vector _formats = new Vector(); - private final Workbook _workbook; + private final InternalWorkbook _workbook; private boolean _movedBuiltins = false; // Flag to see if need to // check the built in list // or if the regular list @@ -64,7 +64,7 @@ public final class HSSFDataFormat implements DataFormat { * access to the workbooks format records. * @param workbook the workbook the formats are tied to. */ - public HSSFDataFormat(Workbook workbook) { + HSSFDataFormat(InternalWorkbook workbook) { _workbook = workbook; @SuppressWarnings("unchecked") diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFEvaluationWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFEvaluationWorkbook.java index 7b55d81db7..1f10a926ad 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFEvaluationWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFEvaluationWorkbook.java @@ -18,7 +18,7 @@ package org.apache.poi.hssf.usermodel; import org.apache.poi.hssf.model.HSSFFormulaParser; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.NameRecord; import org.apache.poi.hssf.record.aggregates.FormulaRecordAggregate; import org.apache.poi.hssf.record.formula.NamePtg; @@ -42,7 +42,7 @@ import org.apache.poi.ss.formula.FormulaType; public final class HSSFEvaluationWorkbook implements FormulaRenderingWorkbook, EvaluationWorkbook, FormulaParsingWorkbook { private final HSSFWorkbook _uBook; - private final Workbook _iBook; + private final InternalWorkbook _iBook; public static HSSFEvaluationWorkbook create(HSSFWorkbook book) { if (book == null) { diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFName.java b/src/java/org/apache/poi/hssf/usermodel/HSSFName.java index 662ec2e1aa..579d3494e9 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFName.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFName.java @@ -18,7 +18,7 @@ package org.apache.poi.hssf.usermodel; import org.apache.poi.hssf.model.HSSFFormulaParser; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.NameRecord; import org.apache.poi.hssf.record.formula.Ptg; import org.apache.poi.ss.formula.FormulaType; @@ -114,7 +114,7 @@ public final class HSSFName implements Name { public void setNameName(String nameName){ validateName(nameName); - Workbook wb = _book.getWorkbook(); + InternalWorkbook wb = _book.getWorkbook(); _definedNameRec.setNameText(nameName); int sheetNumber = _definedNameRec.getSheetNumber(); @@ -135,7 +135,7 @@ public final class HSSFName implements Name { private static void validateName(String name){ if(name.length() == 0) throw new IllegalArgumentException("Name cannot be blank"); - + char c = name.charAt(0); if(!(c == '_' || Character.isLetter(c)) || name.indexOf(' ') != -1) { throw new IllegalArgumentException("Invalid name: '"+name+"'; Names must begin with a letter or underscore and not contain spaces"); @@ -249,9 +249,7 @@ public final class HSSFName implements Name { * * @param value true indicates the name refers to a function. */ - public void setFunction(boolean value) { - _definedNameRec.setFunction(value); - - } - + public void setFunction(boolean value) { + _definedNameRec.setFunction(value); + } } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java b/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java index 269cabe423..e69a203b9f 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFRichTextString.java @@ -19,7 +19,7 @@ package org.apache.poi.hssf.usermodel; import java.util.Iterator; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.LabelSSTRecord; import org.apache.poi.hssf.record.UnicodeString; import org.apache.poi.ss.usermodel.Font; @@ -74,7 +74,7 @@ public final class HSSFRichTextString implements Comparable, public static final short NO_FONT = 0; private UnicodeString _string; - private Workbook _book; + private InternalWorkbook _book; private LabelSSTRecord _record; public HSSFRichTextString() @@ -90,7 +90,7 @@ public final class HSSFRichTextString implements Comparable, } } - HSSFRichTextString(Workbook book, LabelSSTRecord record) { + HSSFRichTextString(InternalWorkbook book, LabelSSTRecord record) { setWorkbookReferences(book, record); _string = book.getSSTString(record.getSSTIndex()); @@ -99,7 +99,7 @@ public final class HSSFRichTextString implements Comparable, /** This must be called to setup the internal work book references whenever * a RichTextString is added to a cell */ - void setWorkbookReferences(Workbook book, LabelSSTRecord record) { + void setWorkbookReferences(InternalWorkbook book, LabelSSTRecord record) { _book = book; _record = record; } diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java index c7972ecc93..6fa9b68dd6 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFSheet.java @@ -32,7 +32,7 @@ import java.util.TreeMap; import org.apache.poi.ddf.EscherRecord; import org.apache.poi.hssf.model.Sheet; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.CellValueRecordInterface; import org.apache.poi.hssf.record.DVRecord; import org.apache.poi.hssf.record.EscherAggregate; @@ -82,7 +82,7 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet { private final Sheet _sheet; /** stores rows by zero-based row number */ private final TreeMap _rows; - protected final Workbook _book; + protected final InternalWorkbook _book; protected final HSSFWorkbook _workbook; private int _firstrow; private int _lastrow; @@ -636,7 +636,7 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet { /** * Sets whether the worksheet is displayed from right to left instead of from left to right. - * + * * @param value true for right to left, false otherwise. */ public void setRightToLeft(boolean value) @@ -1693,7 +1693,7 @@ public final class HSSFSheet implements org.apache.poi.ss.usermodel.Sheet { FontRenderContext frc = new FontRenderContext(null, true, true); - HSSFWorkbook wb = new HSSFWorkbook(_book); + HSSFWorkbook wb = HSSFWorkbook.create(_book); // TODO - is it important to not use _workbook? HSSFFont defaultFont = wb.getFontAt((short) 0); str = new AttributedString("" + defaultChar); diff --git a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java index ca10a6f874..bd8fa768fc 100644 --- a/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java +++ b/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java @@ -38,7 +38,7 @@ import org.apache.poi.hssf.OldExcelFormatException; import org.apache.poi.hssf.model.HSSFFormulaParser; import org.apache.poi.hssf.model.RecordStream; import org.apache.poi.hssf.model.Sheet; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.AbstractEscherHolderRecord; import org.apache.poi.hssf.record.BackupRecord; import org.apache.poi.hssf.record.DrawingGroupRecord; @@ -78,13 +78,13 @@ import org.apache.poi.util.POILogger; * will construct whether they are reading or writing a workbook. It is also the * top level object for creating new sheets/etc. * - * @see org.apache.poi.hssf.model.Workbook + * @see org.apache.poi.hssf.model.InternalWorkbook * @see org.apache.poi.hssf.usermodel.HSSFSheet * @author Andrew C. Oliver (acoliver at apache dot org) * @author Glen Stampoultzis (glens at apache.org) * @author Shawn Laubach (slaubach at apache dot org) */ -public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.usermodel.Workbook { +public final class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.usermodel.Workbook { private static final Pattern COMMA_PATTERN = Pattern.compile(","); private static final int MAX_ROW = 0xFFFF; private static final short MAX_COLUMN = (short)0x00FF; @@ -104,7 +104,7 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm * this is the reference to the low level Workbook object */ - private Workbook workbook; + private InternalWorkbook workbook; /** * this holds the HSSFSheet objects attached to this workbook @@ -162,25 +162,26 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm private static POILogger log = POILogFactory.getLogger(HSSFWorkbook.class); + public static HSSFWorkbook create(InternalWorkbook book) { + return new HSSFWorkbook(book); + } /** * Creates new HSSFWorkbook from scratch (start here!) * */ - public HSSFWorkbook() - { - this(Workbook.createWorkbook()); + public HSSFWorkbook() { + this(InternalWorkbook.createWorkbook()); } - protected HSSFWorkbook( Workbook book ) - { - super(null, null); - workbook = book; - _sheets = new ArrayList( INITIAL_CAPACITY ); - names = new ArrayList( INITIAL_CAPACITY ); - } + private HSSFWorkbook(InternalWorkbook book) { + super(null, null); + workbook = book; + _sheets = new ArrayList(INITIAL_CAPACITY); + names = new ArrayList(INITIAL_CAPACITY); + } public HSSFWorkbook(POIFSFileSystem fs) throws IOException { - this(fs,true); + this(fs,true); } /** @@ -275,7 +276,7 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm List records = RecordFactory.createRecords(stream); - workbook = Workbook.createWorkbook(records); + workbook = InternalWorkbook.createWorkbook(records); setPropertiesFromWorkbook(workbook); int recOffset = workbook.getNumRecords(); int sheetNum = 0; @@ -321,7 +322,7 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm * used internally to set the workbook properties. */ - private void setPropertiesFromWorkbook(Workbook book) + private void setPropertiesFromWorkbook(InternalWorkbook book) { this.workbook = book; @@ -1225,7 +1226,7 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm * @return byte[] array containing the binary representation of this workbook and all contained * sheets, rows, cells, etc. * - * @see org.apache.poi.hssf.model.Workbook + * @see org.apache.poi.hssf.model.InternalWorkbook * @see org.apache.poi.hssf.model.Sheet */ public byte[] getBytes() { @@ -1290,8 +1291,7 @@ public class HSSFWorkbook extends POIDocument implements org.apache.poi.ss.userm return workbook.getSSTString(index).getString(); } - protected Workbook getWorkbook() - { + InternalWorkbook getWorkbook() { return workbook; } diff --git a/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java b/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java index 2c56ea57a1..483a38d755 100644 --- a/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java +++ b/src/testcases/org/apache/poi/hssf/eventusermodel/TestEventWorkbookBuilder.java @@ -27,7 +27,7 @@ import junit.framework.TestCase; import org.apache.poi.hssf.HSSFTestDataSamples; import org.apache.poi.hssf.eventusermodel.EventWorkbookBuilder.SheetRecordCollectingListener; import org.apache.poi.hssf.model.HSSFFormulaParser; -import org.apache.poi.hssf.model.Workbook; +import org.apache.poi.hssf.model.InternalWorkbook; import org.apache.poi.hssf.record.FormulaRecord; import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.formula.Ptg; @@ -41,13 +41,13 @@ import org.apache.poi.poifs.filesystem.POIFSFileSystem; public final class TestEventWorkbookBuilder extends TestCase { private MockHSSFListener mockListen; private SheetRecordCollectingListener listener; - + public void setUp() { HSSFRequest req = new HSSFRequest(); mockListen = new MockHSSFListener(); listener = new SheetRecordCollectingListener(mockListen); req.addListenerForAllRecords(listener); - + HSSFEventFactory factory = new HSSFEventFactory(); try { InputStream is = HSSFTestDataSamples.openSampleFileStream("3dFormulas.xls"); @@ -56,94 +56,94 @@ public final class TestEventWorkbookBuilder extends TestCase { } catch (IOException e) { throw new RuntimeException(e); } - } - + } + public void testBasics() { assertNotNull(listener.getSSTRecord()); assertNotNull(listener.getBoundSheetRecords()); assertNotNull(listener.getExternSheetRecords()); } - + public void testGetStubWorkbooks() { assertNotNull(listener.getStubWorkbook()); assertNotNull(listener.getStubHSSFWorkbook()); } - + public void testContents() { assertEquals(2, listener.getSSTRecord().getNumStrings()); assertEquals(3, listener.getBoundSheetRecords().length); assertEquals(1, listener.getExternSheetRecords().length); - + assertEquals(3, listener.getStubWorkbook().getNumSheets()); - - Workbook ref = listener.getStubWorkbook(); + + InternalWorkbook ref = listener.getStubWorkbook(); assertEquals("Sh3", ref.findSheetNameFromExternSheet(0)); assertEquals("Sheet1", ref.findSheetNameFromExternSheet(1)); assertEquals("S2", ref.findSheetNameFromExternSheet(2)); } - + public void testFormulas() { - + FormulaRecord[] fRecs = mockListen.getFormulaRecords(); - + // Check our formula records assertEquals(6, fRecs.length); - - Workbook stubWB = listener.getStubWorkbook(); + + InternalWorkbook stubWB = listener.getStubWorkbook(); assertNotNull(stubWB); HSSFWorkbook stubHSSF = listener.getStubHSSFWorkbook(); assertNotNull(stubHSSF); - + // Check these stubs have the right stuff on them assertEquals("Sheet1", stubWB.getSheetName(0)); assertEquals("S2", stubWB.getSheetName(1)); assertEquals("Sh3", stubWB.getSheetName(2)); - + // Check we can get the formula without breaking for(int i=0; i