Tidy up.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@352810 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
54018b5b18
commit
e53e8b8894
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
* The Apache Software License, Version 1.1
|
* The Apache Software License, Version 1.1
|
||||||
*
|
*
|
||||||
@ -55,13 +54,8 @@
|
|||||||
|
|
||||||
package org.apache.poi.hssf.record;
|
package org.apache.poi.hssf.record;
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.io.UnsupportedEncodingException;
|
|
||||||
|
|
||||||
import org.apache.poi.util.BinaryTree;
|
|
||||||
import org.apache.poi.util.LittleEndian;
|
import org.apache.poi.util.LittleEndian;
|
||||||
import org.apache.poi.util.StringUtil;
|
import org.apache.poi.util.StringUtil;
|
||||||
import sun.awt.image.ByteInterleavedRaster;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Title: Bound Sheet Record (aka BundleSheet) <P>
|
* Title: Bound Sheet Record (aka BundleSheet) <P>
|
||||||
@ -75,14 +69,14 @@ import sun.awt.image.ByteInterleavedRaster;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class BoundSheetRecord
|
public class BoundSheetRecord
|
||||||
extends Record
|
extends Record
|
||||||
{
|
{
|
||||||
public final static short sid = 0x85;
|
public final static short sid = 0x85;
|
||||||
private int field_1_position_of_BOF;
|
private int field_1_position_of_BOF;
|
||||||
private short field_2_option_flags;
|
private short field_2_option_flags;
|
||||||
private byte field_3_sheetname_length;
|
private byte field_3_sheetname_length;
|
||||||
private byte field_4_compressed_unicode_flag; // not documented
|
private byte field_4_compressed_unicode_flag; // not documented
|
||||||
private String field_5_sheetname;
|
private String field_5_sheetname;
|
||||||
|
|
||||||
public BoundSheetRecord()
|
public BoundSheetRecord()
|
||||||
{
|
{
|
||||||
@ -96,9 +90,9 @@ public class BoundSheetRecord
|
|||||||
* @param data data of the record (should not contain sid/len)
|
* @param data data of the record (should not contain sid/len)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public BoundSheetRecord(short id, short size, byte [] data)
|
public BoundSheetRecord( short id, short size, byte[] data )
|
||||||
{
|
{
|
||||||
super(id, size, data);
|
super( id, size, data );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -110,45 +104,47 @@ public class BoundSheetRecord
|
|||||||
* @param offset of the record's data
|
* @param offset of the record's data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public BoundSheetRecord(short id, short size, byte [] data, int offset)
|
public BoundSheetRecord( short id, short size, byte[] data, int offset )
|
||||||
{
|
{
|
||||||
super(id, size, data, offset);
|
super( id, size, data, offset );
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void validateSid(short id)
|
protected void validateSid( short id )
|
||||||
{
|
{
|
||||||
if (id != sid)
|
if ( id != sid )
|
||||||
{
|
{
|
||||||
throw new RecordFormatException("NOT A Bound Sheet RECORD");
|
throw new RecordFormatException( "NOT A Bound Sheet RECORD" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UTF8:
|
* UTF8:
|
||||||
* sid + len + bof + flags + len(str) + unicode + str
|
* sid + len + bof + flags + len(str) + unicode + str
|
||||||
* 2 + 2 + 4 + 2 + 1 + 1 + len(str)
|
* 2 + 2 + 4 + 2 + 1 + 1 + len(str)
|
||||||
*
|
*
|
||||||
* UNICODE:
|
* UNICODE:
|
||||||
* sid + len + bof + flags + len(str) + unicode + str
|
* sid + len + bof + flags + len(str) + unicode + str
|
||||||
* 2 + 2 + 4 + 2 + 1 + 1 + 2 * len(str)
|
* 2 + 2 + 4 + 2 + 1 + 1 + 2 * len(str)
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
protected void fillFields(byte [] data, short size, int offset)
|
protected void fillFields( byte[] data, short size, int offset )
|
||||||
{
|
{
|
||||||
field_1_position_of_BOF = LittleEndian.getInt(data, 0 + offset); // bof
|
field_1_position_of_BOF = LittleEndian.getInt( data, 0 + offset ); // bof
|
||||||
field_2_option_flags = LittleEndian.getShort(data, 4 + offset); // flags
|
field_2_option_flags = LittleEndian.getShort( data, 4 + offset ); // flags
|
||||||
field_3_sheetname_length = data[ 6 + offset ]; // len(str)
|
field_3_sheetname_length = data[6 + offset]; // len(str)
|
||||||
field_4_compressed_unicode_flag = data[ 7 + offset ]; // unicode
|
field_4_compressed_unicode_flag = data[7 + offset]; // unicode
|
||||||
|
|
||||||
int nameLength = LittleEndian.ubyteToInt( field_3_sheetname_length );
|
int nameLength = LittleEndian.ubyteToInt( field_3_sheetname_length );
|
||||||
if ( ( field_4_compressed_unicode_flag & 0x01 ) == 1 ) {
|
if ( ( field_4_compressed_unicode_flag & 0x01 ) == 1 )
|
||||||
field_5_sheetname = StringUtil.getFromUnicodeHigh( data, 8 + offset, nameLength );
|
{
|
||||||
|
field_5_sheetname = StringUtil.getFromUnicodeHigh( data, 8 + offset, nameLength );
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
field_5_sheetname = new String( data, 8 + offset, nameLength );
|
{
|
||||||
|
field_5_sheetname = new String( data, 8 + offset, nameLength );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* set the offset in bytes of the Beginning of File Marker within the HSSF Stream part of the POIFS file
|
* set the offset in bytes of the Beginning of File Marker within the HSSF Stream part of the POIFS file
|
||||||
@ -156,7 +152,7 @@ public class BoundSheetRecord
|
|||||||
* @param pos offset in bytes
|
* @param pos offset in bytes
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void setPositionOfBof(int pos)
|
public void setPositionOfBof( int pos )
|
||||||
{
|
{
|
||||||
field_1_position_of_BOF = pos;
|
field_1_position_of_BOF = pos;
|
||||||
}
|
}
|
||||||
@ -167,7 +163,7 @@ public class BoundSheetRecord
|
|||||||
* @param flags to set
|
* @param flags to set
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void setOptionFlags(short flags)
|
public void setOptionFlags( short flags )
|
||||||
{
|
{
|
||||||
field_2_option_flags = flags;
|
field_2_option_flags = flags;
|
||||||
}
|
}
|
||||||
@ -179,7 +175,7 @@ public class BoundSheetRecord
|
|||||||
* @see #setSheetname(String)
|
* @see #setSheetname(String)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public void setSheetnameLength(byte len)
|
public void setSheetnameLength( byte len )
|
||||||
{
|
{
|
||||||
field_3_sheetname_length = len;
|
field_3_sheetname_length = len;
|
||||||
}
|
}
|
||||||
@ -236,7 +232,7 @@ public class BoundSheetRecord
|
|||||||
|
|
||||||
public byte getSheetnameLength()
|
public byte getSheetnameLength()
|
||||||
{
|
{
|
||||||
return field_3_sheetname_length;
|
return field_3_sheetname_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -248,9 +244,9 @@ public class BoundSheetRecord
|
|||||||
|
|
||||||
public byte getRawSheetnameLength()
|
public byte getRawSheetnameLength()
|
||||||
{
|
{
|
||||||
return (byte)( ( ( field_4_compressed_unicode_flag & 0x01 ) == 1 )
|
return (byte) ( ( ( field_4_compressed_unicode_flag & 0x01 ) == 1 )
|
||||||
? 2 * field_3_sheetname_length
|
? 2 * field_3_sheetname_length
|
||||||
: field_3_sheetname_length );
|
: field_3_sheetname_length );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -278,40 +274,40 @@ public class BoundSheetRecord
|
|||||||
{
|
{
|
||||||
StringBuffer buffer = new StringBuffer();
|
StringBuffer buffer = new StringBuffer();
|
||||||
|
|
||||||
buffer.append("[BOUNDSHEET]\n");
|
buffer.append( "[BOUNDSHEET]\n" );
|
||||||
buffer.append(" .bof = ")
|
buffer.append( " .bof = " )
|
||||||
.append(Integer.toHexString(getPositionOfBof())).append("\n");
|
.append( Integer.toHexString( getPositionOfBof() ) ).append( "\n" );
|
||||||
buffer.append(" .optionflags = ")
|
buffer.append( " .optionflags = " )
|
||||||
.append(Integer.toHexString(getOptionFlags())).append("\n");
|
.append( Integer.toHexString( getOptionFlags() ) ).append( "\n" );
|
||||||
buffer.append(" .sheetname length= ")
|
buffer.append( " .sheetname length= " )
|
||||||
.append(Integer.toHexString(getSheetnameLength())).append("\n");
|
.append( Integer.toHexString( getSheetnameLength() ) ).append( "\n" );
|
||||||
buffer.append(" .unicodeflag = ")
|
buffer.append( " .unicodeflag = " )
|
||||||
.append(Integer.toHexString(getCompressedUnicodeFlag()))
|
.append( Integer.toHexString( getCompressedUnicodeFlag() ) )
|
||||||
.append("\n");
|
.append( "\n" );
|
||||||
buffer.append(" .sheetname = ").append(getSheetname())
|
buffer.append( " .sheetname = " ).append( getSheetname() )
|
||||||
.append("\n");
|
.append( "\n" );
|
||||||
buffer.append("[/BOUNDSHEET]\n");
|
buffer.append( "[/BOUNDSHEET]\n" );
|
||||||
return buffer.toString();
|
return buffer.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int serialize(int offset, byte [] data)
|
public int serialize( int offset, byte[] data )
|
||||||
{
|
{
|
||||||
LittleEndian.putShort(data, 0 + offset, sid);
|
LittleEndian.putShort( data, 0 + offset, sid );
|
||||||
LittleEndian.putShort( data, 2 + offset, (short)( 8 + getRawSheetnameLength() ) );
|
LittleEndian.putShort( data, 2 + offset, (short) ( 8 + getRawSheetnameLength() ) );
|
||||||
LittleEndian.putInt(data, 4 + offset, getPositionOfBof());
|
LittleEndian.putInt( data, 4 + offset, getPositionOfBof() );
|
||||||
LittleEndian.putShort(data, 8 + offset, getOptionFlags());
|
LittleEndian.putShort( data, 8 + offset, getOptionFlags() );
|
||||||
data[ 10 + offset ] = (byte)( getSheetnameLength() );
|
data[10 + offset] = (byte) ( getSheetnameLength() );
|
||||||
data[ 11 + offset ] = getCompressedUnicodeFlag();
|
data[11 + offset] = getCompressedUnicodeFlag();
|
||||||
|
|
||||||
if ( ( field_4_compressed_unicode_flag & 0x01 ) == 1 )
|
if ( ( field_4_compressed_unicode_flag & 0x01 ) == 1 )
|
||||||
StringUtil.putUncompressedUnicode( getSheetname(), data, 12 + offset );
|
StringUtil.putUncompressedUnicode( getSheetname(), data, 12 + offset );
|
||||||
else
|
else
|
||||||
StringUtil.putCompressedUnicode( getSheetname(), data, 12 + offset );
|
StringUtil.putCompressedUnicode( getSheetname(), data, 12 + offset );
|
||||||
|
|
||||||
|
|
||||||
return getRecordSize();
|
return getRecordSize();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
byte[] fake = new byte[] { (byte)0x85, 0x00, // sid
|
byte[] fake = new byte[] { (byte)0x85, 0x00, // sid
|
||||||
0x1a, 0x00, // length
|
0x1a, 0x00, // length
|
||||||
0x3C, 0x09, 0x00, 0x00, // bof
|
0x3C, 0x09, 0x00, 0x00, // bof
|
||||||
@ -335,9 +331,9 @@ public class BoundSheetRecord
|
|||||||
|
|
||||||
public int getRecordSize()
|
public int getRecordSize()
|
||||||
{
|
{
|
||||||
// return 30;
|
// Includes sid length + size length
|
||||||
return 12 + getRawSheetnameLength();
|
return 12 + getRawSheetnameLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getSid()
|
public short getSid()
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user