FileDocCategorySizeDatePackage
MulRKRecord.javaAPI DocApache Poi 3.0.15681Mon Jan 01 12:39:40 GMT 2007org.apache.poi.hssf.record

MulRKRecord

public class MulRKRecord extends Record
Used to store multiple RK numbers on a row. 1 MulRk = Multiple Cell values. HSSF just converts this into multiple NUMBER records. READ-ONLY SUPPORT!

REFERENCE: PG 330 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)

author
Andrew C. Oliver (acoliver at apache dot org)
version
2.0-pre

Fields Summary
public static final short
sid
private int
field_1_row
private short
field_2_first_col
private ArrayList
field_3_rks
private short
field_4_last_col
Constructors Summary
public MulRKRecord()
Creates new MulRKRecord


        

     
    
    
public MulRKRecord(RecordInputStream in)
Constructs a MulRK record and sets its fields appropriately.

param
id id must be 0xbd or an exception will be throw upon validation
param
size the size of the data area of the record
param
data data of the record (should not contain sid/len)

        super(in);
    
Methods Summary
protected voidfillFields(org.apache.poi.hssf.record.RecordInputStream in)
called by the constructor, should set class level fields. Should throw runtime exception for bad/icomplete data.

param
data raw data
param
size size of data

        //field_1_row       = LittleEndian.getShort(data, 0 + offset);
        field_1_row       = in.readUShort();
        field_2_first_col = in.readShort();
        field_3_rks       = parseRKs(in);
        field_4_last_col  = in.readShort();
    
public shortgetFirstColumn()
starting column (first cell this holds in the row)

return
first column number

        return field_2_first_col;
    
public shortgetLastColumn()
ending column (last cell this holds in the row)

return
first column number

        return field_4_last_col;
    
public intgetNumColumns()
get the number of columns this contains (last-first +1)

return
number of columns (last - first +1)

        return field_4_last_col - field_2_first_col + 1;
    
public doublegetRKNumberAt(int coffset)
returns the rk number for column (coffset = column - field_2_first_col)

return
the value (decoded into a double)

        return RKUtil.decodeNumber((( RkRec ) field_3_rks.get(coffset)).rk);
    
public intgetRow()

        return field_1_row;
    
public shortgetSid()

        return sid;
    
public shortgetXFAt(int coffset)
returns the xf index for column (coffset = column - field_2_first_col)

return
the XF index for the column

        return (( RkRec ) field_3_rks.get(coffset)).xf;
    
private java.util.ArrayListparseRKs(org.apache.poi.hssf.record.RecordInputStream in)

        ArrayList retval = new ArrayList();
        while ((in.remaining()-2) > 0) {
            RkRec rec = new RkRec();

            rec.xf = in.readShort();
            rec.rk = in.readInt();
            retval.add(rec);
        }
        return retval;
    
public intserialize(int offset, byte[] data)

        throw new RecordFormatException(
            "Sorry, you can't serialize a MulRK in this release");
    
public java.lang.StringtoString()

        StringBuffer buffer = new StringBuffer();

        buffer.append("[MULRK]\n");
        buffer.append("firstcol  = ")
            .append(Integer.toHexString(getFirstColumn())).append("\n");
        buffer.append(" lastcol  = ")
            .append(Integer.toHexString(getLastColumn())).append("\n");
        for (int k = 0; k < getNumColumns(); k++)
        {
            buffer.append("xf").append(k).append("        = ")
                .append(Integer.toHexString(getXFAt(k))).append("\n");
            buffer.append("rk").append(k).append("        = ")
                .append(getRKNumberAt(k)).append("\n");
        }
        buffer.append("[/MULRK]\n");
        return buffer.toString();
    
protected voidvalidateSid(short id)
called by constructor, should throw runtime exception in the event of a record passed with a differing ID.

param
id alleged id for this record

        if (id != sid)
        {
            throw new RecordFormatException("Not a MulRKRecord!");
        }