Example usage for org.hibernate.mapping Table getUniqueKeyIterator

List of usage examples for org.hibernate.mapping Table getUniqueKeyIterator

Introduction

In this page you can find the example usage for org.hibernate.mapping Table getUniqueKeyIterator.

Prototype

public Iterator<UniqueKey> getUniqueKeyIterator() 

Source Link

Usage

From source file:com.github.gekoh.yagen.ddl.CreateDDL.java

License:Apache License

private boolean hasIndex(Table table, String tableNameLC, org.hibernate.mapping.Column column) {
    String columnName = column.getName().toLowerCase();
    if (tblColNameHasSingleColIndex.contains(tableNameLC + "." + columnName)) {
        return true;
    }//from w  ww  . j  av  a2s .c o  m

    TableConfig tableConfig = tblNameToConfig.get(tableNameLC);
    List<String> pkCols = tableConfig != null ? tableConfig.getPkColnames() : null;

    if (pkCols != null && pkCols.size() == 1 && pkCols.contains(columnName)) {
        return true;
    }

    PrimaryKey pk = table.getPrimaryKey();

    if (pk != null && pk.getColumnSpan() == 1 && pk.getColumns().get(0).equals(column)) {
        return true;
    }

    Iterator<UniqueKey> uniqueKeyIterator = table.getUniqueKeyIterator();
    while (uniqueKeyIterator.hasNext()) {
        UniqueKey uk = uniqueKeyIterator.next();
        if (uk.getColumnSpan() == 1 && uk.containsColumn(column)) {
            return true;
        }
    }

    return column.isUnique();
}

From source file:com.vecna.dbDiff.hibernate.HibernateMappingsConverter.java

License:Apache License

/**
 * Convert a Hibernate table model to the DbDiff table model.
 * @param mappedTable hibernate table./* w  w w  .j a  va 2s .  c o m*/
 * @return DbDiff table.
 */
private RelationalTable convertTable(org.hibernate.mapping.Table mappedTable) {
    RelationalTable table = new RelationalTable(m_catalogSchema, getTableName(mappedTable));

    List<Column> columns = new ArrayList<>();
    List<RelationalIndex> indices = new ArrayList<>();

    @SuppressWarnings("unchecked")
    Iterator<org.hibernate.mapping.Column> mappedColumns = mappedTable.getColumnIterator();
    int idx = 1;
    while (mappedColumns.hasNext()) {
        org.hibernate.mapping.Column mappedColumn = mappedColumns.next();
        Column column = convertColumn(mappedColumn, mappedTable, idx++);
        columns.add(column);
        if (mappedColumn.isUnique()) {
            indices.add(getUniqueIndex(table, column));
        }
    }

    table.setColumns(columns);

    Set<ForeignKey> fkeys = new HashSet<>();
    @SuppressWarnings("unchecked")
    Iterator<org.hibernate.mapping.ForeignKey> mappedKeys = mappedTable.getForeignKeyIterator();
    while (mappedKeys.hasNext()) {
        convertForeignKey(mappedKeys.next(), fkeys);
    }

    table.setFks(fkeys);

    @SuppressWarnings("unchecked")
    Iterator<Index> mappedIndices = mappedTable.getIndexIterator();

    while (mappedIndices.hasNext()) {
        indices.add(convertIndex(mappedIndices.next(), table));
    }

    @SuppressWarnings("unchecked")
    Iterator<UniqueKey> mappedUniqueKeys = mappedTable.getUniqueKeyIterator();
    while (mappedUniqueKeys.hasNext()) {
        indices.add(convertIndex(mappedUniqueKeys.next(), table));
    }

    if (mappedTable.getPrimaryKey() != null) {
        indices.add(convertIndex(mappedTable.getPrimaryKey(), table));
        List<String> pkColumnNames = new ArrayList<>();
        @SuppressWarnings("unchecked")
        Iterator<org.hibernate.mapping.Column> pkColumns = mappedTable.getPrimaryKey().getColumnIterator();
        while (pkColumns.hasNext()) {
            pkColumnNames.add(getColumnName(pkColumns.next()));
        }
        table.setPkColumns(pkColumnNames);
    }

    table.setIndices(indices);

    return table;
}

From source file:org.apereo.portal.tools.dbloader.HibernateDbLoader.java

License:Apache License

/** Generate create scripts and add them to the script list */
@SuppressWarnings("unchecked")
protected List<String> createScript(Collection<Table> tables, Dialect dialect, Mapping mapping,
        String defaultCatalog, String defaultSchema) {
    final List<String> script = new ArrayList<String>(tables.size() * 2);

    for (final Table table : tables) {
        if (table.isPhysicalTable()) {
            script.add(table.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
        }//  ww  w  . j  av a 2 s  .c om
    }

    for (final Table table : tables) {
        if (table.isPhysicalTable()) {
            if (!dialect.supportsUniqueConstraintInCreateAlterTable()) {
                for (final Iterator<UniqueKey> subIter = table.getUniqueKeyIterator(); subIter.hasNext();) {
                    final UniqueKey uk = subIter.next();
                    final String constraintString = uk.sqlCreateString(dialect, mapping, defaultCatalog,
                            defaultSchema);
                    if (constraintString != null) {
                        script.add(constraintString);
                    }
                }
            }

            for (final Iterator<Index> subIter = table.getIndexIterator(); subIter.hasNext();) {
                final Index index = subIter.next();
                script.add(index.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
            }

            if (dialect.hasAlterTable()) {
                for (final Iterator<ForeignKey> subIter = table.getForeignKeyIterator(); subIter.hasNext();) {
                    final ForeignKey fk = subIter.next();
                    if (fk.isPhysicalConstraint()) {
                        script.add(fk.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
                    }
                }
            }
        }
    }

    return script;
}

From source file:org.beangle.orm.hibernate.tool.DdlGenerator.java

License:Open Source License

@SuppressWarnings("unchecked")
private void generateTableSql(Table table) {
    if (!table.isPhysicalTable())
        return;//from  www. ja v a 2  s  .  c o m
    Iterator<String> commentIter = table.sqlCommentStrings(dialect, defaultCatalog, defaultSchema);
    while (commentIter.hasNext()) {
        comments.add(commentIter.next());
    }

    if (processed.contains(table))
        return;
    processed.add(table);
    tables.add(table.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));

    Iterator<UniqueKey> subIter = table.getUniqueKeyIterator();
    while (subIter.hasNext()) {
        UniqueKey uk = subIter.next();
        String constraintString = uk.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema);
        if (constraintString != null)
            constraints.add(constraintString);
    }

    Iterator<Index> idxIter = table.getIndexIterator();
    while (idxIter.hasNext()) {
        final Index index = idxIter.next();
        indexes.add(index.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
    }

    if (dialect.hasAlterTable()) {
        Iterator<ForeignKey> fkIter = table.getForeignKeyIterator();
        while (fkIter.hasNext()) {
            ForeignKey fk = fkIter.next();
            if (fk.isPhysicalConstraint()) {
                constraints.add(fk.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
            }
        }
    }
}

From source file:org.codehaus.groovy.grails.orm.hibernate.cfg.GrailsDomainBinderTests.java

License:Apache License

public void testUniqueConstraintGeneration() {
    DefaultGrailsDomainConfiguration config = getDomainConfig(UNIQUE_PROPERTIES);
    assertEquals("Tables created", 1, getTableCount(config));
    List expectedKeyColumns1 = Arrays
            .asList(new Column[] { new Column("camel_cased"), new Column("group"), new Column("login") });
    List expectedKeyColumns2 = Arrays.asList(new Column[] { new Column("camel_cased"), new Column("group") });
    Table mapping = (Table) config.getTableMappings().next();
    int cnt = 0;//from www  .j a v  a2 s. c  o m
    boolean found1 = false, found2 = false;
    for (Iterator i = mapping.getUniqueKeyIterator(); i.hasNext();) {
        UniqueKey key = (UniqueKey) i.next();
        List keyColumns = key.getColumns();
        if (keyColumns.equals(expectedKeyColumns1)) {
            found1 = true;
        }
        if (keyColumns.equals(expectedKeyColumns2)) {
            found2 = true;
        }
        cnt++;
    }
    assertEquals(2, cnt);
    assertEquals(true, mapping.getColumn(new Column("employeeID")).isUnique());
    assertEquals(true, found1);
    assertEquals(true, found2);
}

From source file:org.web4thejob.orm.PropertyMetadataImpl.java

License:Open Source License

@Override
public boolean isUniqueKeyWith(String propertyName) {

    if (getName().equals(propertyName)) {
        return false;
    }/*  w  w  w.j a  v  a  2 s .  c  om*/

    PersistentClass pc = entityMetadata.getPersistentClass();
    while (pc != null) {
        Table table = pc.getTable();
        for (Iterator<?> iterUK = table.getUniqueKeyIterator(); iterUK.hasNext();) {
            UniqueKey uniqueKey = (UniqueKey) iterUK.next();

            if (!(uniqueKey.getColumnSpan() > 1)) {
                continue;
            }

            int totcols = 0;
            boolean keyMembers = true;

            for (PropertyMetadataImpl propertyMetadata : Arrays.asList(this,
                    (PropertyMetadataImpl) entityMetadata.getPropertyMetadata(propertyName))) {
                if (!propertyMetadata.hasColumns()) {
                    return false;
                }

                for (final Iterator<?> iterCol = propertyMetadata.property.getColumnIterator(); iterCol
                        .hasNext();) {
                    Column column = (Column) iterCol.next();
                    keyMembers &= column != null && uniqueKey.containsColumn(column);
                }
                totcols += propertyMetadata.property.getColumnSpan();
            }

            if (keyMembers && totcols == uniqueKey.getColumnSpan()) {
                return true;
            }

        }

        pc = pc.getSuperclass();

    }

    return false;
}

From source file:org.web4thejob.orm.PropertyMetadataImpl.java

License:Open Source License

@Override
public boolean isMemberOfUniqueKey() {
    if (!hasColumns()) {
        return false;
    }//from w ww.j av  a 2s.  c  o  m

    PersistentClass pc = entityMetadata.getPersistentClass();
    while (pc != null) {
        Table table = pc.getTable();
        for (Iterator<?> iterUK = table.getUniqueKeyIterator(); iterUK.hasNext();) {
            UniqueKey uniqueKey = (UniqueKey) iterUK.next();
            boolean member = true;
            for (final Iterator<?> iterCol = property.getColumnIterator(); iterCol.hasNext();) {
                Column column = (Column) iterCol.next();
                member &= column != null && uniqueKey.containsColumn(column);
            }

            if (member) {
                return true;
            }
        }
        pc = pc.getSuperclass();
    }

    return false;
}