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

DBCellRecord

public class DBCellRecord extends Record
Title: DBCell Record Description: Used by Excel and other MS apps to quickly find rows in the sheets.

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

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

Fields Summary
public static final int
BLOCK_SIZE
public static final short
sid
private int
field_1_row_offset
private short[]
field_2_cell_offsets
Constructors Summary
public DBCellRecord()


     
    
    
public DBCellRecord(RecordInputStream in)
Constructs a DBCellRecord and sets its fields appropriately

param
id id must be 0xd7 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
public voidaddCellOffset(short offset)

        if (field_2_cell_offsets == null)
        {
            field_2_cell_offsets = new short[ 1 ];
        }
        else
        {
            short[] temp = new short[ field_2_cell_offsets.length + 1 ];

            System.arraycopy(field_2_cell_offsets, 0, temp, 0,
                             field_2_cell_offsets.length);
            field_2_cell_offsets = temp;
        }
        field_2_cell_offsets[ field_2_cell_offsets.length - 1 ] = offset;
    
protected voidfillFields(org.apache.poi.hssf.record.RecordInputStream in)

        field_1_row_offset   = in.readUShort();
        int size = in.remaining();        
        field_2_cell_offsets = new short[ size / 2 ];

        for (int i=0;i<field_2_cell_offsets.length;i++)
        {
            field_2_cell_offsets[ i ] = in.readShort();
        }
    
public shortgetCellOffsetAt(int index)
return the cell offset in the array

param
index of the cell offset to retrieve
return
celloffset from the celloffset array

        return field_2_cell_offsets[ index ];
    
public intgetNumCellOffsets()
get the number of cell offsets in the celloffset array

return
number of cell offsets

        return field_2_cell_offsets.length;
    
public intgetRecordSize()

        return 8 + (getNumCellOffsets() * 2);
    
public static intgetRecordSizeForRows(int rows)
Returns the size of a DBCellRecord when it needs to reference a certain number of rows

      return 8 + (rows * 2);
    
public intgetRowOffset()
gets offset from the start of this DBCellRecord to the start of the first cell in the next DBCell block.

return
rowoffset to the start of the first cell in the next DBCell block

        return field_1_row_offset;
    
public shortgetSid()

        return sid;
    
public booleanisInValueSection()

        return true;
    
public intserialize(int offset, byte[] data)

        if (field_2_cell_offsets == null)
        {
            field_2_cell_offsets = new short[ 0 ];
        }
        LittleEndian.putShort(data, 0 + offset, sid);
        LittleEndian.putShort(data, 2 + offset,
                              (( short ) (4 + (getNumCellOffsets() * 2))));
        LittleEndian.putInt(data, 4 + offset, getRowOffset());
        for (int k = 0; k < getNumCellOffsets(); k++)
        {
            LittleEndian.putShort(data, 8 + 2*k + offset, getCellOffsetAt(k));
        }
        return getRecordSize();
    
public voidsetRowOffset(int offset)
sets offset from the start of this DBCellRecord to the start of the first cell in the next DBCell block.

param
offset offset to the start of the first cell in the next DBCell block

        field_1_row_offset = offset;
    
public java.lang.StringtoString()

        StringBuffer buffer = new StringBuffer();

        buffer.append("[DBCELL]\n");
        buffer.append("    .rowoffset       = ")
            .append(Integer.toHexString(getRowOffset())).append("\n");
        for (int k = 0; k < getNumCellOffsets(); k++)
        {
            buffer.append("    .cell_" + k + "          = ")
                .append(Integer.toHexString(getCellOffsetAt(k))).append("\n");
        }
        buffer.append("[/DBCELL]\n");
        return buffer.toString();
    
protected voidvalidateSid(short id)

        if (id != sid)
        {
            throw new RecordFormatException("NOT A valid DBCell RECORD");
        }