diff options
Diffstat (limited to 'src/main/java/com/iciql/SQLDialectHSQL.java')
-rw-r--r-- | src/main/java/com/iciql/SQLDialectHSQL.java | 230 |
1 files changed, 115 insertions, 115 deletions
diff --git a/src/main/java/com/iciql/SQLDialectHSQL.java b/src/main/java/com/iciql/SQLDialectHSQL.java index 8b05ca4..74a3dcc 100644 --- a/src/main/java/com/iciql/SQLDialectHSQL.java +++ b/src/main/java/com/iciql/SQLDialectHSQL.java @@ -16,135 +16,135 @@ package com.iciql;
-import java.text.MessageFormat;
-
import com.iciql.TableDefinition.FieldDefinition;
import com.iciql.util.StatementBuilder;
+import java.text.MessageFormat;
+
/**
* HyperSQL database dialect.
*/
public class SQLDialectHSQL extends SQLDialectDefault {
- /**
- * CACHED tables are created by default. MEMORY tables are created upon
- * request.
- */
- @Override
- protected <T> String prepareCreateTable(TableDefinition<T> def) {
- if (def.memoryTable) {
- return "CREATE MEMORY TABLE IF NOT EXISTS";
- } else {
- return "CREATE CACHED TABLE IF NOT EXISTS";
- }
- }
+ /**
+ * CACHED tables are created by default. MEMORY tables are created upon
+ * request.
+ */
+ @Override
+ protected <T> String prepareCreateTable(TableDefinition<T> def) {
+ if (def.memoryTable) {
+ return "CREATE MEMORY TABLE IF NOT EXISTS";
+ } else {
+ return "CREATE CACHED TABLE IF NOT EXISTS";
+ }
+ }
- @Override
- public <T> void prepareDropView(SQLStatement stat, TableDefinition<T> def) {
- StatementBuilder buff = new StatementBuilder("DROP VIEW IF EXISTS "
- + prepareTableName(def.schemaName, def.tableName));
- stat.setSQL(buff.toString());
- return;
- }
+ @Override
+ public <T> void prepareDropView(SQLStatement stat, TableDefinition<T> def) {
+ StatementBuilder buff = new StatementBuilder("DROP VIEW IF EXISTS "
+ + prepareTableName(def.schemaName, def.tableName));
+ stat.setSQL(buff.toString());
+ return;
+ }
- @Override
- protected boolean prepareColumnDefinition(StatementBuilder buff, String dataType,
- boolean isAutoIncrement, boolean isPrimaryKey) {
- boolean isIdentity = false;
- String convertedType = convertSqlType(dataType);
- buff.append(convertedType);
- if (isIntegerType(dataType) && isAutoIncrement && isPrimaryKey) {
- buff.append(" IDENTITY");
- isIdentity = true;
- }
- return isIdentity;
- }
+ @Override
+ protected boolean prepareColumnDefinition(StatementBuilder buff, String dataType,
+ boolean isAutoIncrement, boolean isPrimaryKey) {
+ boolean isIdentity = false;
+ String convertedType = convertSqlType(dataType);
+ buff.append(convertedType);
+ if (isIntegerType(dataType) && isAutoIncrement && isPrimaryKey) {
+ buff.append(" IDENTITY");
+ isIdentity = true;
+ }
+ return isIdentity;
+ }
- @Override
- public <T> void prepareMerge(SQLStatement stat, String schemaName, String tableName,
- TableDefinition<T> def, Object obj) {
- final String valuePrefix = "v";
- StatementBuilder buff = new StatementBuilder("MERGE INTO ");
- buff.append(prepareTableName(schemaName, tableName));
- // a, b, c....
- buff.append(" USING (VALUES(");
- for (FieldDefinition field : def.fields) {
- buff.appendExceptFirst(", ");
- buff.append("CAST(? AS ");
- String dataType = convertSqlType(field.dataType);
- buff.append(dataType);
- if ("VARCHAR".equals(dataType)) {
- if (field.length > 0) {
- // VARCHAR(x)
- buff.append(MessageFormat.format("({0})", field.length));
- }
- } else if ("DECIMAL".equals(dataType)) {
- if (field.length > 0) {
- if (field.scale > 0) {
- // DECIMAL(x,y)
- buff.append(MessageFormat.format("({0},{1})", field.length, field.scale));
- } else {
- // DECIMAL(x)
- buff.append(MessageFormat.format("({0})", field.length));
- }
- }
- }
- buff.append(')');
- Object value = def.getValue(obj, field);
- Object parameter = serialize(value, field.typeAdapter);
- stat.addParameter(parameter);
- }
+ @Override
+ public <T> void prepareMerge(SQLStatement stat, String schemaName, String tableName,
+ TableDefinition<T> def, Object obj) {
+ final String valuePrefix = "v";
+ StatementBuilder buff = new StatementBuilder("MERGE INTO ");
+ buff.append(prepareTableName(schemaName, tableName));
+ // a, b, c....
+ buff.append(" USING (VALUES(");
+ for (FieldDefinition field : def.fields) {
+ buff.appendExceptFirst(", ");
+ buff.append("CAST(? AS ");
+ String dataType = convertSqlType(field.dataType);
+ buff.append(dataType);
+ if ("VARCHAR".equals(dataType)) {
+ if (field.length > 0) {
+ // VARCHAR(x)
+ buff.append(MessageFormat.format("({0})", field.length));
+ }
+ } else if ("DECIMAL".equals(dataType)) {
+ if (field.length > 0) {
+ if (field.scale > 0) {
+ // DECIMAL(x,y)
+ buff.append(MessageFormat.format("({0},{1})", field.length, field.scale));
+ } else {
+ // DECIMAL(x)
+ buff.append(MessageFormat.format("({0})", field.length));
+ }
+ }
+ }
+ buff.append(')');
+ Object value = def.getValue(obj, field);
+ Object parameter = serialize(value, field.typeAdapter);
+ stat.addParameter(parameter);
+ }
- // map to temporary table
- buff.resetCount();
- buff.append(")) AS vals (");
- for (FieldDefinition field : def.fields) {
- buff.appendExceptFirst(", ");
- buff.append(prepareColumnName(valuePrefix + field.columnName));
- }
+ // map to temporary table
+ buff.resetCount();
+ buff.append(")) AS vals (");
+ for (FieldDefinition field : def.fields) {
+ buff.appendExceptFirst(", ");
+ buff.append(prepareColumnName(valuePrefix + field.columnName));
+ }
- buff.append(") ON ");
+ buff.append(") ON ");
- // create the ON condition
- // (va, vb) = (va,vb)
- String[] prefixes = { "", valuePrefix };
- for (int i = 0; i < prefixes.length; i++) {
- String prefix = prefixes[i];
- buff.resetCount();
- buff.append('(');
- for (FieldDefinition field : def.fields) {
- if (field.isPrimaryKey) {
- buff.appendExceptFirst(", ");
- buff.append(prepareColumnName(prefix + field.columnName));
- }
- }
- buff.append(")");
- if (i == 0) {
- buff.append('=');
- }
- }
+ // create the ON condition
+ // (va, vb) = (va,vb)
+ String[] prefixes = {"", valuePrefix};
+ for (int i = 0; i < prefixes.length; i++) {
+ String prefix = prefixes[i];
+ buff.resetCount();
+ buff.append('(');
+ for (FieldDefinition field : def.fields) {
+ if (field.isPrimaryKey) {
+ buff.appendExceptFirst(", ");
+ buff.append(prepareColumnName(prefix + field.columnName));
+ }
+ }
+ buff.append(")");
+ if (i == 0) {
+ buff.append('=');
+ }
+ }
- // UPDATE
- // set a=va
- buff.append(" WHEN MATCHED THEN UPDATE SET ");
- buff.resetCount();
- for (FieldDefinition field : def.fields) {
- buff.appendExceptFirst(", ");
- buff.append(prepareColumnName(field.columnName));
- buff.append('=');
- buff.append(prepareColumnName(valuePrefix + field.columnName));
- }
+ // UPDATE
+ // set a=va
+ buff.append(" WHEN MATCHED THEN UPDATE SET ");
+ buff.resetCount();
+ for (FieldDefinition field : def.fields) {
+ buff.appendExceptFirst(", ");
+ buff.append(prepareColumnName(field.columnName));
+ buff.append('=');
+ buff.append(prepareColumnName(valuePrefix + field.columnName));
+ }
- // INSERT
- // insert va, vb, vc....
- buff.append(" WHEN NOT MATCHED THEN INSERT ");
- buff.resetCount();
- buff.append(" VALUES (");
- for (FieldDefinition field : def.fields) {
- buff.appendExceptFirst(", ");
- buff.append(prepareColumnName(valuePrefix + field.columnName));
- }
- buff.append(')');
- stat.setSQL(buff.toString());
- }
+ // INSERT
+ // insert va, vb, vc....
+ buff.append(" WHEN NOT MATCHED THEN INSERT ");
+ buff.resetCount();
+ buff.append(" VALUES (");
+ for (FieldDefinition field : def.fields) {
+ buff.appendExceptFirst(", ");
+ buff.append(prepareColumnName(valuePrefix + field.columnName));
+ }
+ buff.append(')');
+ stat.setSQL(buff.toString());
+ }
}
\ No newline at end of file |