1 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 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 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 name) { 78 return null; 79 } 80 81 public Script renameTable(String name, String renameTo) { 82 return alterTable(name).append("RENAME TO").append(quote(renameTo)); 83 } 84 85 public Script createIndex(String 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 table, String name) { 94 return new Script("DROP INDEX").append(name); 95 } 96 97 public Script modifyColumn(String 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 table, String name, String renameTo) { 105 return alterTable(table).append("RENAME COLUMN").append(quote(name)) 106 .append("TO").append(quote(renameTo)); 107 } 108 109 } 110 | Popular Tags |