View Javadoc

1   package uba.db.ar;
2   
3   import java.util.*;
4   
5   /***
6    * <p>Title: </p>
7    *
8    * <p>Description: </p>
9    * Representa a una tupla del AR. Contiene ademas la referencia a
10   * su TupleDef.
11   *
12   * <p>Copyright: Copyright (c) 2005</p>
13   *
14   * <p>Company: </p>
15   * @author not attributable
16   * @version 1.0
17   */
18  public class Tupla {
19      private TuplaDef def;
20      private Vector contents;
21  
22      public Tupla(TuplaDef definicion) {
23          def = definicion;
24          contents = new Vector();
25          contents.setSize(definicion.getSize());
26      }
27  
28      /***
29       * @todo Estos getters y settes trabajan con Object, pero tal vez deberian
30       *   trabajar con un objeto que encapsule el valor string o integer --
31       *   consultar
32       * @param indice int
33       * @return Object
34       */
35      public Object get(int indice) {
36          indice--;  // para convertir de 1-based a 0-based
37          return contents.elementAt(indice);
38      }
39  
40      /***
41       * copyValuesFrom
42       * Recibe una tupla con datos y una lista de indices de esa tupla que mapean
43       * a los campos del receiver para copiar los valores
44       *
45       * @param origen Tupla
46       * @param list List
47       * @todo Falta hacer el chequeo de tipos entre las columnas que se reciben
48       */
49      public void set(int indice, Object valor) {
50          indice--;  // para convertir de 1-based a 0-based
51          /*** @todo no se chequea que el valor corresponda a algo que se puede poner en esta columna */
52          contents.setElementAt(valor, indice);
53      }
54  
55      public String toString() {
56          Object valor;
57          String result, campo;
58          result = "Tupla: [";
59          Iterator i = contents.iterator();
60          while (i.hasNext()) {
61              valor = i.next();
62              if (valor == null) {
63                  campo = "(NULL)";
64              } else {
65                  campo = valor.toString();
66              }
67              result = result + " " + campo;
68          }
69          result = result + "]";
70  
71          return result;
72      }
73  
74      public void copyValuesFrom(Tupla origen, List indexes) {
75          Iterator i = indexes.iterator();
76          int c = 1;
77          while (i.hasNext()) {
78              set(c, origen.get( ((Integer) i.next()).intValue() ));
79              c++;
80          }
81      }
82  
83      public TuplaDef tuplaDefinition() {
84          return def;
85      }
86  }