ASF Bugzilla – Attachment 4269 Details for
Bug 15660
[PATCH] Andy's proposed EventRecordFactory refactoring...
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
patch file
thepatch2 (text/plain), 29.40 KB, created by
Andy Oliver
on 2002-12-25 19:08:39 UTC
(
hide
)
Description:
patch file
Filename:
MIME Type:
Creator:
Andy Oliver
Created:
2002-12-25 19:08:39 UTC
Size:
29.40 KB
patch
obsolete
>Index: src/java/org/apache/poi/hssf/eventmodel/ModelFactory.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/eventmodel/ModelFactory.java,v >retrieving revision 1.1 >diff -u -r1.1 ModelFactory.java >--- src/java/org/apache/poi/hssf/eventmodel/ModelFactory.java 23 Nov 2002 18:58:18 -0000 1.1 >+++ src/java/org/apache/poi/hssf/eventmodel/ModelFactory.java 25 Dec 2002 16:15:16 -0000 >@@ -131,8 +131,10 @@ > > if (rec.getSid() == EOFRecord.sid) { > lastEOF = true; >+ currentmodel.addRecord(rec); > throwEvent(currentmodel); > } else { >+ currentmodel.addRecord(rec); > lastEOF = false; > } > >Index: src/java/org/apache/poi/hssf/model/Model.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/Model.java,v >retrieving revision 1.1 >diff -u -r1.1 Model.java >--- src/java/org/apache/poi/hssf/model/Model.java 23 Nov 2002 18:58:52 -0000 1.1 >+++ src/java/org/apache/poi/hssf/model/Model.java 25 Dec 2002 16:15:17 -0000 >@@ -1,11 +1,20 @@ > package org.apache.poi.hssf.model; > >+import org.apache.poi.hssf.record.Record; >+ > /** >- * enclosing_type describe the purpose here >+ * Model is a market interface for Sheet/Workbook etc. > * >- * @author Andrew C. Oliver androliv@cisco.com >+ * @author Andrew C. Oliver acoliver@apache.org > */ > public interface Model > { >+ >+ /** >+ * Handles adding a record to a model. Model must set all properties etc >+ * from here >+ * @param record is the record to add >+ */ >+ public void addRecord(Record record); > > } >Index: src/java/org/apache/poi/hssf/model/Sheet.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/Sheet.java,v >retrieving revision 1.21 >diff -u -r1.21 Sheet.java >--- src/java/org/apache/poi/hssf/model/Sheet.java 16 Dec 2002 11:16:41 -0000 1.21 >+++ src/java/org/apache/poi/hssf/model/Sheet.java 25 Dec 2002 16:15:17 -0000 >@@ -117,6 +117,11 @@ > private Iterator rowRecIterator = null; > protected int eofLoc = 0; > >+ private int INITIAL_SIZE = 1000; >+ >+ private boolean isfirstcell; >+ private boolean isfirstrow; >+ > /** > * Creates new Sheet with no intialization --useless at this point > * @see #createSheet(List,int,int) >@@ -124,6 +129,9 @@ > > public Sheet() > { >+ records = new ArrayList(INITIAL_SIZE); >+ isfirstcell = true; >+ isfirstrow = true; > } > > /** >@@ -135,7 +143,7 @@ > * is normally called via Workbook. > * > * @param recs array containing those records in the sheet in sequence (normally obtained from RecordFactory) >- * @param sheetnum integer specifying the sheet's number (0,1 or 2 in this release) >+ * @param sheetnum integer specifying the sheet's number > * @param offset of the sheet's BOF record > * > * @return Sheet object with all values set to those read from the file >@@ -316,7 +324,7 @@ > * only the record offset is assumed to be 0. > * > * @param records array containing those records in the sheet in sequence (normally obtained from RecordFactory) >- * @param sheetnum integer specifying the sheet's number (0,1 or 2 in this release) >+ * @param sheetnum integer specifying the sheet's number > * @return Sheet object > */ > >@@ -431,10 +439,9 @@ > } > > public int getNumMergedRegions() >- { >- return merged!=null ? merged.getNumAreas() : 0; >- } >- >+ { >+ return merged.getNumAreas(); >+ } > > /** > * This is basically a kludge to deal with the now obsolete Label records. If >@@ -899,26 +906,6 @@ > loc = dimsloc; > cells.removeCell(col); > >- /* >- * for (int k = loc; k < records.size(); k++) >- * { >- * Record rec = ( Record ) records.get(k); >- * >- * // checkDimsLoc(rec,k); >- * if (rec.isValue()) >- * { >- * CellValueRecordInterface cell = >- * ( CellValueRecordInterface ) rec; >- * >- * if ((cell.getRow() == col.getRow()) >- * && (cell.getColumn() == col.getColumn())) >- * { >- * records.remove(k); >- * break; >- * } >- * } >- * } >- */ > } > > /** >@@ -938,21 +925,6 @@ > log.log(log.DEBUG, "replaceValueRecord "); > cells.insertCell(newval); > >- /* >- * CellValueRecordInterface oldval = getNextValueRecord(); >- * >- * while (oldval != null) >- * { >- * if (oldval.isEqual(newval)) >- * { >- * records.set(( short ) (getLoc() - 1), newval); >- * return; >- * } >- * oldval = getNextValueRecord(); >- * } >- * addValueRecord(newval.getRow(), newval); >- * setLoc(dimsloc); >- */ > } > > /** >@@ -986,41 +958,6 @@ > > rows.insertRow(row); > >- /* >- * for (int k = loc; k < records.size(); k++) >- * { >- * Record rec = ( Record ) records.get(k); >- * >- * if (rec.getSid() == IndexRecord.sid) >- * { >- * index = ( IndexRecord ) rec; >- * } >- * if (rec.getSid() == RowRecord.sid) >- * { >- * RowRecord rowrec = ( RowRecord ) rec; >- * >- * if (rowrec.getRowNumber() > row.getRowNumber()) >- * { >- * records.add(k, row); >- * loc = k; >- * break; >- * } >- * } >- * if (rec.getSid() == WindowTwoRecord.sid) >- * { >- * records.add(k, row); >- * loc = k; >- * break; >- * } >- * } >- * if (index != null) >- * { >- * if (index.getLastRowAdd1() <= row.getRowNumber()) >- * { >- * index.setLastRowAdd1(row.getRowNumber() + 1); >- * } >- * } >- */ > log.log(log.DEBUG, "exit addRow"); > } > >@@ -1040,28 +977,6 @@ > setLoc(getDimsLoc()); > rows.removeRow(row); > >- /* >- * for (int k = loc; k < records.size(); k++) >- * { >- * Record rec = ( Record ) records.get(k); >- * >- * // checkDimsLoc(rec,k); >- * if (rec.getSid() == RowRecord.sid) >- * { >- * RowRecord rowrec = ( RowRecord ) rec; >- * >- * if (rowrec.getRowNumber() == row.getRowNumber()) >- * { >- * records.remove(k); >- * break; >- * } >- * } >- * if (rec.getSid() == WindowTwoRecord.sid) >- * { >- * break; >- * } >- * } >- */ > } > > /** >@@ -1091,66 +1006,9 @@ > return null; > } > return ( CellValueRecordInterface ) valueRecIterator.next(); >- >- /* >- * if (this.getLoc() < records.size()) >- * { >- * for (int k = getLoc(); k < records.size(); k++) >- * { >- * Record rec = ( Record ) records.get(k); >- * >- * this.setLoc(k + 1); >- * if (rec instanceof CellValueRecordInterface) >- * { >- * return ( CellValueRecordInterface ) rec; >- * } >- * } >- * } >- * return null; >- */ > } > >- /** >- * get the NEXT RowRecord or CellValueRecord(from LOC). The first record that >- * is a Row record or CellValueRecord(starting at LOC) will be returned. >- * <P> >- * This method is "loc" sensitive. Meaning you need to set LOC to where you >- * want it to start searching. If you don't know do this: setLoc(getDimsLoc). >- * When adding several rows you can just start at the last one by leaving loc >- * at what this sets it to. For this method, set loc to dimsloc to start with. >- * subsequent calls will return rows in (physical) sequence or NULL when you get to the end. >- * >- * @return RowRecord representing the next row record or CellValueRecordInterface >- * representing the next cellvalue or NULL if there are no more >- * @see #setLoc(int) >- * >- */ >- >-/* public Record getNextRowOrValue() >- { >- log.debug((new StringBuffer("getNextRow loc= ")).append(loc) >- .toString()); >- if (this.getLoc() < records.size()) >- { >- for (int k = this.getLoc(); k < records.size(); k++) >- { >- Record rec = ( Record ) records.get(k); >- >- this.setLoc(k + 1); >- if (rec.getSid() == RowRecord.sid) >- { >- return rec; >- } >- else if (rec.isValue()) >- { >- return rec; >- } >- } >- } >- return null; >- } >- */ >- >+ > /** > * get the NEXT RowRecord (from LOC). The first record that is a Row record > * (starting at LOC) will be returned. >@@ -1179,19 +1037,7 @@ > } > return ( RowRecord ) rowRecIterator.next(); > >-/* if (this.getLoc() < records.size()) >- { >- for (int k = this.getLoc(); k < records.size(); k++) >- { >- Record rec = ( Record ) records.get(k); > >- this.setLoc(k + 1); >- if (rec.getSid() == RowRecord.sid) >- { >- return ( RowRecord ) rec; >- } >- } >- }*/ > } > > /** >@@ -1217,26 +1063,6 @@ > log.log(log.DEBUG, "getNextRow loc= " + loc); > return rows.getRow(rownum); > >- /* >- * if (this.getLoc() < records.size()) >- * { >- * for (int k = this.getLoc(); k < records.size(); k++) >- * { >- * Record rec = ( Record ) records.get(k); >- * >- * this.setLoc(k + 1); >- * if (rec.getSid() == RowRecord.sid) >- * { >- * if ((( RowRecord ) rec).getRowNumber() == rownum) >- * { >- * return ( RowRecord ) rec; >- * } >- * } >- * } >- * } >- */ >- >- // return null; > } > > /** >@@ -2204,6 +2030,134 @@ > public int getEofLoc() > { > return eofLoc; >+ } >+ >+ /** >+ * @see org.apache.poi.hssf.model.Model#addRecord(Record) >+ */ >+ public void addRecord(Record rec) >+ { >+ log.log(log.DEBUG, >+ "Sheet addRecord (existing file)" >+ ); >+ //int bofEofNestingLevel = 0; >+ >+ if (rec.getSid() == LabelRecord.sid) >+ { >+ log.log(log.DEBUG, "Hit label record."); >+ containsLabels = true; >+ } >+ else if (rec.getSid() == BOFRecord.sid) >+ { >+ // bofEofNestingLevel++; >+ // log.log(log.DEBUG, "Hit BOF record. Nesting increased to " + bofEofNestingLevel); >+ } >+ else if (rec.getSid() == EOFRecord.sid) >+ { >+ // --bofEofNestingLevel; >+ // log.log(log.DEBUG, "Hit EOF record. Nesting decreased to " + bofEofNestingLevel); >+ /* if (bofEofNestingLevel == 0) { >+ records.add(rec); >+ eofLoc = records.size(); >+ return; >+ }*/ >+ } >+ else if (rec.getSid() == DimensionsRecord.sid) >+ { >+ dims = ( DimensionsRecord ) rec; >+ dimsloc = records.size(); >+ } >+ else if (rec.getSid() == MergeCellsRecord.sid) >+ { >+ merged = ( MergeCellsRecord ) rec; >+ mergedloc = records.size(); >+ } >+ else if (rec.getSid() == ColumnInfoRecord.sid) >+ { >+ if (columnSizes == null) >+ { >+ columnSizes = new ArrayList(); >+ } >+ columnSizes.add(( ColumnInfoRecord ) rec); >+ } >+ else if (rec.getSid() == DefaultColWidthRecord.sid) >+ { >+ defaultcolwidth = ( DefaultColWidthRecord ) rec; >+ } >+ else if (rec.getSid() == DefaultRowHeightRecord.sid) >+ { >+ defaultrowheight = ( DefaultRowHeightRecord ) rec; >+ } >+ else if ( rec.isValue() ) >+ { >+ if ( isfirstcell ) >+ { >+ cells = new ValueRecordsAggregate(); >+ cells.insertCell((CellValueRecordInterface)rec); >+ rec = cells; >+ //cells.construct( k, reco ); >+ isfirstcell = false; >+ } >+ else >+ { >+ cells.insertCell((CellValueRecordInterface)rec); >+ rec = null; >+ } >+ } >+ else if ( rec.getSid() == StringRecord.sid ) >+ { >+ rec = null; >+ } >+ else if ( rec.getSid() == RowRecord.sid ) >+ { >+ if ( isfirstrow ) >+ { >+ rows = new RowRecordsAggregate(); >+ rows.insertRow((RowRecord)rec); >+ rec = rows; >+ //retval.rows.construct( k, recs ); >+ isfirstrow = false; >+ } >+ else >+ { >+ rows.insertRow((RowRecord)rec); >+ rec = null; >+ } >+ } >+ else if ( rec.getSid() == PrintGridlinesRecord.sid ) >+ { >+ printGridlines = (PrintGridlinesRecord) rec; >+ } >+ else if ( rec.getSid() == HeaderRecord.sid ) >+ { >+ header = (HeaderRecord) rec; >+ } >+ else if ( rec.getSid() == FooterRecord.sid ) >+ { >+ footer = (FooterRecord) rec; >+ } >+ else if ( rec.getSid() == PrintSetupRecord.sid ) >+ { >+ printSetup = (PrintSetupRecord) rec; >+ } >+ >+ if (rec != null) >+ { >+ records.add(rec); >+ } >+ >+ >+ if (rows == null) >+ { >+ rows = new RowRecordsAggregate(); >+ } >+ if (cells == null) >+ { >+ cells = new ValueRecordsAggregate(); >+ } >+ log.log(log.DEBUG, "sheet addRecord (existing file) exited"); >+ >+ > } > > } >Index: src/java/org/apache/poi/hssf/model/Workbook.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/model/Workbook.java,v >retrieving revision 1.23 >diff -u -r1.23 Workbook.java >--- src/java/org/apache/poi/hssf/model/Workbook.java 16 Dec 2002 11:16:41 -0000 1.23 >+++ src/java/org/apache/poi/hssf/model/Workbook.java 25 Dec 2002 16:15:17 -0000 >@@ -87,8 +87,6 @@ > * @author Andrew C. Oliver (acoliver at apache dot org) > * @author Glen Stampoultzis (glens at apache.org) > * @author Sergei Kozello (sergeikozello at mail.ru) >- * @author Luc Girardin (luc dot girardin at macrofocus dot com) >- * @author Dan Sherman (dsherman at isisph.com) > * @see org.apache.poi.hssf.usermodel.HSSFWorkbook > * @version 1.0-pre > */ >@@ -157,6 +155,7 @@ > */ > > public Workbook() { >+ records = new ArrayList(45); > } > > /** >@@ -172,7 +171,7 @@ > * @return Workbook object > */ > >- public static Workbook createWorkbook(List recs) { >+ /* public static Workbook createWorkbook(List recs) { > log.log(DEBUG, "Workbook (readfile) created with reclen=", > new Integer(recs.size())); > Workbook retval = new Workbook(); >@@ -245,10 +244,6 @@ > retval.formats.add(rec); > retval.maxformatid = retval.maxformatid >= ((FormatRecord)rec).getIndexCode() ? retval.maxformatid : ((FormatRecord)rec).getIndexCode(); > break; >- case DateWindow1904Record.sid : >- log.log(DEBUG, "found datewindow1904 record at " + k); >- retval.uses1904datewindowing = ((DateWindow1904Record)rec).getWindowing() == 1; >- break; > > default : > } >@@ -263,7 +258,7 @@ > retval.records = records; > log.log(DEBUG, "exit create workbook from existing file function"); > return retval; >- } >+ }*/ > > /** > * Creates an empty workbook object with three blank sheets and all the empty >@@ -674,11 +669,13 @@ > > // byte[] rec = (( byte [] ) bytes.get(k)); > // System.arraycopy(rec, 0, retval, pos, rec.length); >+ > Record record = (( Record ) records.get(k)); > // Let's skip RECALCID records, as they are only use for optimization > if(record.getSid() != RecalcIdRecord.sid || ((RecalcIdRecord)record).isNeeded()) { > pos += record.serialize(pos, retval); // rec.length; >- } >+ } >+ > } > log.log(DEBUG, "Exiting serialize workbook"); > return retval; >@@ -711,6 +708,7 @@ > > // byte[] rec = (( byte [] ) bytes.get(k)); > // System.arraycopy(rec, 0, data, offset + pos, rec.length); >+ > Record record = (( Record ) records.get(k)); > // Let's skip RECALCID records, as they are only use for optimization > if(record.getSid() != RecalcIdRecord.sid || ((RecalcIdRecord)record).isNeeded()) { >@@ -1936,6 +1934,78 @@ > { > return records; > } >+ /** >+ * @see org.apache.poi.hssf.model.Model#addRecord(Record) >+ */ >+ public void addRecord(Record rec) >+ { >+ int k = records.size(); >+ >+ switch (rec.getSid()) { >+ >+ case BoundSheetRecord.sid : >+ log.log(DEBUG, "found boundsheet record at " + k); >+ boundsheets.add(rec); >+ bspos = k; >+ break; >+ >+ case SSTRecord.sid : >+ log.log(DEBUG, "found sst record at " + k); >+ sst = ( SSTRecord ) rec; >+ break; >+ >+ case FontRecord.sid : >+ log.log(DEBUG, "found font record at " + k); >+ fontpos = k; >+ numfonts++; >+ break; >+ >+ case ExtendedFormatRecord.sid : >+ log.log(DEBUG, "found XF record at " + k); >+ xfpos = k; >+ numxfs++; >+ break; >+ >+ case TabIdRecord.sid : >+ log.log(DEBUG, "found tabid record at " + k); >+ tabpos = k; >+ break; >+ >+ case BackupRecord.sid : >+ log.log(DEBUG, "found backup record at " + k); >+ backuppos = k; >+ break; >+ case ExternSheetRecord.sid : >+ log.log(DEBUG, "found extern sheet record at " + k); >+ externSheet = ( ExternSheetRecord ) rec; >+ break; >+ case NameRecord.sid : >+ log.log(DEBUG, "found name record at " + k); >+ names.add(rec); >+ namepos = k; >+ break; >+ case 0x1AE : >+ //Havent Implement the sup book , because we dont need extern ranges >+ //for now >+ log.log(DEBUG, "found SupBook record at " + k); >+ supbookpos = k; >+ break; >+ case FormatRecord.sid : >+ log.log(DEBUG, "found format record at " + k); >+ formats.add(rec); >+ maxformatid = maxformatid >= ((FormatRecord)rec).getIndexCode() ? maxformatid : ((FormatRecord)rec).getIndexCode(); >+ break; >+ default : >+ } >+ records.add(rec); >+ >+ //What if we dont have any ranges and supbooks >+ if (supbookpos == 0) { >+ supbookpos = bspos + 1; >+ namepos = supbookpos + 1; >+ } >+ >+ log.log(DEBUG, "exit create workbook from existing file function"); } > > // public void insertChartRecords( List chartRecords ) > // { >@@ -1956,4 +2026,5 @@ > public boolean isUsing1904DateWindowing() { > return uses1904datewindowing; > } >+ > } >Index: src/java/org/apache/poi/hssf/record/FormulaRecord.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/FormulaRecord.java,v >retrieving revision 1.17 >diff -u -r1.17 FormulaRecord.java >--- src/java/org/apache/poi/hssf/record/FormulaRecord.java 28 Nov 2002 18:57:35 -0000 1.17 >+++ src/java/org/apache/poi/hssf/record/FormulaRecord.java 25 Dec 2002 16:15:17 -0000 >@@ -545,23 +545,20 @@ > .append("\n"); > buffer.append(" .expressionlength= ").append(getExpressionLength()) > .append("\n"); >- >- if (field_8_parsed_expr != null) { >- buffer.append(" .numptgsinarray = ").append(field_8_parsed_expr.size()) >- .append("\n"); >+ buffer.append(" .numptgsinarray = ").append(field_8_parsed_expr.size()) >+ .append("\n"); > > >- for (int k = 0; k < field_8_parsed_expr.size(); k++ ) { >+ for (int k = 0; k < field_8_parsed_expr.size(); k++ ) { > /* buffer.append("formula ").append(k).append(" ") >- .append(((Ptg)field_8_parsed_expr.get(k)).toFormulaString());*/ >- buffer.append("Formula ") >- .append(k) >- .append("=") >- .append(field_8_parsed_expr.get(k).toString()) >- .append("\n") >- .append(((Ptg)field_8_parsed_expr.get(k)).toDebugString()) >- .append("\n"); >- } >+ .append(((Ptg)field_8_parsed_expr.get(k)).toFormulaString());*/ >+ buffer.append("Formula ") >+ .append(k) >+ .append("=") >+ .append(field_8_parsed_expr.get(k).toString()) >+ .append("\n") >+ .append(((Ptg)field_8_parsed_expr.get(k)).toDebugString()) >+ .append("\n"); > } > > >Index: src/java/org/apache/poi/hssf/record/RecordFactory.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/record/RecordFactory.java,v >retrieving revision 1.13 >diff -u -r1.13 RecordFactory.java >--- src/java/org/apache/poi/hssf/record/RecordFactory.java 28 Nov 2002 19:20:36 -0000 1.13 >+++ src/java/org/apache/poi/hssf/record/RecordFactory.java 25 Dec 2002 16:15:18 -0000 >@@ -111,7 +111,7 @@ > FormulaRecord.class, BoolErrRecord.class, ExternSheetRecord.class, > NameRecord.class, LeftMarginRecord.class, RightMarginRecord.class, > TopMarginRecord.class, BottomMarginRecord.class, >- PaletteRecord.class, StringRecord.class, RecalcIdRecord.class >+ PaletteRecord.class, StringRecord.class > }; > } else { > records = new Class[] >@@ -142,7 +142,7 @@ > BoolErrRecord.class, ExternSheetRecord.class, NameRecord.class, > LeftMarginRecord.class, RightMarginRecord.class, > TopMarginRecord.class, BottomMarginRecord.class, >- PaletteRecord.class, StringRecord.class, RecalcIdRecord.class >+ PaletteRecord.class, StringRecord.class > }; > > } >Index: src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java,v >retrieving revision 1.18 >diff -u -r1.18 HSSFWorkbook.java >--- src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 16 Dec 2002 11:16:41 -0000 1.18 >+++ src/java/org/apache/poi/hssf/usermodel/HSSFWorkbook.java 25 Dec 2002 16:15:18 -0000 >@@ -61,6 +61,9 @@ > > import org.apache.poi.util.POILogFactory; > import org.apache.poi.hssf.eventmodel.EventRecordFactory; >+import org.apache.poi.hssf.eventmodel.ModelFactory; >+import org.apache.poi.hssf.eventmodel.ModelFactoryListener; >+import org.apache.poi.hssf.model.Model; > import org.apache.poi.hssf.model.Sheet; > import org.apache.poi.hssf.model.Workbook; > import org.apache.poi.hssf.record.*; >@@ -92,8 +95,7 @@ > * @version 2.0-pre > */ > >-public class HSSFWorkbook >- extends java.lang.Object >+public class HSSFWorkbook implements ModelFactoryListener > { > private static final int DEBUG = POILogger.DEBUG; > >@@ -180,11 +182,14 @@ > > InputStream stream = fs.createDocumentInputStream("Workbook"); > >- EventRecordFactory factory = new EventRecordFactory(); >- >- >+// EventRecordFactory factory = new EventRecordFactory(); >+ ModelFactory factory = new ModelFactory(); >+ factory.registerListener(this); > >- List records = RecordFactory.createRecords(stream); >+ factory.run(stream); >+ // List records = RecordFactory.createRecords(stream); >+ >+ /* > > workbook = Workbook.createWorkbook(records); > setPropertiesFromWorkbook(workbook); >@@ -204,11 +209,12 @@ > > // workbook.setSheetName(sheets.size() -1, "Sheet"+sheets.size()); > } >- >+ */ > for (int i = 0 ; i < workbook.getNumNames() ; ++i){ > HSSFName name = new HSSFName(workbook, workbook.getNameRecord(i)); > names.add(name); > } >+ > } > > public HSSFWorkbook(InputStream s) throws IOException { >@@ -779,6 +785,21 @@ > dstream.close(); > } > } >+ >+ public boolean process(Model model) >+ { >+ if (workbook != null && model instanceof Workbook) { >+ throw new RuntimeException("There can only be one Workbook being HSSFWorkbook. Found second model!!!!"); >+ } else if (model instanceof Workbook) { >+ setPropertiesFromWorkbook((Workbook)model); >+ } else if (model instanceof Sheet) { >+ Sheet sheet = (Sheet)model; >+ sheet.convertLabelRecords(workbook); >+ HSSFSheet hsheet = new HSSFSheet(workbook, sheet); >+ sheets.add(hsheet); >+ } >+ return true; >+ } > > public void insertChartRecord() > { >@@ -808,3 +829,4 @@ > } > > } >+ >Index: src/java/org/apache/poi/hssf/util/CellReference.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/java/org/apache/poi/hssf/util/CellReference.java,v >retrieving revision 1.2 >diff -u -r1.2 CellReference.java >--- src/java/org/apache/poi/hssf/util/CellReference.java 28 Nov 2002 19:26:20 -0000 1.2 >+++ src/java/org/apache/poi/hssf/util/CellReference.java 25 Dec 2002 16:15:18 -0000 >@@ -57,7 +57,6 @@ > /** > * > * @author Avik Sengupta >- * @author Dennis Doubleday (patch to seperateRowColumns()) > */ > public class CellReference { > >@@ -127,18 +126,11 @@ > * number format. > */ > private String[] seperateRowColumns(String reference) { >- >- // Look for end of sheet name. This will either set >- // start to 0 (if no sheet name present) or the >- // index after the sheet reference ends. >- int start = reference.indexOf("!") + 1; >- >+ int loc = 0; // location of first number > String retval[] = new String[2]; > int length = reference.length(); >- >- >+ > char[] chars = reference.toCharArray(); >- int loc = start; > if (chars[loc]=='$') loc++; > for (; loc < chars.length; loc++) { > if (Character.isDigit(chars[loc]) || chars[loc] == '$') { >@@ -147,7 +139,7 @@ > } > > >- retval[0] = reference.substring(start,loc); >+ retval[0] = reference.substring(0,loc); > retval[1] = reference.substring(loc); > return retval; > } >Index: src/testcases/org/apache/poi/hssf/HSSFTests.java >=================================================================== >RCS file: /home/cvs/jakarta-poi/src/testcases/org/apache/poi/hssf/HSSFTests.java,v >retrieving revision 1.2 >diff -u -r1.2 HSSFTests.java >--- src/testcases/org/apache/poi/hssf/HSSFTests.java 10 Nov 2002 16:46:48 -0000 1.2 >+++ src/testcases/org/apache/poi/hssf/HSSFTests.java 25 Dec 2002 16:15:18 -0000 >@@ -82,6 +82,7 @@ > TestSuite suite = > new TestSuite("Test for org.apache.poi.hssf.usermodel"); > //$JUnit-BEGIN$ >+ suite.addTest(new TestSuite(TestWorkbook.class)); > suite.addTest(new TestSuite(TestCellStyle.class)); > suite.addTest(new TestSuite(TestFormulas.class)); > suite.addTest(new TestSuite(TestHSSFCell.class)); >@@ -90,7 +91,7 @@ > suite.addTest(new TestSuite(TestHSSFSheet.class)); > suite.addTest(new TestSuite(TestNamedRange.class)); > suite.addTest(new TestSuite(TestReadWriteChart.class)); >- suite.addTest(new TestSuite(TestWorkbook.class)); >+ > suite.addTest(new TestSuite(TestFormulaParser.class)); > suite.addTest(new TestSuite(TestAreaFormatRecord.class)); > suite.addTest(new TestSuite(TestAreaRecord.class));
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 15660
: 4269