xref: /AOO41X/main/xmerge/source/pexcel/java/org/openoffice/xmerge/converter/xml/sxc/pexcel/records/CellValue.java (revision 0c0e82a55dc5b7baa849907647dcb88a54f5f573)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 package org.openoffice.xmerge.converter.xml.sxc.pexcel.records;
25 
26 import java.io.OutputStream;
27 import java.io.InputStream;
28 import java.io.IOException;
29 
30 import org.openoffice.xmerge.util.Debug;
31 import org.openoffice.xmerge.util.EndianConverter;
32 
33 public abstract class CellValue implements BIFFRecord {
34 
35     protected byte[] rw = new byte[2];
36     protected byte   col;
37     protected byte[] ixfe = new byte[2];
38 
39     /**
40      * Get the row number of this cell
41      *
42      * @return the row number of this cell
43      */
getRow()44     public int getRow() {
45         return EndianConverter.readShort(rw) + 1;
46     }
47 
48     /**
49      * Set the row number of this cell
50      *
51      * @param row sets the row number for this cell
52      */
setRow(int row)53     public void setRow(int row) {
54         this.rw = EndianConverter.writeShort((short) (row - 1));
55     }
56     /**
57      * Get the Index to the <code>ExtendedFormat</code>
58      *
59      * @return the index number of this cell's <code>ExtendedFormat</code>
60      */
getIxfe()61     public int getIxfe() {
62         return EndianConverter.readShort(ixfe);
63     }
64 
65     /**
66      * Sets the Index to the <code>ExtendedFormat</code>
67      *
68      * @param ixfe sets the index number for this cell's <code>ExtendedFormat</code>
69      */
setIxfe(int ixfe)70     public void setIxfe(int ixfe) {
71         this.ixfe = EndianConverter.writeShort((short) (ixfe));
72     }
73 
74     /**
75      * Get the column number of this cell
76      *
77      * @return the column number of this cell
78      */
getCol()79     public int getCol() {
80         return col + 1;         // The cols start at 1
81     }
82 
83     /**
84      * Set the row number of this cell
85      *
86      * @param col sets the row number for this cell
87      */
setCol(int col)88     public void setCol(int col) {
89         this.col = (byte) (col - 1);        // The cols start at 1
90     }
91 
92     /**
93      * Writes basic cell value attributes to the specified <code>Outputstream</code>
94      *
95      * @param output the <code>OutputStream</code> to write to
96      */
write(OutputStream output)97     public void write(OutputStream output) throws IOException {
98 
99         output.write(rw);
100         output.write(col);
101         output.write(ixfe);
102     }
103 
104     /**
105      * Read a <code>LabelCell</code> from the specified <code>InputStream</code>
106      *
107      * @param input the <code>InputStream</code> to read from
108      */
read(InputStream input)109     public int read(InputStream input) throws IOException {
110 
111         int numOfBytesRead  = input.read(rw);
112         col                 += input.read();
113         numOfBytesRead++;
114         numOfBytesRead      += input.read(ixfe);
115 
116         Debug.log(Debug.TRACE, "\tRow : "+ EndianConverter.readShort(rw) +
117                             " Column : " + col +
118                             " ixfe : " + EndianConverter.readShort(ixfe));
119 
120         return numOfBytesRead;
121     }
122 
123 
124     /**
125      * Returns the contents of the cell as a String
126      *
127      * @return the contents of the cell
128      */
getString()129     abstract public String getString() throws IOException;
130 
131 }
132 
133