Should have been submitted with c700203 (Refactoring row-blocks record reading logic in Sheet)

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@700204 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2008-09-29 18:48:43 +00:00
parent 655f100a6c
commit 382ccf456f
3 changed files with 59 additions and 23 deletions

View File

@ -83,7 +83,7 @@ public class ModelFactory implements ERFListener
currentmodel = new Workbook(); currentmodel = new Workbook();
break; break;
case BOFRecord.TYPE_WORKSHEET: case BOFRecord.TYPE_WORKSHEET:
currentmodel = new Sheet(); currentmodel = Sheet.createSheet();
break; break;
default: default:
throw new RuntimeException("Unsupported model type "+bof.getType()); throw new RuntimeException("Unsupported model type "+bof.getType());

View File

@ -19,7 +19,10 @@ package org.apache.poi.hssf.model;
import java.util.List; import java.util.List;
import org.apache.poi.hssf.record.ArrayRecord;
import org.apache.poi.hssf.record.BOFRecord; import org.apache.poi.hssf.record.BOFRecord;
import org.apache.poi.hssf.record.BlankRecord;
import org.apache.poi.hssf.record.BoolErrRecord;
import org.apache.poi.hssf.record.CalcCountRecord; import org.apache.poi.hssf.record.CalcCountRecord;
import org.apache.poi.hssf.record.CalcModeRecord; import org.apache.poi.hssf.record.CalcModeRecord;
import org.apache.poi.hssf.record.DVALRecord; import org.apache.poi.hssf.record.DVALRecord;
@ -30,22 +33,30 @@ import org.apache.poi.hssf.record.DimensionsRecord;
import org.apache.poi.hssf.record.DrawingRecord; import org.apache.poi.hssf.record.DrawingRecord;
import org.apache.poi.hssf.record.DrawingSelectionRecord; import org.apache.poi.hssf.record.DrawingSelectionRecord;
import org.apache.poi.hssf.record.EOFRecord; import org.apache.poi.hssf.record.EOFRecord;
import org.apache.poi.hssf.record.FormulaRecord;
import org.apache.poi.hssf.record.GridsetRecord; import org.apache.poi.hssf.record.GridsetRecord;
import org.apache.poi.hssf.record.GutsRecord; import org.apache.poi.hssf.record.GutsRecord;
import org.apache.poi.hssf.record.HyperlinkRecord; import org.apache.poi.hssf.record.HyperlinkRecord;
import org.apache.poi.hssf.record.IndexRecord; import org.apache.poi.hssf.record.IndexRecord;
import org.apache.poi.hssf.record.IterationRecord; import org.apache.poi.hssf.record.IterationRecord;
import org.apache.poi.hssf.record.LabelRecord;
import org.apache.poi.hssf.record.LabelSSTRecord;
import org.apache.poi.hssf.record.NumberRecord;
import org.apache.poi.hssf.record.ObjRecord; import org.apache.poi.hssf.record.ObjRecord;
import org.apache.poi.hssf.record.PaneRecord; import org.apache.poi.hssf.record.PaneRecord;
import org.apache.poi.hssf.record.PrecisionRecord; import org.apache.poi.hssf.record.PrecisionRecord;
import org.apache.poi.hssf.record.PrintGridlinesRecord; import org.apache.poi.hssf.record.PrintGridlinesRecord;
import org.apache.poi.hssf.record.PrintHeadersRecord; import org.apache.poi.hssf.record.PrintHeadersRecord;
import org.apache.poi.hssf.record.RKRecord;
import org.apache.poi.hssf.record.Record; import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.RecordBase; import org.apache.poi.hssf.record.RecordBase;
import org.apache.poi.hssf.record.RefModeRecord; import org.apache.poi.hssf.record.RefModeRecord;
import org.apache.poi.hssf.record.RowRecord;
import org.apache.poi.hssf.record.SCLRecord; import org.apache.poi.hssf.record.SCLRecord;
import org.apache.poi.hssf.record.SaveRecalcRecord; import org.apache.poi.hssf.record.SaveRecalcRecord;
import org.apache.poi.hssf.record.SelectionRecord; import org.apache.poi.hssf.record.SelectionRecord;
import org.apache.poi.hssf.record.SharedFormulaRecord;
import org.apache.poi.hssf.record.TableRecord;
import org.apache.poi.hssf.record.TextObjectRecord; import org.apache.poi.hssf.record.TextObjectRecord;
import org.apache.poi.hssf.record.UncalcedRecord; import org.apache.poi.hssf.record.UncalcedRecord;
import org.apache.poi.hssf.record.UnknownRecord; import org.apache.poi.hssf.record.UnknownRecord;
@ -324,7 +335,7 @@ final class RecordOrderer {
* It is assumed that at least one row or cell value record has been found prior to the current * It is assumed that at least one row or cell value record has been found prior to the current
* record * record
*/ */
public static boolean isEndOfRowBlock(short sid) { public static boolean isEndOfRowBlock(int sid) {
switch(sid) { switch(sid) {
case DrawingRecord.sid: case DrawingRecord.sid:
case DrawingSelectionRecord.sid: case DrawingSelectionRecord.sid:
@ -344,4 +355,29 @@ final class RecordOrderer {
} }
return PageSettingsBlock.isComponentRecord(sid); return PageSettingsBlock.isComponentRecord(sid);
} }
/**
* @return <code>true</code> if the specified record id normally appears in the row blocks section
* of the sheet records
*/
public static boolean isRowBlockRecord(int sid) {
switch (sid) {
case RowRecord.sid:
case BlankRecord.sid:
case BoolErrRecord.sid:
case FormulaRecord.sid:
case LabelRecord.sid:
case LabelSSTRecord.sid:
case NumberRecord.sid:
case RKRecord.sid:
case ArrayRecord.sid:
case SharedFormulaRecord.sid:
case TableRecord.sid:
return true;
}
return false;
}
} }

View File

@ -47,11 +47,11 @@ public final class FormulaRecordAggregate extends RecordAggregate implements Cel
} }
boolean hasStringRec = stringRec != null; boolean hasStringRec = stringRec != null;
boolean hasCachedStringFlag = formulaRec.hasCachedResultString(); boolean hasCachedStringFlag = formulaRec.hasCachedResultString();
if (hasStringRec != hasCachedStringFlag) { if (hasStringRec != hasCachedStringFlag) {
throw new RecordFormatException("String record was " throw new RecordFormatException("String record was "
+ (hasStringRec ? "": "not ") + " supplied but formula record flag is " + (hasStringRec ? "": "not ") + " supplied but formula record flag is "
+ (hasCachedStringFlag ? "" : "not ") + " set"); + (hasCachedStringFlag ? "" : "not ") + " set");
} }
if (formulaRec.isSharedFormula()) { if (formulaRec.isSharedFormula()) {
svm.convertSharedFormulaRecord(formulaRec); svm.convertSharedFormulaRecord(formulaRec);