package org.apache.poi.hssf.record;
+import org.apache.poi.ss.usermodel.ErrorConstants;
import org.apache.poi.util.HexDump;
import org.apache.poi.util.LittleEndianOutput;
* 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
*/
public final class BoolErrRecord extends StandardRecord implements CellValueRecordInterface {
- public final static short sid = 0x0205;
- private int field_1_row;
- private short field_2_column;
- private short field_3_xf_index;
- private byte field_4_bBoolErr;
- private byte field_5_fError;
-
- /** Creates new BoolErrRecord */
- public BoolErrRecord()
- {
- }
-
- /**
- * @param in the RecordInputstream to read the record from
- */
- public BoolErrRecord(RecordInputStream in)
- {
- //field_1_row = LittleEndian.getShort(data, 0 + offset);
- field_1_row = in.readUShort();
- field_2_column = in.readShort();
- field_3_xf_index = in.readShort();
- field_4_bBoolErr = in.readByte();
- field_5_fError = in.readByte();
- }
-
- public void setRow(int row)
- {
- field_1_row = row;
- }
-
- public void setColumn(short col)
- {
- field_2_column = col;
- }
-
- /**
- * set the index to the ExtendedFormat
- * @see org.apache.poi.hssf.record.ExtendedFormatRecord
- * @param xf index to the XF record
- */
- public void setXFIndex(short xf)
- {
- field_3_xf_index = xf;
- }
-
- /**
- * set the boolean value for the cell
- *
- * @param value representing the boolean value
- */
- public void setValue(boolean value)
- {
- field_4_bBoolErr = value ? ( byte ) 1
- : ( byte ) 0;
- field_5_fError = ( byte ) 0;
- }
-
- /**
- * set the error value for the cell
- *
- * @param value error representing the error value
- * this value can only be 0,7,15,23,29,36 or 42
- * see bugzilla bug 16560 for an explanation
- */
- public void setValue(byte value)
- {
- if ( (value==0)||(value==7)||(value==15)||(value==23)||(value==29)||(value==36)||(value==42)) {
- field_4_bBoolErr = value;
- field_5_fError = ( byte ) 1;
- } else {
- throw new RuntimeException("Error Value can only be 0,7,15,23,29,36 or 42. It cannot be "+value);
- }
- }
-
- public int getRow()
- {
- return field_1_row;
- }
-
- public short getColumn()
- {
- return field_2_column;
- }
-
- /**
- * get the index to the ExtendedFormat
- * @see org.apache.poi.hssf.record.ExtendedFormatRecord
- * @return index to the XF record
- */
- public short getXFIndex()
- {
- return field_3_xf_index;
- }
-
- /**
- * get the value for the cell
- *
- * @return boolean representing the boolean value
- */
- public boolean getBooleanValue()
- {
- return (field_4_bBoolErr != 0);
- }
-
- /**
- * get the error value for the cell
- *
- * @return byte representing the error value
- */
- public byte getErrorValue()
- {
- return field_4_bBoolErr;
- }
-
- /**
- * Indicates whether the call holds a boolean value
- *
- * @return boolean true if the cell holds a boolean value
- */
- public boolean isBoolean()
- {
- return (field_5_fError == ( byte ) 0);
- }
-
- /**
- * manually indicate this is an error rather than a boolean
- */
- public void setError(boolean val) {
- field_5_fError = (byte) (val == false ? 0 : 1);
- }
-
- /**
- * Indicates whether the call holds an error value
- *
- * @return boolean true if the cell holds an error value
- */
-
- public boolean isError()
- {
- return field_5_fError != 0;
- }
-
- public String toString()
- {
- StringBuffer sb = new StringBuffer();
-
- sb.append("[BOOLERR]\n");
- sb.append(" .row = ").append(HexDump.shortToHex(getRow())).append("\n");
- sb.append(" .col = ").append(HexDump.shortToHex(getColumn())).append("\n");
- sb.append(" .xfindex= ").append(HexDump.shortToHex(getXFIndex())).append("\n");
- if (isBoolean()) {
- sb.append(" .booleanValue = ").append(getBooleanValue()).append("\n");
- } else {
- sb.append(" .errorValue = ").append(getErrorValue()).append("\n");
- }
- sb.append("[/BOOLERR]\n");
- return sb.toString();
- }
-
- public void serialize(LittleEndianOutput out) {
- out.writeShort(getRow());
- out.writeShort(getColumn());
- out.writeShort(getXFIndex());
- out.writeByte(field_4_bBoolErr);
- out.writeByte(field_5_fError);
- }
-
- protected int getDataSize() {
- return 8;
- }
-
- public short getSid()
- {
- return sid;
- }
-
- 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;
- }
+ public final static short sid = 0x0205;
+ private int field_1_row;
+ private short field_2_column;
+ private short field_3_xf_index;
+ private byte field_4_bBoolErr;
+ private byte field_5_fError;
+
+ /** Creates new BoolErrRecord */
+ public BoolErrRecord() {
+
+ }
+
+ /**
+ * @param in the RecordInputstream to read the record from
+ */
+ public BoolErrRecord(RecordInputStream in) {
+ field_1_row = in.readUShort();
+ field_2_column = in.readShort();
+ field_3_xf_index = in.readShort();
+ field_4_bBoolErr = in.readByte();
+ field_5_fError = in.readByte();
+ }
+
+ public void setRow(int row) {
+ field_1_row = row;
+ }
+
+ public void setColumn(short col) {
+ field_2_column = col;
+ }
+
+ /**
+ * set the index to the ExtendedFormat
+ * @see org.apache.poi.hssf.record.ExtendedFormatRecord
+ * @param xf index to the XF record
+ */
+ public void setXFIndex(short xf) {
+ field_3_xf_index = xf;
+ }
+
+ /**
+ * set the boolean value for the cell
+ *
+ * @param value representing the boolean value
+ */
+ public void setValue(boolean value) {
+ field_4_bBoolErr = value ? ( byte ) 1 : ( byte ) 0;
+ field_5_fError = ( byte ) 0;
+ }
+
+ /**
+ * set the error value for the cell
+ *
+ * @param value error representing the error value
+ * this value can only be 0,7,15,23,29,36 or 42
+ * see bugzilla bug 16560 for an explanation
+ */
+ public void setValue(byte value) {
+ switch(value) {
+ case ErrorConstants.ERROR_NULL:
+ case ErrorConstants.ERROR_DIV_0:
+ case ErrorConstants.ERROR_VALUE:
+ case ErrorConstants.ERROR_REF:
+ case ErrorConstants.ERROR_NAME:
+ case ErrorConstants.ERROR_NUM:
+ case ErrorConstants.ERROR_NA:
+ field_4_bBoolErr = value;
+ field_5_fError = ( byte ) 1;
+ return;
+ }
+ throw new IllegalArgumentException("Error Value can only be 0,7,15,23,29,36 or 42. It cannot be "+value);
+ }
+
+ public int getRow() {
+ return field_1_row;
+ }
+
+ public short getColumn() {
+ return field_2_column;
+ }
+
+ /**
+ * get the index to the ExtendedFormat
+ * @see org.apache.poi.hssf.record.ExtendedFormatRecord
+ * @return index to the XF record
+ */
+ public short getXFIndex() {
+ return field_3_xf_index;
+ }
+
+ /**
+ * get the value for the cell
+ *
+ * @return boolean representing the boolean value
+ */
+ public boolean getBooleanValue() {
+ return (field_4_bBoolErr != 0);
+ }
+
+ /**
+ * get the error value for the cell
+ *
+ * @return byte representing the error value
+ */
+ public byte getErrorValue() {
+ return field_4_bBoolErr;
+ }
+
+ /**
+ * Indicates whether the call holds a boolean value
+ *
+ * @return boolean true if the cell holds a boolean value
+ */
+ public boolean isBoolean() {
+ return (field_5_fError == ( byte ) 0);
+ }
+
+ /**
+ * manually indicate this is an error rather than a boolean
+ */
+ public void setError(boolean val) {
+ field_5_fError = (byte) (val == false ? 0 : 1);
+ }
+
+ /**
+ * Indicates whether the call holds an error value
+ *
+ * @return boolean true if the cell holds an error value
+ */
+
+ public boolean isError() {
+ return field_5_fError != 0;
+ }
+
+ public String toString() {
+ StringBuffer sb = new StringBuffer();
+
+ sb.append("[BOOLERR]\n");
+ sb.append(" .row = ").append(HexDump.shortToHex(getRow())).append("\n");
+ sb.append(" .col = ").append(HexDump.shortToHex(getColumn())).append("\n");
+ sb.append(" .xfindex= ").append(HexDump.shortToHex(getXFIndex())).append("\n");
+ if (isBoolean()) {
+ sb.append(" .booleanValue = ").append(getBooleanValue()).append("\n");
+ } else {
+ sb.append(" .errorValue = ").append(getErrorValue()).append("\n");
+ }
+ sb.append("[/BOOLERR]\n");
+ return sb.toString();
+ }
+
+ public void serialize(LittleEndianOutput out) {
+ out.writeShort(getRow());
+ out.writeShort(getColumn());
+ out.writeShort(getXFIndex());
+ out.writeByte(field_4_bBoolErr);
+ out.writeByte(field_5_fError);
+ }
+
+ protected int getDataSize() {
+ return 8;
+ }
+
+ public short getSid()
+ {
+ return sid;
+ }
+
+ 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;
+ }
}