View Javadoc

1   package uba.db.sql.language;
2   
3   import java.util.List;
4   
5   import org.apache.commons.lang.builder.EqualsBuilder;
6   import org.apache.commons.lang.builder.HashCodeBuilder;
7   
8   /***
9    * Representa una sentencia <i>INSERT</i>.
10   * 
11   * @version $Revision: 1.3 $
12   */
13  public class Insert implements Sentence {
14      private ValueList values;
15      private TableName tableName;
16  
17      /***
18       * Este constructor es equivalente a: Insert(tableName, new
19       * ValueEnumeration(values))
20       * 
21       * @param tableName
22       *            nombre de la tabla
23       * @param values
24       *            lista de valores
25       */
26      public Insert(TableName tableName, List values) {
27          this(tableName, new ValueEnumeration(values));
28      }
29  
30      /***
31       * Crea una sentencia de insert de la forma: INSERT INTO <i>tableName</i>
32       * VALUES <i>values</i>
33       * 
34       * @param tableName
35       *            nombre de la tabla
36       * @param values
37       *            expresión con la "lista" de valores (podría ser un
38       *            {@link Select}).
39       */
40      public Insert(TableName tableName, ValueList values) {
41          this.tableName = tableName;
42          this.values = values;
43      }
44  
45      /***
46       * @see uba.db.sql.language.Visitable#accept(uba.db.sql.language.Visitor)
47       */
48      public void accept(Visitor visitor) {
49          visitor.visitInsert(this);
50      }
51  
52      /***
53       * @see java.lang.Object#equals(java.lang.Object)
54       */
55      public boolean equals(Object obj) {
56          return EqualsBuilder.reflectionEquals(this, obj);
57      }
58  
59      /***
60       * @see java.lang.Object#hashCode()
61       */
62      public int hashCode() {
63          return HashCodeBuilder.reflectionHashCode(this);
64      }
65  
66      /***
67       * Retorna el nombre de la tabla en la cual se insertarán los valores.
68       */
69      public TableName tableName() {
70          return tableName;
71      }
72  
73      /***
74       * Retorna la expresión utilizada para los valores (puede ser un
75       * {@link Select}).
76       */
77      public ValueList values() {
78          return values;
79      }
80  
81      /***
82       * @see java.lang.Object#toString()
83       */
84      public String toString() {
85          return "INSERT INTO " + tableName + " VALUES (" + values + ")";
86      }
87  }