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 }