1 package uba.db.column.io;
2
3 import java.io.DataOutput;
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.ColumnWriter}.
11 *
12 * @version $Revision: 1.3 $
13 */
14 public abstract class ColumnWriterBehavior implements ColumnWriter {
15 private ColumnSpecification columnSpecification;
16 private DataOutput out;
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 out
24 * stream desde donde se escribirán los datos.
25 */
26 public ColumnWriterBehavior(ColumnSpecification columnSpecification, DataOutput out) {
27 this.columnSpecification = columnSpecification;
28 this.out = out;
29 }
30
31 /***
32 * @see uba.db.column.io.ColumnWriter#write(java.lang.Object)
33 */
34 public void write(Object value) throws IOException {
35 writeTo(out, value);
36 }
37
38 /***
39 * Las subclases deben implementar este método para escribir los datos.
40 *
41 * @param o
42 * stream desde donde se escribiran los datos.
43 * @param value
44 * el valor a escribir
45 *
46 * @throws Throwable
47 * en caso de que ocurra un error al escribir la columna.
48 */
49 protected abstract void writeTo(DataOutput o, Object value) throws IOException;
50
51 /***
52 * @see uba.db.column.io.ColumnWriter#columnSpecification()
53 */
54 public ColumnSpecification columnSpecification() {
55 return columnSpecification;
56 }
57 }