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

FormatRecord

public class FormatRecord extends Record
Title: Format Record

Description: describes a number format -- those goofy strings like $(#,###)

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

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

Fields Summary
public static final short
sid
private short
field_1_index_code
private short
field_3_unicode_len
private boolean
field_3_unicode_flag
private String
field_4_formatstring
Constructors Summary
public FormatRecord()


     
    
    
public FormatRecord(RecordInputStream in)
Constructs a Format record and sets its fields appropriately.

param
id id must be 0x41e 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)

        field_1_index_code       = in.readShort();
        field_3_unicode_len      = in.readShort();
        field_3_unicode_flag     = ( in.readByte() & (byte)0x01 ) != 0;
                                              
      if ( field_3_unicode_flag  ) {
          // unicode
          field_4_formatstring = in.readUnicodeLEString( field_3_unicode_len );
      }
      else {
          // not unicode
          field_4_formatstring = in.readCompressedUnicode( field_3_unicode_len );
      }
    
public java.lang.StringgetFormatString()
get the format string

return
the format string

        return field_4_formatstring;
    
public shortgetIndexCode()
get the format index code (for built in formats)

return
the format index code
see
org.apache.poi.hssf.model.Workbook

        return field_1_index_code;
    
public intgetRecordSize()

        return 9 + ( ( field_3_unicode_flag ) ? 2 * field_3_unicode_len : field_3_unicode_len );
    
public shortgetSid()

        return sid;
    
public booleangetUnicodeFlag()
get whether the string is unicode

return
flag for whether string is unicode

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

        LittleEndian.putShort(data, 0 + offset, sid);
        LittleEndian.putShort(data, 2 + offset, (short)( 2 + 2 + 1 + ( (field_3_unicode_flag) 
                                                                  ? 2 * field_3_unicode_len 
                                                                  : field_3_unicode_len ) ) );
                                                  // index + len + flag + format string length
        LittleEndian.putShort(data, 4 + offset, getIndexCode());
        LittleEndian.putShort(data, 6 + offset, field_3_unicode_len);
        data[ 8 + offset ] = (byte)( (field_3_unicode_flag) ? 0x01 : 0x00 );

      if ( field_3_unicode_flag ) {
          // unicode
          StringUtil.putUnicodeLE( getFormatString(), data, 9 + offset );
      }
      else {
          // not unicode
          StringUtil.putCompressedUnicode( getFormatString(), data, 9 + offset );
      }
      
        return getRecordSize();
    
public voidsetFormatString(java.lang.String fs)
set the format string

param
fs the format string
see
#setFormatStringLength(byte)

        field_4_formatstring = fs;
        setUnicodeFlag(StringUtil.hasMultibyte(fs));
    
public voidsetFormatStringLength(byte len)
set the format string length

param
len the length of the format string
see
#setFormatString(String)


	field_3_unicode_len = len;
    
public voidsetIndexCode(short index)
set the format index code (for built in formats)

param
index the format index code
see
org.apache.poi.hssf.model.Workbook

        field_1_index_code = index;
    
public voidsetUnicodeFlag(boolean unicode)
set whether the string is unicode

param
unicode flag for whether string is unicode

	field_3_unicode_flag = unicode;
    
public java.lang.StringtoString()

        StringBuffer buffer = new StringBuffer();

        buffer.append("[FORMAT]\n");
        buffer.append("    .indexcode       = ")
            .append(Integer.toHexString(getIndexCode())).append("\n");
        /*
        buffer.append("    .formatstringlen = ")
            .append(Integer.toHexString(getFormatStringLength()))
            .append("\n");
        */
        buffer.append("    .unicode length  = ")
            .append(Integer.toHexString(field_3_unicode_len)).append("\n");
        buffer.append("    .isUnicode       = ")
            .append( field_3_unicode_flag ).append("\n");
        buffer.append("    .formatstring    = ").append(getFormatString())
            .append("\n");
        buffer.append("[/FORMAT]\n");
        return buffer.toString();
    
protected voidvalidateSid(short id)

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