List of usage examples for org.hibernate.mapping UniqueKey addColumn
public void addColumn(Column column)
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; }