List of usage examples for org.hibernate.dialect Dialect getAddColumnSuffixString
public String getAddColumnSuffixString()
From source file:com.amalto.core.storage.hibernate.mapping.MDMDenormalizedTable.java
License:Open Source License
@Override public Iterator sqlAlterStrings(Dialect dialect, Mapping p, TableMetadata tableInfo, String defaultCatalog, String defaultSchema) throws HibernateException { StringBuilder root = new StringBuilder("alter table ") .append(getQualifiedName(dialect, defaultCatalog, defaultSchema)).append(' '); Iterator iter = getColumnIterator(); List results = new ArrayList(); while (iter.hasNext()) { Column column = (Column) iter.next(); ColumnMetadata columnInfo = tableInfo.getColumnMetadata(column.getName()); if (columnInfo == null) { // the column doesnt exist at all. StringBuilder alter = new StringBuilder(root.toString()).append(dialect.getAddColumnString()) .append(' ').append(column.getQuotedName(dialect)).append(' ') .append(column.getSqlType(dialect, p)); String defaultValue = column.getDefaultValue(); if (defaultValue != null) { alter.append(" default ").append(defaultValue); }//w ww.j a v a2s. c o m if (column.isNullable()) { alter.append(dialect.getNullColumnString()); } else { alter.append(" not null"); } if (column.isUnique()) { String keyName = Constraint.generateName("UK_", this, column); UniqueKey uk = getOrCreateUniqueKey(keyName); uk.addColumn(column); alter.append(dialect.getUniqueDelegate().getColumnDefinitionUniquenessFragment(column)); } if (column.hasCheckConstraint() && dialect.supportsColumnCheck()) { alter.append(" check(").append(column.getCheckConstraint()).append(")"); } String columnComment = column.getComment(); if (columnComment != null) { alter.append(dialect.getColumnComment(columnComment)); } alter.append(dialect.getAddColumnSuffixString()); results.add(alter.toString()); } else if (MDMTableUtils.isAlterColumnField(column, columnInfo, dialect)) { StringBuilder alter = new StringBuilder(root.toString()); if (dialect instanceof SQLServerDialect || dialect instanceof PostgreSQLDialect) { alter.append(" ").append("alter COLUMN").append(" "); } else { alter.append(" ").append("modify").append(" "); } alter.append(" ").append(column.getQuotedName(dialect)).append(" "); if (dialect instanceof PostgreSQLDialect) { alter.append("TYPE").append(" "); } alter.append(column.getSqlType(dialect, p)); LOGGER.debug(alter.toString()); results.add(alter.toString()); } } return results.iterator(); }
From source file:com.amalto.core.storage.hibernate.mapping.MDMTable.java
License:Open Source License
@Override public Iterator sqlAlterStrings(Dialect dialect, Mapping p, TableMetadata tableInfo, String defaultCatalog, String defaultSchema) throws HibernateException { StringBuilder root = new StringBuilder("alter table ") .append(getQualifiedName(dialect, defaultCatalog, defaultSchema)).append(' '); Iterator iter = getColumnIterator(); List results = new ArrayList(); while (iter.hasNext()) { Column column = (Column) iter.next(); ColumnMetadata columnInfo = tableInfo.getColumnMetadata(column.getName()); if (columnInfo == null) { // the column doesnt exist at all. StringBuilder alter = new StringBuilder(root.toString()).append(dialect.getAddColumnString()) .append(' ').append(column.getQuotedName(dialect)).append(' ') .append(column.getSqlType(dialect, p)); String defaultValue = column.getDefaultValue(); if (defaultValue != null) { alter.append(" default ").append(defaultValue); }/* w w w . ja v a 2s .c o m*/ if (column.isNullable()) { alter.append(dialect.getNullColumnString()); } else { alter.append(" not null"); } if (column.isUnique()) { String keyName = Constraint.generateName("UK_", this, column); UniqueKey uk = getOrCreateUniqueKey(keyName); uk.addColumn(column); alter.append(dialect.getUniqueDelegate().getColumnDefinitionUniquenessFragment(column)); } if (column.hasCheckConstraint() && dialect.supportsColumnCheck()) { alter.append(" check(").append(column.getCheckConstraint()).append(")"); } String columnComment = column.getComment(); if (columnComment != null) { alter.append(dialect.getColumnComment(columnComment)); } alter.append(dialect.getAddColumnSuffixString()); results.add(alter.toString()); } else if (MDMTableUtils.isAlterColumnField(column, columnInfo, dialect)) { StringBuilder alter = new StringBuilder(root.toString()); if (dialect instanceof SQLServerDialect || dialect instanceof PostgreSQLDialect) { alter.append(" ").append("alter COLUMN").append(" "); } else { alter.append(" ").append("modify").append(" "); } alter.append(" ").append(column.getQuotedName(dialect)).append(" "); if (dialect instanceof PostgreSQLDialect) { alter.append("TYPE").append(" "); } alter.append(column.getSqlType(dialect, p)); String defaultValue = column.getDefaultValue(); if (defaultValue != null) { alter.append(" default ").append(defaultValue); } if (column.isNullable()) { alter.append(dialect.getNullColumnString()); } else { alter.append(" not null"); } if (column.isUnique()) { String keyName = Constraint.generateName("UK_", this, column); UniqueKey uk = getOrCreateUniqueKey(keyName); uk.addColumn(column); alter.append(dialect.getUniqueDelegate().getColumnDefinitionUniquenessFragment(column)); } if (column.hasCheckConstraint() && dialect.supportsColumnCheck()) { alter.append(" check(").append(column.getCheckConstraint()).append(")"); } String columnComment = column.getComment(); if (columnComment != null) { alter.append(dialect.getColumnComment(columnComment)); } alter.append(dialect.getAddColumnSuffixString()); LOGGER.debug(alter.toString()); results.add(alter.toString()); } } return results.iterator(); }