KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > riotfamily > revolt > dialect > HsqlDialect


1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1
3  * The contents of this file are subject to the Mozilla Public License Version
4  * 1.1 (the "License"); you may not use this file except in compliance with
5  * the License. You may obtain a copy of the License at
6  * http://www.mozilla.org/MPL/
7  *
8  * Software distributed under the License is distributed on an "AS IS" basis,
9  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
10  * for the specific language governing rights and limitations under the
11  * License.
12  *
13  * The Original Code is Riot.
14  *
15  * The Initial Developer of the Original Code is
16  * Neteye GmbH.
17  * Portions created by the Initial Developer are Copyright (C) 2006
18  * the Initial Developer. All Rights Reserved.
19  *
20  * Contributor(s):
21  * Felix Gnass [fgnass at neteye dot de]
22  *
23  * ***** END LICENSE BLOCK ***** */

24 package org.riotfamily.revolt.dialect;
25
26 import org.riotfamily.revolt.Script;
27 import org.riotfamily.revolt.definition.Column;
28 import org.riotfamily.revolt.definition.Index;
29 import org.riotfamily.revolt.support.TypeMap;
30
31 /**
32  * @author Felix Gnass [fgnass at neteye dot de]
33  *
34  */

35 public class HsqlDialect extends Sql92Dialect {
36
37     protected void registerTypes() {
38         registerType(TypeMap.BIT, TypeMap.BIT);
39         registerType(TypeMap.TINYINT, TypeMap.TINYINT);
40         registerType(TypeMap.SMALLINT, TypeMap.SMALLINT);
41         registerType(TypeMap.INTEGER, TypeMap.INTEGER);
42         registerType(TypeMap.BIGINT, TypeMap.BIGINT);
43         registerType(TypeMap.FLOAT, TypeMap.FLOAT);
44         registerType(TypeMap.REAL, TypeMap.REAL);
45         registerType(TypeMap.DOUBLE, TypeMap.DOUBLE);
46         registerType(TypeMap.NUMERIC, TypeMap.NUMERIC);
47         registerType(TypeMap.DECIMAL, TypeMap.DECIMAL);
48         registerType(TypeMap.CHAR, TypeMap.CHAR);
49         registerType(TypeMap.VARCHAR, TypeMap.VARCHAR);
50         registerType(TypeMap.LONGVARCHAR, TypeMap.LONGVARCHAR);
51         registerType(TypeMap.DATE, TypeMap.DATE);
52         registerType(TypeMap.TIME, TypeMap.TIME);
53         registerType(TypeMap.TIMESTAMP, TypeMap.TIMESTAMP);
54         registerType(TypeMap.BINARY, TypeMap.BINARY);
55         registerType(TypeMap.VARBINARY, TypeMap.VARBINARY);
56         registerType(TypeMap.LONGVARBINARY, TypeMap.LONGVARBINARY);
57         registerType(TypeMap.BLOB, TypeMap.BLOB);
58         registerType(TypeMap.CLOB, TypeMap.CLOB);
59     }
60
61     public boolean supports(String JavaDoc databaseProductName,
62             int majorVersion, int minorVersion) {
63
64         return "HSQL Database Engine".equals(databaseProductName);
65     }
66     
67     protected void addColumnDefinition(Script sql, Column column) {
68         if (column.isAutoIncrement()) {
69             sql.append(quote(column)).append(getColumnType(column));
70             sql.append("GENERATED BY DEFAULT AS IDENTITY");
71         }
72         else {
73             super.addColumnDefinition(sql, column);
74         }
75     }
76     
77     public Script createAutoIncrementSequence(String JavaDoc name) {
78         return null;
79     }
80     
81     public Script renameTable(String JavaDoc name, String JavaDoc renameTo) {
82         return alterTable(name).append("RENAME TO").append(quote(renameTo));
83     }
84
85     public Script createIndex(String JavaDoc table, Index index) {
86         Script sql = new Script("CREATE INDEX").append(index.getName())
87                 .append("ON").append(quote(table));
88         
89         addColumnNames(sql, index.getColumns());
90         return sql;
91     }
92
93     public Script dropIndex(String JavaDoc table, String JavaDoc name) {
94         return new Script("DROP INDEX").append(name);
95     }
96
97     public Script modifyColumn(String JavaDoc table, Column column) {
98         Script sql = new Script();
99         sql.append("ALTER TABLE").append(quote(table)).append("ALTER COLUMN");
100         addColumnDefinition(sql, column);
101         return sql;
102     }
103
104     public Script renameColumn(String JavaDoc table, String JavaDoc name, String JavaDoc renameTo) {
105         return alterTable(table).append("RENAME COLUMN").append(quote(name))
106                 .append("TO").append(quote(renameTo));
107     }
108
109 }
110
Popular Tags