View Javadoc

1   package uba.db.column.io;
2   
3   import java.io.DataInput;
4   import java.io.IOException;
5   
6   import uba.db.column.CharColumnSpecification;
7   
8   
9   /***
10   * Lee de un {@link DataInput} el valor de una columna tipo CHAR.
11   * 
12   * @see uba.db.column.CharColumnSpecification
13   * 
14   * @version $Revision: 1.2 $
15   */
16  public class CharColumnReader extends ColumnReaderBehavior {
17      private int maxChars;
18  
19      /***
20       * @param columnSpecification especificación de la columna a la cual pertenece este
21       * reader.
22       * @param input stream desde donde se leerán los datos.
23       */
24      public CharColumnReader(CharColumnSpecification columnSpecification,
25              DataInput input) {
26          super(columnSpecification, input);
27          this.maxChars = columnSpecification.maxChars();
28      }
29  
30      /***
31       * @see uba.db.column.io.ColumnReaderBehavior#readFrom(DataInput)
32       */
33      public Object readFrom(DataInput in) throws IOException {
34          StringBuffer result = new StringBuffer();
35  
36          // hace la lectura hasta el final por que el ancho de la columna es fijo
37          // y
38          // si o si hay que leer maxChars caracteres.
39          for (int i = 0; i < maxChars; i++) {
40              char c = in.readChar();
41              if (c != 0) {
42                  result.append(c);
43              }
44          }
45  
46          return result.toString();
47      }
48  }