Class RKRecord
- All Implemented Interfaces:
CellValueRecordInterface
We support this in READ-ONLY mode. HSSF converts these to NUMBER records
REFERENCE: PG 376 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)
- Version:
- 2.0-pre
- Author:
- Andrew C. Oliver (acoliver at apache dot org), Jason Height (jheight at chariot dot net dot au)
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final shortstatic final shortstatic final shortstatic final shortstatic final short -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionclone()protected voidcalled by the constructor, should set class level fields.shortget the column this cell defines within the rowintdoubleExtract the value of the numbershortGet the type of the numberintgetRow()get the row this cell occurs onshortgetSid()return the non static version of the id for this record.shortbooleanreturns whether this cell is after the passed in cellbooleanreturns whether this cell is before the passed in cellbooleanreturns whether this cell represents the same cell (NOT VALUE)booleanDBCELL, ROW, VALUES all say yesbooleanisValue()tells whether this type of record contains a valuestatic voidDebugging main()intserialize(int offset, byte[] data) called by the class that is responsible for writing this sucker.voidsetColumn(short col) set the column this cell defines within the rowvoidsetRow(int row) set the row this cell occurs onvoidsetXFIndex(short xf) NO OP!toString()get a string representation of the record (for biffview/debugging)protected voidvalidateSid(short id) called by constructor, should throw runtime exception in the event of a record passed with a differing ID.Methods inherited from class loci.poi.hssf.record.Record
getRecordSize, serialize
-
Field Details
-
sid
public static final short sid- See Also:
-
RK_IEEE_NUMBER
public static final short RK_IEEE_NUMBER- See Also:
-
RK_IEEE_NUMBER_TIMES_100
public static final short RK_IEEE_NUMBER_TIMES_100- See Also:
-
RK_INTEGER
public static final short RK_INTEGER- See Also:
-
RK_INTEGER_TIMES_100
public static final short RK_INTEGER_TIMES_100- See Also:
-
-
Constructor Details
-
RKRecord
public RKRecord() -
RKRecord
Constructs a RK record and sets its fields appropriately.- Parameters:
in- the RecordInputstream to read the record from
-
-
Method Details
-
validateSid
protected void validateSid(short id) Description copied from class:Recordcalled by constructor, should throw runtime exception in the event of a record passed with a differing ID.- Specified by:
validateSidin classRecord- Parameters:
id- alleged id for this record
-
fillFields
Description copied from class:Recordcalled by the constructor, should set class level fields. Should throw runtime exception for bad/icomplete data.- Specified by:
fillFieldsin classRecord- Parameters:
in- the RecordInputstream to read the record from
-
getRow
public int getRow()Description copied from interface:CellValueRecordInterfaceget the row this cell occurs on- Specified by:
getRowin interfaceCellValueRecordInterface- Returns:
- the row
-
getColumn
public short getColumn()Description copied from interface:CellValueRecordInterfaceget the column this cell defines within the row- Specified by:
getColumnin interfaceCellValueRecordInterface- Returns:
- the column
-
getXFIndex
public short getXFIndex()- Specified by:
getXFIndexin interfaceCellValueRecordInterface
-
getRKField
public int getRKField() -
getRKType
public short getRKType()Get the type of the number- Returns:
- one of these values:
- RK_IEEE_NUMBER
- RK_IEEE_NUMBER_TIMES_100
- RK_INTEGER
- RK_INTEGER_TIMES_100
-
getRKNumber
public double getRKNumber()Extract the value of the numberThe mechanism for determining the value is dependent on the two low order bits of the raw number. If bit 1 is set, the number is an integer and can be cast directly as a double, otherwise, it's apparently the exponent and mantissa of a double (and the remaining low-order bits of the double's mantissa are 0's).
If bit 0 is set, the result of the conversion to a double is divided by 100; otherwise, the value is left alone.
[insert picture of Screwy Squirrel in full Napoleonic regalia]
- Returns:
- the value as a proper double (hey, it could happen)
-
toString
Description copied from class:Recordget a string representation of the record (for biffview/debugging) -
serialize
public int serialize(int offset, byte[] data) Description copied from class:Recordcalled by the class that is responsible for writing this sucker. Subclasses should implement this so that their data is passed back in a byte array. -
main
Debugging main()Normally I'd do this in a junit test, but let's face it -- once this algorithm has been tested and it works, we are never ever going to change it. This is driven by the Faceless Enemy's minions, who dare not change the algorithm out from under us.
- Parameters:
ignored_args- command line arguments, which we blithely ignore
-
getSid
public short getSid()Description copied from class:Recordreturn the non static version of the id for this record. -
isBefore
Description copied from interface:CellValueRecordInterfacereturns whether this cell is before the passed in cell- Specified by:
isBeforein interfaceCellValueRecordInterface- Parameters:
i- another cell interface record to compare- Returns:
- true if the cells is before, or false if not
-
isAfter
Description copied from interface:CellValueRecordInterfacereturns whether this cell is after the passed in cell- Specified by:
isAfterin interfaceCellValueRecordInterface- Parameters:
i- record to compare- Returns:
- true if the cell is after, false if not
-
isEqual
Description copied from interface:CellValueRecordInterfacereturns whether this cell represents the same cell (NOT VALUE)- Specified by:
isEqualin interfaceCellValueRecordInterface- Parameters:
i- record to compare- Returns:
- true if the cells are the same cell (positionally), false if not.
-
isInValueSection
public boolean isInValueSection()Description copied from class:RecordDBCELL, ROW, VALUES all say yes- Overrides:
isInValueSectionin classRecord
-
isValue
public boolean isValue()Description copied from class:Recordtells whether this type of record contains a value -
setColumn
public void setColumn(short col) Description copied from interface:CellValueRecordInterfaceset the column this cell defines within the row- Specified by:
setColumnin interfaceCellValueRecordInterface- Parameters:
col- the column this cell defines
-
setRow
public void setRow(int row) Description copied from interface:CellValueRecordInterfaceset the row this cell occurs on- Specified by:
setRowin interfaceCellValueRecordInterface- Parameters:
row- the row this cell occurs within
-
setXFIndex
public void setXFIndex(short xf) NO OP!- Specified by:
setXFIndexin interfaceCellValueRecordInterface
-
clone
- Specified by:
clonein interfaceCellValueRecordInterface- Overrides:
clonein classRecord
-