/**
- * ModelFactory creates workbook and sheet models based upon
+ * ModelFactory creates workbook and sheet models based upon
* events thrown by them there events from the EventRecordFactory.
- *
+ *
* @see org.apache.poi.hssf.eventmodel.EventRecordFactory
* @author Andrew C. Oliver acoliver@apache.org
*/
List listeners;
Model currentmodel;
boolean lastEOF;
-
+
/**
* Constructor for ModelFactory. Does practically nothing.
*/
super();
listeners = new ArrayList(1);
}
-
+
/**
- * register a ModelFactoryListener so that it can receive
+ * register a ModelFactoryListener so that it can receive
* Models as they are created.
*/
public void registerListener(ModelFactoryListener listener) {
listeners.add(listener);
}
-
+
/**
* Start processing the Workbook stream into Model events.
*/
{
if (rec.getSid() == BOFRecord.sid) {
if (lastEOF != true) {
- throw new RuntimeException("Not yet handled embedded models");
+ throw new RuntimeException("Not yet handled embedded models");
} else {
BOFRecord bof = (BOFRecord)rec;
switch (bof.getType()) {
case BOFRecord.TYPE_WORKBOOK:
- currentmodel = new Workbook();
+ currentmodel = new Workbook();
break;
case BOFRecord.TYPE_WORKSHEET:
- currentmodel = new Sheet();
+ currentmodel = Sheet.createSheet();
break;
default:
throw new RuntimeException("Unsupported model type "+bof.getType());
- }
-
- }
+ }
+
+ }
}
-
+
if (rec.getSid() == EOFRecord.sid) {
lastEOF = true;
throwEvent(currentmodel);
} else {
- lastEOF = false;
+ lastEOF = false;
}
-
-
+
+
return true;
}
import java.util.List;
+import org.apache.poi.hssf.record.ArrayRecord;
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.CalcModeRecord;
import org.apache.poi.hssf.record.DVALRecord;
import org.apache.poi.hssf.record.DrawingRecord;
import org.apache.poi.hssf.record.DrawingSelectionRecord;
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.GutsRecord;
import org.apache.poi.hssf.record.HyperlinkRecord;
import org.apache.poi.hssf.record.IndexRecord;
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.PaneRecord;
import org.apache.poi.hssf.record.PrecisionRecord;
import org.apache.poi.hssf.record.PrintGridlinesRecord;
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.RecordBase;
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.SaveRecalcRecord;
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.UncalcedRecord;
import org.apache.poi.hssf.record.UnknownRecord;
* It is assumed that at least one row or cell value record has been found prior to the current
* record
*/
- public static boolean isEndOfRowBlock(short sid) {
+ public static boolean isEndOfRowBlock(int sid) {
switch(sid) {
case DrawingRecord.sid:
case DrawingSelectionRecord.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;
+ }
}
}
boolean hasStringRec = stringRec != null;
boolean hasCachedStringFlag = formulaRec.hasCachedResultString();
- if (hasStringRec != hasCachedStringFlag) {
- throw new RecordFormatException("String record was "
- + (hasStringRec ? "": "not ") + " supplied but formula record flag is "
- + (hasCachedStringFlag ? "" : "not ") + " set");
- }
-
+ if (hasStringRec != hasCachedStringFlag) {
+ throw new RecordFormatException("String record was "
+ + (hasStringRec ? "": "not ") + " supplied but formula record flag is "
+ + (hasCachedStringFlag ? "" : "not ") + " set");
+ }
+
if (formulaRec.isSharedFormula()) {
svm.convertSharedFormulaRecord(formulaRec);
}