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
*/
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) /**
{ * @param in the RecordInputstream to read the record from
field_1_row = row; */
} 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 setColumn(short col) public void setRow(int row) {
{ field_1_row = row;
field_2_column = col; }
}
/** public void setColumn(short col) {
* set the index to the ExtendedFormat field_2_column = col;
* @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 * set the index to the ExtendedFormat
* * @see org.apache.poi.hssf.record.ExtendedFormatRecord
* @param value representing the boolean value * @param xf index to the XF record
*/ */
public void setValue(boolean value) public void setXFIndex(short xf) {
{ field_3_xf_index = xf;
field_4_bBoolErr = value ? ( byte ) 1 }
: ( byte ) 0;
field_5_fError = ( byte ) 0;
}
/** /**
* set the error value for the cell * set the boolean value for the cell
* *
* @param value error representing the error value * @param value representing the boolean value
* this value can only be 0,7,15,23,29,36 or 42 */
* see bugzilla bug 16560 for an explanation public void setValue(boolean value) {
*/ field_4_bBoolErr = value ? ( byte ) 1 : ( byte ) 0;
public void setValue(byte value) field_5_fError = ( byte ) 0;
{ }
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() /**
{ * set the error value for the cell
return field_1_row; *
} * @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 short getColumn() public int getRow() {
{ return field_1_row;
return field_2_column; }
}
/** public short getColumn() {
* get the index to the ExtendedFormat return field_2_column;
* @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 * get the index to the ExtendedFormat
* * @see org.apache.poi.hssf.record.ExtendedFormatRecord
* @return boolean representing the boolean value * @return index to the XF record
*/ */
public boolean getBooleanValue() public short getXFIndex() {
{ return field_3_xf_index;
return (field_4_bBoolErr != 0); }
}
/** /**
* get the error value for the cell * get the value for the cell
* *
* @return byte representing the error value * @return boolean representing the boolean value
*/ */
public byte getErrorValue() public boolean getBooleanValue() {
{ return (field_4_bBoolErr != 0);
return field_4_bBoolErr; }
}
/** /**
* Indicates whether the call holds a boolean value * get the error value for the cell
* *
* @return boolean true if the cell holds a boolean value * @return byte representing the error value
*/ */
public boolean isBoolean() public byte getErrorValue() {
{ return field_4_bBoolErr;
return (field_5_fError == ( byte ) 0); }
}
/** /**
* manually indicate this is an error rather than a boolean * Indicates whether the call holds a boolean value
*/ *
public void setError(boolean val) { * @return boolean true if the cell holds a boolean value
field_5_fError = (byte) (val == false ? 0 : 1); */
} public boolean isBoolean() {
return (field_5_fError == ( byte ) 0);
}
/** /**
* Indicates whether the call holds an error value * manually indicate this is an error rather than a boolean
* */
* @return boolean true if the cell holds an error value public void setError(boolean val) {
*/ field_5_fError = (byte) (val == false ? 0 : 1);
}
public boolean isError() /**
{ * Indicates whether the call holds an error value
return field_5_fError != 0; *
} * @return boolean true if the cell holds an error value
*/
public String toString() public boolean isError() {
{ return field_5_fError != 0;
StringBuffer sb = new StringBuffer(); }
sb.append("[BOOLERR]\n"); public String toString() {
sb.append(" .row = ").append(HexDump.shortToHex(getRow())).append("\n"); StringBuffer sb = new StringBuffer();
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) { sb.append("[BOOLERR]\n");
out.writeShort(getRow()); sb.append(" .row = ").append(HexDump.shortToHex(getRow())).append("\n");
out.writeShort(getColumn()); sb.append(" .col = ").append(HexDump.shortToHex(getColumn())).append("\n");
out.writeShort(getXFIndex()); sb.append(" .xfindex= ").append(HexDump.shortToHex(getXFIndex())).append("\n");
out.writeByte(field_4_bBoolErr); if (isBoolean()) {
out.writeByte(field_5_fError); sb.append(" .booleanValue = ").append(getBooleanValue()).append("\n");
} } else {
sb.append(" .errorValue = ").append(getErrorValue()).append("\n");
}
sb.append("[/BOOLERR]\n");
return sb.toString();
}
protected int getDataSize() { public void serialize(LittleEndianOutput out) {
return 8; out.writeShort(getRow());
} out.writeShort(getColumn());
out.writeShort(getXFIndex());
out.writeByte(field_4_bBoolErr);
out.writeByte(field_5_fError);
}
public short getSid() protected int getDataSize() {
{ return 8;
return sid; }
}
public Object clone() { public short getSid()
BoolErrRecord rec = new BoolErrRecord(); {
rec.field_1_row = field_1_row; return sid;
rec.field_2_column = field_2_column; }
rec.field_3_xf_index = field_3_xf_index;
rec.field_4_bBoolErr = field_4_bBoolErr; public Object clone() {
rec.field_5_fError = field_5_fError; BoolErrRecord rec = new BoolErrRecord();
return rec; 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;
}
} }