Example usage for org.hibernate.tool.hbm2ddl TableMetadata getColumnMetadata

List of usage examples for org.hibernate.tool.hbm2ddl TableMetadata getColumnMetadata

Introduction

In this page you can find the example usage for org.hibernate.tool.hbm2ddl TableMetadata getColumnMetadata.

Prototype

public ColumnMetadata getColumnMetadata(String columnName) 

Source Link

Usage

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  w w. ja  v a 2 s . c om

            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);
            }/*from w ww.  j  a  va2s  .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();
}

From source file:corner.migration.services.impl.fragment.ChangeColumnFragment.java

License:Apache License

String sqlAlterStrings(Table table, String columnName, Dialect dialect, Mapping p, TableMetadata tableInfo,
        String defaultCatalog, String defaultSchema) throws HibernateException {

    Iterator iter = table.getColumnIterator();
    String alterSQL = null;//from w w w . j a v a 2 s .com

    while (iter.hasNext()) {
        Column column = (Column) iter.next();
        ColumnMetadata columnInfo = tableInfo.getColumnMetadata(column.getName());
        if (columnInfo != null && columnInfo.getName().toLowerCase().equals(columnName.toLowerCase())) {//,???
            alterSQL = this.getConnectionAdapter().changeColumnSQL(this.getQualifiedTableName(table),
                    getSQLType(column));
        }

    }
    return alterSQL;
}

From source file:corner.services.migration.impl.fragment.ChangeColumnFragment.java

License:Apache License

String sqlAlterStrings(Table table, String columnName, Dialect dialect, Mapping p, TableMetadata tableInfo,
        String defaultCatalog, String defaultSchema) throws HibernateException {

    Iterator iter = table.getColumnIterator();
    String alterSQL = null;/*www.j  a  v  a  2 s  .  c  om*/

    while (iter.hasNext()) {
        Column column = (Column) iter.next();
        ColumnMetadata columnInfo = tableInfo.getColumnMetadata(column.getName());
        if (columnInfo != null && columnInfo.getName().toLowerCase().equals(columnName.toLowerCase())) {//,???
            alterSQL = this.getConnectionAdapter().changeColumnSQL(table.getName(), getSQLType(column));
        }

    }
    return alterSQL;
}

From source file:org.beangle.commons.orm.hibernate.internal.SchemaValidator.java

License:Open Source License

private void validateColumns(Table table, Dialect dialect, Mapping mapping, TableMetadata tableInfo) {
    Iterator<?> iter = table.getColumnIterator();
    Set<ColumnMetadata> processed = CollectUtils.newHashSet();
    String tableName = Table.qualify(tableInfo.getCatalog(), tableInfo.getSchema(), tableInfo.getName());
    while (iter.hasNext()) {
        Column col = (Column) iter.next();
        ColumnMetadata columnInfo = tableInfo.getColumnMetadata(col.getName());
        if (columnInfo == null) {
            reporter.append("Missing column: " + col.getName() + " in " + tableName);
        } else {//from   ww w. j  ava  2s.c  om
            final boolean typesMatch = col.getSqlType(dialect, mapping).toLowerCase()
                    .startsWith(columnInfo.getTypeName().toLowerCase())
                    || columnInfo.getTypeCode() == col.getSqlTypeCode(mapping);
            if (!typesMatch) {
                reporter.append("Wrong column type in " + tableName + " for column " + col.getName()
                        + ". Found: " + columnInfo.getTypeName().toLowerCase() + ", expected: "
                        + col.getSqlType(dialect, mapping));
            }
            processed.add(columnInfo);
        }
    }
    // 
    try {
        Field field = tableInfo.getClass().getField("columns");
        @SuppressWarnings("unchecked")
        Set<ColumnMetadata> allColumns = CollectUtils
                .newHashSet(((Map<String, ColumnMetadata>) field.get(tableInfo)).values());
        allColumns.removeAll(processed);
        if (!allColumns.isEmpty()) {
            for (ColumnMetadata col : allColumns) {
                reporter.append("Extra column " + col.getName() + " in " + tableName);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}