1 package uba.db.sql.language;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 import org.apache.commons.lang.builder.EqualsBuilder;
8 import org.apache.commons.lang.builder.HashCodeBuilder;
9
10 /***
11 * @version $Revision: 1.3 $
12 */
13 public class CreateTable implements Sentence {
14 private TableName tableName;
15
16 private List columnDeclarations;
17
18 private List primaryKeyColumns;
19
20 public CreateTable(TableName tableName, List columnDeclarations,
21 List primaryKeyColumns) {
22 this.tableName = tableName;
23 this.columnDeclarations = columnDeclarations;
24 this.primaryKeyColumns = primaryKeyColumns;
25 }
26
27 public CreateTable(TableName tableName, List columnDeclarations) {
28 this(tableName, columnDeclarations, new ArrayList());
29 }
30
31 /***
32 * @see uba.db.sql.language.Visitable#accept(uba.db.sql.language.Visitor)
33 */
34 public void accept(Visitor visitor) {
35 visitor.visitCreateTable(this);
36 }
37
38 /***
39 * @see java.lang.Object#equals(java.lang.Object)
40 */
41 public boolean equals(Object obj) {
42 return EqualsBuilder.reflectionEquals(this, obj);
43 }
44
45 /***
46 * @see java.lang.Object#hashCode()
47 */
48 public int hashCode() {
49 return HashCodeBuilder.reflectionHashCode(this);
50 }
51
52 /***
53 * @see java.lang.Object#toString()
54 */
55 public String toString() {
56 StringBuffer buff = new StringBuffer();
57
58 buff.append("CREATE TABLE ").append(tableName).append(" (");
59 Iterator iter = columnDeclarations.iterator();
60 while (iter.hasNext()) {
61 buff.append(iter.next());
62 if (iter.hasNext()) {
63 buff.append(", ");
64 }
65 }
66 buff.append(")");
67
68 return buff.toString();
69 }
70
71 /***
72 * @return Returns the columnDeclarations.
73 */
74 public List columnDeclarations() {
75 return columnDeclarations;
76 }
77
78 /***
79 * @return Returns the primaryKeyColumns.
80 */
81 public List primaryKeyColumns() {
82 return primaryKeyColumns;
83 }
84
85 /***
86 * @return Returns the tableName.
87 */
88 public TableName tableName() {
89 return tableName;
90 }
91 }