1 package uba.db.column.io;
2
3 import java.io.DataInput;
4 import java.io.IOException;
5
6 import uba.db.column.ColumnSpecification;
7
8 /***
9 * Clase base para facilitar la implementación de la interfaz
10 * {@link uba.db.column.io.ColumnReader}.
11 *
12 * @version $Revision: 1.3 $
13 */
14 public abstract class ColumnReaderBehavior implements ColumnReader {
15 private DataInput input;
16 private ColumnSpecification columnSpecification;
17
18 /***
19 * Las sub-clases deben llamar a este constructor.
20 *
21 * @param columnSpecification
22 * especificación de la columna a la cual pertenece este reader.
23 * @param input
24 * stream desde donde se leerán los datos.
25 */
26 public ColumnReaderBehavior(ColumnSpecification columnSpecification, DataInput input) {
27 this.columnSpecification = columnSpecification;
28 this.input = input;
29 }
30
31 /***
32 * @see uba.db.column.io.ColumnReader#read()
33 */
34 public Object read() throws IOException {
35 return readFrom(input);
36 }
37
38 /***
39 * Las subclases deben implementar este método para leer los datos.
40 *
41 * @param in
42 * stream desde donde se obtienen los datos.
43 *
44 * @throws IOException
45 * en caso de que ocurra un error al leer la columna.
46 *
47 * @return los datos leidos.
48 */
49 protected abstract Object readFrom(DataInput in) throws IOException;
50 }