Clean-up toString() and inner class

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@690404 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Josh Micich 2008-08-29 22:08:42 +00:00
parent e2b7f90cd7
commit 5cb7d5e0d1

View File

@ -1,4 +1,3 @@
/* ==================================================================== /* ====================================================================
Licensed to the Apache Software Foundation (ASF) under one or more Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with contributor license agreements. See the NOTICE file distributed with
@ -15,184 +14,152 @@
See the License for the specific language governing permissions and See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
==================================================================== */ ==================================================================== */
/*
* MulRKRecord.java
*
* Created on November 9, 2001, 4:53 PM
*/
package org.apache.poi.hssf.record; package org.apache.poi.hssf.record;
import java.util.ArrayList;
import org.apache.poi.hssf.util.RKUtil; import org.apache.poi.hssf.util.RKUtil;
import org.apache.poi.util.HexDump;
/** /**
* MULRK (0x00BD) <p/>
*
* Used to store multiple RK numbers on a row. 1 MulRk = Multiple Cell values. * 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!<P> * HSSF just converts this into multiple NUMBER records. READ-ONLY SUPPORT!<P>
* REFERENCE: PG 330 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P> * REFERENCE: PG 330 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<P>
* @author Andrew C. Oliver (acoliver at apache dot org) * @author Andrew C. Oliver (acoliver at apache dot org)
* @version 2.0-pre * @version 2.0-pre
*/ */
public final class MulRKRecord extends Record {
public final static short sid = 0x00BD;
public class MulRKRecord private int field_1_row;
extends Record private short field_2_first_col;
{ private RkRec[] field_3_rks;
public final static short sid = 0xbd; private short field_4_last_col;
//private short field_1_row;
private int field_1_row;
private short field_2_first_col;
private ArrayList field_3_rks;
private short field_4_last_col;
/** Creates new MulRKRecord */ /**
* Constructs a MulRK record and sets its fields appropriately.
*
* @param in the RecordInputstream to read the record from
*/
public MulRKRecord(RecordInputStream in) {
super(in);
}
public MulRKRecord() public int getRow() {
{ return field_1_row;
} }
/** /**
* Constructs a MulRK record and sets its fields appropriately. * starting column (first cell this holds in the row)
* * @return first column number
* @param in the RecordInputstream to read the record from */
*/ public short getFirstColumn() {
return field_2_first_col;
}
public MulRKRecord(RecordInputStream in) /**
{ * ending column (last cell this holds in the row)
super(in); * @return first column number
} */
public short getLastColumn() {
return field_4_last_col;
}
//public short getRow() /**
public int getRow() * get the number of columns this contains (last-first +1)
{ * @return number of columns (last - first +1)
return field_1_row; */
} public int getNumColumns() {
return field_4_last_col - field_2_first_col + 1;
}
/** /**
* starting column (first cell this holds in the row) * returns the xf index for column (coffset = column - field_2_first_col)
* @return first column number * @return the XF index for the column
*/ */
public short getXFAt(int coffset) {
return field_3_rks[coffset].xf;
}
public short getFirstColumn() /**
{ * returns the rk number for column (coffset = column - field_2_first_col)
return field_2_first_col; * @return the value (decoded into a double)
} */
public double getRKNumberAt(int coffset) {
return RKUtil.decodeNumber(field_3_rks[coffset].rk);
}
/** /**
* ending column (last cell this holds in the row) * @param in the RecordInputstream to read the record from
* @return first column number */
*/ protected void fillFields(RecordInputStream in) {
field_1_row = in.readUShort();
field_2_first_col = in.readShort();
field_3_rks = RkRec.parseRKs(in);
field_4_last_col = in.readShort();
}
public short getLastColumn()
{
return field_4_last_col;
}
/** public String toString() {
* get the number of columns this contains (last-first +1) StringBuffer buffer = new StringBuffer();
* @return number of columns (last - first +1)
*/
public int getNumColumns() buffer.append("[MULRK]\n");
{ buffer.append(" .row = ").append(HexDump.shortToHex(getRow())).append("\n");
return field_4_last_col - field_2_first_col + 1; buffer.append(" .firstcol= ").append(HexDump.shortToHex(getFirstColumn())).append("\n");
} buffer.append(" .lastcol = ").append(HexDump.shortToHex(getLastColumn())).append("\n");
/** for (int k = 0; k < getNumColumns(); k++) {
* returns the xf index for column (coffset = column - field_2_first_col) buffer.append(" xf[").append(k).append("] = ").append(HexDump.shortToHex(getXFAt(k))).append("\n");
* @return the XF index for the column buffer.append(" rk[").append(k).append("] = ").append(getRKNumberAt(k)).append("\n");
*/ }
buffer.append("[/MULRK]\n");
return buffer.toString();
}
public short getXFAt(int coffset) /**
{ * called by constructor, should throw runtime exception in the event of a
return (( RkRec ) field_3_rks.get(coffset)).xf; * record passed with a differing ID.
} *
* @param id alleged id for this record
*/
/** protected void validateSid(short id)
* returns the rk number for column (coffset = column - field_2_first_col) {
* @return the value (decoded into a double) if (id != sid)
*/ {
throw new RecordFormatException("Not a MulRKRecord!");
}
}
public double getRKNumberAt(int coffset) public short getSid()
{ {
return RKUtil.decodeNumber((( RkRec ) field_3_rks.get(coffset)).rk); return sid;
} }
/** public int serialize(int offset, byte [] data)
* @param in the RecordInputstream to read the record from {
*/ throw new RecordFormatException(
protected void fillFields(RecordInputStream in) "Sorry, you can't serialize a MulRK in this release");
{ }
//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();
}
private ArrayList parseRKs(RecordInputStream in) private static final class RkRec {
{ public static final int ENCODED_SIZE = 6;
ArrayList retval = new ArrayList(); public final short xf;
while ((in.remaining()-2) > 0) { public final int rk;
RkRec rec = new RkRec();
rec.xf = in.readShort(); private RkRec(RecordInputStream in) {
rec.rk = in.readInt(); xf = in.readShort();
retval.add(rec); rk = in.readInt();
} }
return retval;
}
public String toString() public static RkRec[] parseRKs(RecordInputStream in) {
{ int nItems = (in.remaining()-2) / ENCODED_SIZE;
StringBuffer buffer = new StringBuffer(); RkRec[] retval = new RkRec[nItems];
for (int i=0; i<nItems; i++) {
buffer.append("[MULRK]\n"); retval[i] = new RkRec(in);
buffer.append("firstcol = ") }
.append(Integer.toHexString(getFirstColumn())).append("\n"); return retval;
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();
}
/**
* 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
*/
protected void validateSid(short id)
{
if (id != sid)
{
throw new RecordFormatException("Not a MulRKRecord!");
}
}
public short getSid()
{
return sid;
}
public int serialize(int offset, byte [] data)
{
throw new RecordFormatException(
"Sorry, you can't serialize a MulRK in this release");
}
}
class RkRec
{
public short xf;
public int rk;
} }