resolved error constants in BoolErrRecord

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@734281 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2009-01-14 00:22:00 +00:00
parent d4ec8ceb11
commit b280b299a0

View File

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