View Javadoc

1   package uba.db.table;
2   
3   import java.util.Iterator;
4   
5   import org.apache.commons.collections.IteratorUtils;
6   import org.apache.commons.lang.builder.EqualsBuilder;
7   import org.apache.commons.lang.builder.HashCodeBuilder;
8   
9   /***
10   * Representa una fila.
11   * 
12   * @version $Revision: 1.4 $
13   */
14  public class Row {
15      private Table table;
16      private Object[] values;
17  
18      /***
19       * Crea una fila, indicando cual la tabla a la que pertenece.
20       * 
21       * @param table
22       *            tabla a la que pertenece la fila.
23       * @param values
24       *            valores que contiene la fila (notar que el tamaņo del arreglo
25       *            values debe ser igual a la cantidad de columnas de la tabla).
26       * 
27       * @throws IllegalArgumentException
28       *             si el tamaņo del arreglo values no es igual a la cantidad de
29       *             columnas definidas por el esquema
30       */
31      public Row(Table table, Object[] values) throws IllegalArgumentException {
32          if (values.length != table.numberOfColumns()) {
33              throw new IllegalArgumentException("values.length != table.numberOfColumns()");
34          }
35          this.table = table;
36          this.values = values;
37      }
38  
39      /***
40       * Retorna la tabla a la que pertenece esta fila.
41       */
42      public Table table() {
43          return table;
44      }
45  
46      /***
47       * Retorna el valor de una columna.
48       * 
49       * @param columnIndex
50       *            el indice de la columna a retornar (comienza en 0).
51       * 
52       * @return el valor de la columna.
53       */
54      public Object valueAt(int columnIndex) {
55          return values[columnIndex];
56      }
57      
58      /***
59       * @see java.lang.Object#equals(java.lang.Object)
60       */
61      public boolean equals(Object obj) {
62          return EqualsBuilder.reflectionEquals(this, obj);
63      }
64  
65      /***
66       * @see java.lang.Object#hashCode()
67       */
68      public int hashCode() {
69          return HashCodeBuilder.reflectionHashCode(this);
70      }
71  
72      public Iterator valueIterator() {
73          return IteratorUtils.arrayIterator(values);
74      }
75  }