Example usage for org.hibernate.mapping UniqueKey addColumn

List of usage examples for org.hibernate.mapping UniqueKey addColumn

Introduction

In this page you can find the example usage for org.hibernate.mapping UniqueKey addColumn.

Prototype

public void addColumn(Column column) 

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

            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  w  w .  j a  va2  s .  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:net.lshift.hibernate.migrations.AlterTableBuilder.java

License:Apache License

public AlterTableBuilder addUniqueConstraint(String columnName) {
    UniqueKey uk = new UniqueKey();
    uk.addColumn(new Column(columnName));

    String constraintString = uk.sqlConstraintString(dialect);
    if (constraintString != null) {
        alterFragments.add("add " + constraintString);
    }/*from ww w .  jav a 2  s  .c om*/

    return this;
}

From source file:net.lshift.hibernate.migrations.AlterTableBuilder.java

License:Apache License

public AlterTableBuilder addUniqueConstraint(String name, String... columnNames) {
    UniqueKey uk = new UniqueKey();
    for (String col : columnNames)
        uk.addColumn(new Column(col));

    String defaultCatalog = config.getProperties().getProperty(Environment.DEFAULT_CATALOG);
    String defaultSchema = config.getProperties().getProperty(Environment.DEFAULT_SCHEMA);

    alterFragments.add(uk.sqlConstraintString(dialect, name, defaultCatalog, defaultSchema));
    return this;
}

From source file:org.openflexo.jdbc.hbn.MyDBTest.java

License:Open Source License

@Test
@TestOrder(4)//from   ww  w.j  a va  2 s  . com
public void testDeclareJDBCMetaData() {

    table = metadataCollector.addTable("", "", "T_Dynamic_Table_2", null, false);
    table.setName("T_Dynamic_Table_2");
    col = new Column();
    col.setName("pouet");
    col.setLength(256);
    col.setSqlType("CHAR(32)");
    col.setNullable(false);
    table.addColumn(col);

    PrimaryKey pk = new PrimaryKey(table);
    pk.addColumn(col);

    UniqueKey uk1 = new UniqueKey();
    uk1.setName("Nom_Unique");
    uk1.setTable(table);
    uk1.addColumn(col);
    table.addUniqueKey(uk1);

    col2 = new Column();
    col2.setName("padam");
    col2.setLength(256);
    col2.setSqlType("CHAR(32)");
    col2.setNullable(true);
    table.addColumn(col2);
    // pour rire les couples "Nom + Prenom" doivent tre uniques
    UniqueKey uk = new UniqueKey();
    uk.setName("Couple_Nom_Prenom_Unique");
    uk.setTable(table);
    uk.addColumn(col);
    uk.addColumn(col2);
    table.addUniqueKey(uk);

    // une colonne de clef etrangre vers T_Adresse
    col3 = new Column();
    col3.setName("id_addr");
    col3.setLength(16);
    col3.setSqlType("INTEGER");
    col3.setNullable(true);
    table.addColumn(col3);

    // **********
    // Creation / Dfinition de la table T_Adresse
    table2 = metadataCollector.addTable("", "", "T_Adresse_2", null, false);
    table2.setName("T_Adresse_2");
    col4 = new Column();
    col4.setName("Id");
    col4.setLength(16);
    col4.setSqlType("INTEGER");
    col4.setNullable(false);
    table2.addColumn(col4);

    pk = new PrimaryKey(table2);
    pk.addColumn(col);

    uk1 = new UniqueKey();
    uk1.setName("Id_Unique");
    uk1.setTable(table2);
    uk1.addColumn(col4);
    table.addUniqueKey(uk1);

    col5 = new Column();
    col5.setName("Adresse");
    col5.setLength(512);
    col5.setSqlType("CHAR(512)");
    col5.setNullable(true);
    table2.addColumn(col5);

}

From source file:org.openflexo.technologyadapter.jdbc.model.DynamicModelBuilder.java

License:Open Source License

public Metadata buildDynamicModel() {
    Metadata metadata = metadataCollector.buildMetadataInstance(metadataBuildingContext);

    Database database = metadata.getDatabase();

    // **********
    // Creation / Dfinition de la table T_Dynamic_Table

    Table table = metadataCollector.addTable("", "", "T_Dynamic_Table", null, false);
    table.setName("T_Dynamic_Table");
    Column col = new Column();
    col.setName("pouet");
    col.setLength(256);//from   w w w  .  ja  v a  2  s.c  o  m
    col.setSqlType("CHAR(256)");
    col.setNullable(false);
    table.addColumn(col);

    PrimaryKey pk = new PrimaryKey(table);
    pk.addColumn(col);

    UniqueKey uk1 = new UniqueKey();
    uk1.setName("Nom_Unique");
    uk1.setTable(table);
    uk1.addColumn(col);
    table.addUniqueKey(uk1);

    Column col2 = new Column();
    col2.setName("padam");
    col2.setLength(256);
    col2.setSqlType("CHAR(256)");
    col2.setNullable(true);
    table.addColumn(col2);
    // pour rire les couples "Nom + Prenom" doivent tre uniques
    UniqueKey uk = new UniqueKey();
    uk.setName("Couple_Nom_Prenom_Unique");
    uk.setTable(table);
    uk.addColumn(col);
    uk.addColumn(col2);
    table.addUniqueKey(uk);

    // une colonne de clef etrangre vers T_Adresse
    Column col3 = new Column();
    col3.setName("id_addr");
    col3.setLength(16);
    col3.setSqlType("INTEGER");
    col3.setNullable(true);
    table.addColumn(col3);

    // **********
    // Creation / Dfinition de la table T_Adresse
    Table table2 = metadataCollector.addTable("", "", "T_Adresse", null, false);
    table2.setName("T_Adresse");
    Column col4 = new Column();
    col4.setName("Id");
    col4.setLength(16);
    col4.setSqlType("INTEGER");
    col4.setNullable(false);
    table2.addColumn(col4);

    pk = new PrimaryKey(table2);
    pk.addColumn(col);

    uk1 = new UniqueKey();
    uk1.setName("Id_Unique");
    uk1.setTable(table2);
    uk1.addColumn(col4);
    table.addUniqueKey(uk1);

    Column col5 = new Column();
    col5.setName("Adresse");
    col5.setLength(512);
    col5.setSqlType("CHAR(512)");
    col5.setNullable(true);
    table2.addColumn(col5);

    // ************************
    // Creation de l'entit persiste "Dynamic_Class"

    RootClass pClass = new RootClass(metadataBuildingContext);
    pClass.setEntityName("Dynamic_Class");
    pClass.setJpaEntityName("Dynamic_Class");
    pClass.setTable(table);
    metadataCollector.addEntityBinding(pClass);

    // Creation d'une proprit (clef) et son mapping

    Property prop = new Property();
    prop.setName("Nom");
    SimpleValue value = new SimpleValue((MetadataImplementor) metadata, table);
    value.setTypeName("java.lang.String");
    value.setIdentifierGeneratorStrategy("assigned");
    value.addColumn(col);
    value.setTable(table);
    prop.setValue(value);
    pClass.setDeclaredIdentifierProperty(prop);
    pClass.setIdentifierProperty(prop);
    pClass.setIdentifier(value);

    // Creation d'une proprit et son mapping

    prop = new Property();
    prop.setName("Prenom");
    value = new SimpleValue((MetadataImplementor) metadata, table);
    value.setTypeName(String.class.getCanonicalName());
    value.addColumn(col2);
    value.setTable(table);
    prop.setValue(value);
    pClass.addProperty(prop);

    // ************************
    // Creation de l'entit persiste "Adresse"

    RootClass pClass2 = new RootClass(metadataBuildingContext);
    pClass2.setEntityName("Adresse");
    pClass2.setJpaEntityName("Adresse");
    pClass2.setTable(table2);
    metadataCollector.addEntityBinding(pClass2);

    // Creation d'une proprit (clef) et son mapping

    prop = new Property();
    prop.setName("Identifiant");
    value = new SimpleValue((MetadataImplementor) metadata, table2);
    value.setTypeName("java.lang.Integer");
    value.setIdentifierGeneratorStrategy("native");
    value.addColumn(col4);
    value.setTable(table2);
    prop.setValue(value);
    pClass2.setDeclaredIdentifierProperty(prop);
    pClass2.setIdentifierProperty(prop);
    pClass2.setIdentifier(value);

    // Creation d'une proprit et son mapping

    prop = new Property();
    prop.setName("Prenom");
    value = new SimpleValue((MetadataImplementor) metadata, table2);
    value.setTypeName(String.class.getCanonicalName());
    value.addColumn(col5);
    value.setTable(table2);
    prop.setValue(value);
    pClass2.addProperty(prop);

    try {
        ((MetadataImplementor) metadata).validate();
    } catch (MappingException e) {
        System.out.println("Validation Error: " + e.getMessage());
    }

    return metadata;

}