1 package uba.db.sql.language;
2
3 /***
4 * Clase base para las declaraciones de columnas en una sentencia CREATE TABLE.
5 *
6 * @version $Revision: 1.3 $
7 */
8 public abstract class ColumnDeclarationBehavior implements ColumnDeclaration {
9 private ColumnName columnName;
10 private ColumnConstraintDeclaration constraint;
11
12 /***
13 * @param columnName
14 * nombre de la columna.
15 */
16 public ColumnDeclarationBehavior(ColumnName columnName) {
17 this(columnName, ColumnConstraintDeclaration.DEFAULT);
18 }
19
20 /***
21 * @param columnName
22 * nombre de la columna
23 * @param constraint
24 * constraint que indica si la columna puede o no ser null, etc.
25 */
26 public ColumnDeclarationBehavior(ColumnName columnName,
27 ColumnConstraintDeclaration constraint) {
28 this.columnName = columnName;
29 this.constraint = constraint;
30 }
31
32 /***
33 * @see uba.db.sql.language.ColumnDeclaration#columnName()
34 */
35 public ColumnName columnName() {
36 return columnName;
37 }
38
39 /***
40 * @see uba.db.sql.language.ColumnDeclaration#constraint()
41 */
42 public ColumnConstraintDeclaration constraint() {
43 return constraint;
44 }
45
46 /***
47 * @see java.lang.Object#toString()
48 */
49 public String toString() {
50 StringBuffer result = new StringBuffer(columnName.toString());
51
52 result.append(" ").append(columnTypeAsString());
53 if (!constraint.equals(ColumnConstraintDeclaration.DEFAULT)) {
54 result.append(" ").append(constraint);
55 }
56
57 return result.toString();
58 }
59
60 /***
61 * Las subclases debe implementar este metodo para retornar una
62 * representación en String del tipo de la columna.
63 */
64 protected abstract String columnTypeAsString();
65 }