1 package uba.db.sql.language;
2
3 import org.apache.commons.lang.builder.EqualsBuilder;
4 import org.apache.commons.lang.builder.HashCodeBuilder;
5
6 /***
7 * Representa la declaracion de una columna tipo CHAR dentro de la sentencia
8 * CREATE TABLE.
9 *
10 * @version $Revision: 1.5 $
11 */
12 public class CharColumnDeclaration extends ColumnDeclarationBehavior {
13 private int maxChars;
14
15 /***
16 * Longitud maxima de caracteres que por default tiene la columna.
17 *
18 * @see #CharColumnDeclaration(ColumnName)
19 */
20 public static final int DEFAULT_MAX_CHARS = 1;
21
22 /***
23 * @param columnName
24 * nombre de la columna
25 * @param maxChars
26 * cantidad de caracteres que puede tener la columna.
27 * @param constraint
28 * constraint que indica si la columna puede o no ser null, etc.
29 */
30 public CharColumnDeclaration(ColumnName columnName, int maxChars,
31 ColumnConstraintDeclaration constraint) {
32 super(columnName, constraint);
33 this.maxChars = maxChars;
34 }
35
36 /***
37 * @see #CharColumnDeclaration(ColumnName, int, ColumnConstraintDeclaration)
38 */
39 public CharColumnDeclaration(ColumnName columnName, int maxChars) {
40 super(columnName);
41 this.maxChars = maxChars;
42 }
43
44 /***
45 * @see #CharColumnDeclaration(ColumnName, int, ColumnConstraintDeclaration)
46 */
47 public CharColumnDeclaration(ColumnName columnName) {
48 this(columnName, DEFAULT_MAX_CHARS);
49 }
50
51 /***
52 * Construye una nueva instancia con el nombre especificado y la longitud
53 * por default.
54 *
55 * @param columnName
56 * nombre de la columna
57 * @param constraint
58 * constraint que indica si la columna puede o no ser null, etc.
59 */
60 public CharColumnDeclaration(ColumnName columnName,
61 ColumnConstraintDeclaration constraint) {
62 this(columnName, DEFAULT_MAX_CHARS, constraint);
63 }
64
65 /***
66 * @see uba.db.sql.language.ColumnDeclarationBehavior#columnTypeAsString()
67 */
68 protected String columnTypeAsString() {
69 return "CHAR(" + maxChars + ")";
70 }
71
72 /***
73 * @see java.lang.Object#equals(java.lang.Object)
74 */
75 public boolean equals(Object obj) {
76 return EqualsBuilder.reflectionEquals(this, obj);
77 }
78
79 /***
80 * @see java.lang.Object#hashCode()
81 */
82 public int hashCode() {
83 return HashCodeBuilder.reflectionHashCode(this);
84 }
85
86 /***
87 * @see uba.db.sql.language.Visitable#accept(uba.db.sql.language.Visitor)
88 */
89 public void accept(Visitor visitor) {
90 visitor.visitCharColumnDeclaration(this);
91 }
92
93 /***
94 * Retorna la cantidad máxima de caracteres que puede tener la columna.
95 */
96 public int maxChars() {
97 return maxChars;
98 }
99 }