Java 类org.hibernate.mapping.Column 实例源码

项目:Equella    文件:ExtendedOracle10gDialect.java   
@Override
public String getModifyColumnSql(Mapping mapping, Column column, boolean changeNotNull, boolean changeType)
{
    String columnName = column.getQuotedName(this);

    String nullStr = "";
    if( changeNotNull )
    {
        nullStr = column.isNullable() ? " NULL" : " NOT NULL";
    }
    String typeStr = "";
    if( changeType )
    {
        typeStr = ' ' + column.getSqlType(this, mapping);
    }

    return "MODIFY (" + columnName + typeStr + nullStr + ")";
}
项目:Equella    文件:ExtendedPostgresDialect.java   
@Override
public String getModifyColumnSql(Mapping mapping, Column column, boolean changeNotNull, boolean changeType)
{
    StringBuilder sbuf = new StringBuilder();
    String columnName = column.getQuotedName(this);

    if( changeNotNull )
    {
        sbuf.append("ALTER COLUMN ");
        sbuf.append(columnName).append(' ');
        sbuf.append(column.isNullable() ? "DROP" : "SET");
        sbuf.append(" NOT NULL");
    }
    if( changeType )
    {
        if( changeNotNull )
        {
            sbuf.append(", ");
        }
        sbuf.append("ALTER COLUMN ");
        sbuf.append(columnName).append(" TYPE ").append(column.getSqlType(this, mapping));
    }
    return sbuf.toString();
}
项目:Equella    文件:HibernateMigrationHelper.java   
@SuppressWarnings({"unchecked"})
private void addIndexSQL(List<String> sqlStrings, Table table, Set<Column> colSet)
{
    Iterator<Index> indexIterator = table.getIndexIterator();
    while( indexIterator.hasNext() )
    {
        Index index = indexIterator.next();
        Iterator<Column> colIter = index.getColumnIterator();
        boolean found = false;
        while( colIter.hasNext() )
        {
            Column col = colIter.next();
            if( colSet.contains(col) )
            {
                found = true;
                break;
            }
        }
        if( found && (!extDialect.supportsAutoIndexForUniqueColumn() || !hasUniqueIndex(index, table)) )
        {
            sqlStrings.add(index.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
        }
    }
}
项目:Equella    文件:HibernateMigrationHelper.java   
@SuppressWarnings("unchecked")
private boolean hasUniqueIndex(Index index, Table table)
{
    HashSet<Column> indexCols = new HashSet<Column>();
    Iterator<Column> icolIter = index.getColumnIterator();
    while( icolIter.hasNext() )
    {
        Column col = icolIter.next();
        indexCols.add(col);
        if( index.getColumnSpan() == 1 && table.getColumn(col).isUnique() )
        {
            return true;
        }
    }
    Iterator<UniqueKey> iter = table.getUniqueKeyIterator();
    while( iter.hasNext() )
    {
        UniqueKey uk = iter.next();
        if( uk.getColumnSpan() == indexCols.size() && indexCols.containsAll(uk.getColumns()) )
        {
            return true;
        }
    }
    return false;
}
项目:Equella    文件:HibernateMigrationHelper.java   
/**
 * @param tableName
 * @param columnName
 * @param changeNotNull
 * @param nullable Pass in null to use the annotation on the column. This is
 *            not always possible (see Redmine #3329).
 * @param changeType
 * @return
 */
public List<String> getModifyColumnSQL(String tableName, String columnName, boolean changeNotNull,
    boolean changeType)
{
    List<String> sqlStrings = new ArrayList<String>();

    Table table = findTable(tableName);
    Column column = table.getColumn(new Column(columnName));

    StringBuffer alter = new StringBuffer("alter table ")
        .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema)).append(' ')
        .append(extDialect.getModifyColumnSql(mapping, column, changeNotNull, changeType));

    sqlStrings.add(alter.toString());
    return sqlStrings;
}
项目:Equella    文件:HibernateMigrationHelper.java   
public List<String> getDropColumnSQL(String tableName, String... columns)
{
    List<String> sqlStrings = new ArrayList<String>();

    Table table = findTable(tableName);
    for( String columnName : columns )
    {
        Column column = table.getColumn(new Column(columnName));
        if( column == null )
        {
            throw new RuntimeException("Could not find column " + columnName + " on table " + tableName);
        }
        sqlStrings.add(extDialect.getDropColumnSql(table.getQualifiedName(dialect, defaultCatalog, defaultSchema),
            column));
    }
    return sqlStrings;
}
项目:Equella    文件:HibernateMigrationHelper.java   
public List<String> getAddNotNullSQL(String tableName, String... columns)
{
    List<String> sqlStrings = new ArrayList<String>();

    Table table = findTable(tableName);
    for( String columnName : columns )
    {
        Column column = table.getColumn(new Column(columnName));

        StringBuffer alter = new StringBuffer("alter table ")
            .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema)).append(' ')
            .append(extDialect.getAddNotNullSql(mapping, column));
        sqlStrings.add(alter.toString());
    }
    return sqlStrings;
}
项目:Equella    文件:HibernateMigrationHelper.java   
public Collection<? extends String> getAddIndexesRawIfRequired(Session session, String tableName,
    String[]... indexes)
{
    List<String> sqlStrings = new ArrayList<String>();
    final Table table = findTable(tableName);
    Map<Set<String>, String> revIndexMap = getExistingIndexes(table, session);
    for( String[] index : indexes )
    {
        Index indexObj = new Index();
        indexObj.setTable(table);
        indexObj.setName(index[0]);
        for( int i = 1; i < index.length; i++ )
        {
            Column col = new Column(index[i]);
            indexObj.addColumn(col);
        }
        processIndex(table, indexObj, revIndexMap, sqlStrings);
    }
    return sqlStrings;
}
项目:Equella    文件:HibernateMigrationHelper.java   
public Collection<? extends String> getAddIndexesRaw(String tableName, String[]... indexes)
{
    List<String> sqlStrings = new ArrayList<String>();
    final Table table = findTable(tableName);
    for( String[] index : indexes )
    {
        Index indexObj = new Index();
        indexObj.setTable(table);
        indexObj.setName(index[0]);
        for( int i = 1; i < index.length; i++ )
        {
            Column col = new Column(index[i]);
            indexObj.addColumn(col);
        }
        sqlStrings.add(indexObj.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
    }
    return sqlStrings;
}
项目:Equella    文件:HibernateMigrationHelper.java   
@SuppressWarnings("unchecked")
private void processIndex(Table table, Index index, Map<Set<String>, String> revIndexMap, List<String> sqlStrings)
{
    Iterator<Column> colIter = index.getColumnIterator();
    Set<String> indexCols = new HashSet<String>();
    while( colIter.hasNext() )
    {
        Column col = colIter.next();
        indexCols.add(col.getName().toLowerCase());
    }
    String existingIndex = revIndexMap.get(indexCols);
    if( existingIndex != null )
    {
        if( existingIndex.equalsIgnoreCase(index.getName()) )
        {
            return;
        }
        else
        {
            sqlStrings.add(extDialect.getDropIndexSql(table.getName(), '`' + existingIndex + '`'));
        }
    }
    sqlStrings.add(index.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema));
}
项目:lams    文件:IndexOrUniqueKeySecondPass.java   
private void addConstraintToColumn(final String columnName ) {
    Column column = table.getColumn(
            new Column(
                    mappings.getPhysicalColumnName( columnName, table )
            )
    );
    if ( column == null ) {
        throw new AnnotationException(
                "@Index references a unknown column: " + columnName
        );
    }
    if ( unique )
        table.getOrCreateUniqueKey( indexName ).addColumn( column );
    else
        table.getOrCreateIndex( indexName ).addColumn( column );
}
项目:lams    文件:Configuration.java   
private void bindLogicalToPhysical(String logicalName, Column physicalColumn) throws DuplicateMappingException {
    final String logicalKey = logicalName.toLowerCase();
    final String physicalName = physicalColumn.getQuotedName();
    final String existingPhysicalName = ( String ) logicalToPhysical.put( logicalKey, physicalName );
    if ( existingPhysicalName != null ) {
        boolean areSamePhysicalColumn = physicalColumn.isQuoted()
                ? existingPhysicalName.equals( physicalName )
                : existingPhysicalName.equalsIgnoreCase( physicalName );
        if ( ! areSamePhysicalColumn ) {
            throw new DuplicateMappingException(
                    " Table [" + tableName + "] contains logical column name [" + logicalName
                            + "] referenced by multiple physical column names: [" + existingPhysicalName
                            + "], [" + physicalName + "]",
                    "column-binding",
                    tableName + "." + logicalName
            );
        }
    }
}
项目:lams    文件:BinderHelper.java   
private static void matchColumnsByProperty(Property property, Map<Column, Set<Property>> columnsToProperty) {
        if ( property == null ) return;
        if ( "noop".equals( property.getPropertyAccessorName() )
                || "embedded".equals( property.getPropertyAccessorName() ) ) {
            return;
        }
// FIXME cannot use subproperties becasue the caller needs top level properties
//      if ( property.isComposite() ) {
//          Iterator subProperties = ( (Component) property.getValue() ).getPropertyIterator();
//          while ( subProperties.hasNext() ) {
//              matchColumnsByProperty( (Property) subProperties.next(), columnsToProperty );
//          }
//      }
        else {
            Iterator columnIt = property.getColumnIterator();
            while ( columnIt.hasNext() ) {
                Object column = columnIt.next(); //can be a Formula so we don't cast
                //noinspection SuspiciousMethodCalls
                if ( columnsToProperty.containsKey( column ) ) {
                    columnsToProperty.get( column ).add( property );
                }
            }
        }
    }
项目:lams    文件:Ejb3JoinColumn.java   
public void linkValueUsingDefaultColumnNaming(
        Column referencedColumn,
        PersistentClass referencedEntity,
        SimpleValue value) {
    String columnName;
    String logicalReferencedColumn = getMappings().getLogicalColumnName(
            referencedColumn.getQuotedName(), referencedEntity.getTable()
    );
    columnName = buildDefaultColumnName( referencedEntity, logicalReferencedColumn );
    //yuk side effect on an implicit column
    setLogicalColumnName( columnName );
    setReferencedColumn( logicalReferencedColumn );
    initMappingColumn(
            columnName,
            null, referencedColumn.getLength(),
            referencedColumn.getPrecision(),
            referencedColumn.getScale(),
            getMappingColumn() != null ? getMappingColumn().isNullable() : false,
            referencedColumn.getSqlType(),
            getMappingColumn() != null ? getMappingColumn().isUnique() : false,
            false
    );
    linkWithValue( value );
}
项目:lams    文件:Ejb3JoinColumn.java   
/**
 * Called to apply column definitions from the referenced FK column to this column.
 *
 * @param column the referenced column.
 */
public void overrideFromReferencedColumnIfNecessary(org.hibernate.mapping.Column column) {
    if (getMappingColumn() != null) {
        // columnDefinition can also be specified using @JoinColumn, hence we have to check
        // whether it is set or not
        if ( StringHelper.isEmpty( sqlType ) ) {
            sqlType = column.getSqlType();
            getMappingColumn().setSqlType( sqlType );
        }

        // these properties can only be applied on the referenced column - we can just take them over
        getMappingColumn().setLength(column.getLength());
        getMappingColumn().setPrecision(column.getPrecision());
        getMappingColumn().setScale(column.getScale());
    }
}
项目:lams    文件:TableBinder.java   
public static void linkJoinColumnWithValueOverridingNameIfImplicit(
        PersistentClass referencedEntity,
        Iterator columnIterator,
        Ejb3JoinColumn[] columns,
        SimpleValue value) {
    for (Ejb3JoinColumn joinCol : columns) {
        Column synthCol = (Column) columnIterator.next();
        if ( joinCol.isNameDeferred() ) {
            //this has to be the default value
            joinCol.linkValueUsingDefaultColumnNaming( synthCol, referencedEntity, value );
        }
        else {
            joinCol.linkWithValue( value );
            joinCol.overrideFromReferencedColumnIfNecessary( synthCol );
        }
    }
}
项目:lams    文件:ForeignKeyMetadata.java   
public boolean matches(ForeignKey fk) {
    if ( refTable.equalsIgnoreCase( fk.getReferencedTable().getName() ) ) {
        if ( fk.getColumnSpan() == references.size() ) {
            List fkRefs;
            if ( fk.isReferenceToPrimaryKey() ) {
                fkRefs = fk.getReferencedTable().getPrimaryKey().getColumns();
            }
            else {
                fkRefs = fk.getReferencedColumns();
            }
            for ( int i = 0; i < fk.getColumnSpan(); i++ ) {
                Column column = fk.getColumn( i );
                Column ref = ( Column ) fkRefs.get( i );
                if ( !hasReference( column, ref ) ) {
                    return false;
                }
            }
            return true;
        }
    }
    return false;
}
项目:lams    文件:PersistentTableBulkIdStrategy.java   
protected Table generateIdTableDefinition(PersistentClass entityMapping) {
    Table idTable = new Table( entityMapping.getTemporaryIdTableName() );
    if ( catalog != null ) {
        idTable.setCatalog( catalog );
    }
    if ( schema != null ) {
        idTable.setSchema( schema );
    }
    Iterator itr = entityMapping.getTable().getPrimaryKey().getColumnIterator();
    while( itr.hasNext() ) {
        Column column = (Column) itr.next();
        idTable.addColumn( column.clone()  );
    }
    Column sessionIdColumn = new Column( "hib_sess_id" );
    sessionIdColumn.setSqlType( "CHAR(36)" );
    sessionIdColumn.setComment( "Used to hold the Hibernate Session identifier" );
    idTable.addColumn( sessionIdColumn );

    idTable.setComment( "Used to hold id values for the " + entityMapping.getEntityName() + " class" );
    return idTable;
}
项目:hibernate-ogm-ignite    文件:IgniteCacheInitializer.java   
private String fieldType(Column currentColumn) {
    TypeTranslator translator = serviceRegistry.getService( TypeTranslator.class );
    Type valueType = currentColumn.getValue().getType();
    GridType gridType = translator.getType( valueType );
    if ( gridType instanceof EnumType ) {
        return enumFieldType( (EnumType) gridType );
    }
    if ( gridType instanceof YesNoType ) {
        return STRING_CLASS_NAME;
    }
    if ( gridType instanceof NumericBooleanType ) {
        return INTEGER_CLASS_NAME;
    }
    Class<?> returnedClass = valueType.getReturnedClass();
    if ( Character.class.equals( returnedClass ) ) {
        return STRING_CLASS_NAME;
    }
    return returnedClass.getName();
}
项目:cacheonix-core    文件:HbmBinder.java   
public static void bindColumn(Element node, Column column, boolean isNullable) {
    Attribute lengthNode = node.attribute( "length" );
    if ( lengthNode != null ) column.setLength( Integer.parseInt( lengthNode.getValue() ) );
    Attribute scalNode = node.attribute( "scale" );
    if ( scalNode != null ) column.setScale( Integer.parseInt( scalNode.getValue() ) );
    Attribute precNode = node.attribute( "precision" );
    if ( precNode != null ) column.setPrecision( Integer.parseInt( precNode.getValue() ) );

    Attribute nullNode = node.attribute( "not-null" );
    column.setNullable( nullNode == null ? isNullable : nullNode.getValue().equals( "false" ) );

    Attribute unqNode = node.attribute( "unique" );
    if ( unqNode != null ) column.setUnique( unqNode.getValue().equals( "true" ) );

    column.setCheckConstraint( node.attributeValue( "check" ) );
    column.setDefaultValue( node.attributeValue( "default" ) );

    Attribute typeNode = node.attribute( "sql-type" );
    if ( typeNode != null ) column.setSqlType( typeNode.getValue() );

    Element comment = node.element("comment");
    if (comment!=null) column.setComment( comment.getTextTrim() );

}
项目:cacheonix-core    文件:PropertyRefTest.java   
public void testForeignKeyCreation() {
    PersistentClass classMapping = getCfg().getClassMapping("org.hibernate.test.propertyref.basic.Account");

    Iterator foreignKeyIterator = classMapping.getTable().getForeignKeyIterator();
    boolean found = false;
    while ( foreignKeyIterator.hasNext() ) {
        ForeignKey element = (ForeignKey) foreignKeyIterator.next();
        if(element.getReferencedEntityName().equals(Person.class.getName() ) ) {

            if(!element.isReferenceToPrimaryKey() ) {
                List referencedColumns = element.getReferencedColumns();
                Column column = (Column) referencedColumns.get(0);
                if(column.getName().equals("person_userid") ) {
                    found = true; // extend test to include the columns
                }               
            }
        }
    }

    assertTrue("Property ref foreign key not found",found);
}
项目:greenpepper    文件:AbstractDBUnitHibernateMemoryTest.java   
@SuppressWarnings("unchecked")
protected String[] getColumnNames( Class peristentClass, String[] includedFields )
        throws MappingException
{
    Collection columns = new ArrayList();
    for ( int i = 0; i < includedFields.length; i++ )
    {
        String propertyName = includedFields[i];
        Property property = getMapping( peristentClass ).getProperty( propertyName );

        for ( Iterator it = property.getColumnIterator(); it.hasNext(); )
        {
            Column col = ( Column ) it.next();
            columns.add( col.getName() );
        }
    }
    return ( String[] ) columns.toArray( new String[columns.size()] );
}
项目:Portofino    文件:HibernateConfig.java   
protected void setPKColumnGenerator(Mappings mappings, RootClass clazz, Table tab, com.manydesigns.portofino.model.database.Column column, SimpleValue id, Generator generator) {
    if (column.isAutoincrement()) {
        manageIdentityGenerator(mappings, tab, id);
    } else if (generator != null) {
        if (generator instanceof SequenceGenerator) {
            manageSequenceGenerator(mappings, tab, id, (SequenceGenerator) generator);
        } else if (generator instanceof
                            com.manydesigns.portofino.model.database.TableGenerator) {
            manageTableGenerator(mappings, tab, id,
                    (com.manydesigns.portofino.model.database.TableGenerator) generator);
        } else if (generator instanceof
                            com.manydesigns.portofino.model.database.IncrementGenerator){
            manageIncrementGenerator(mappings, tab, id, clazz.getEntityName());
        }
    }
}
项目:high-performance-java-persistence    文件:MetadataTest.java   
@Test
public void testEntityToDatabaseBindingMetadata() {
    Metadata metadata = MetadataExtractorIntegrator.INSTANCE.getMetadata();

    for ( PersistentClass persistentClass : metadata.getEntityBindings()) {
        Table table = persistentClass.getTable();
        LOGGER.info( "Entity: {} is mapped to table: {}",
                     persistentClass.getClassName(),
                     table.getName()
        );

        for(Iterator propertyIterator =
                persistentClass.getPropertyIterator(); propertyIterator.hasNext(); ) {
            Property property = (Property) propertyIterator.next();
            for(Iterator columnIterator =
                    property.getColumnIterator(); columnIterator.hasNext(); ) {
                Column column = (Column) columnIterator.next();
                LOGGER.info( "Property: {} is mapped on table column: {} of type: {}",
                             property.getName(),
                             column.getName(),
                             column.getSqlType()
                );
            }
        }
    }
}
项目:hibernate-conventions    文件:MappingConventions.java   
@SuppressWarnings("rawtypes")
private void normalizeColumns(Table table, String entityName) {

    Iterator iterator = table.getColumnIterator();
    while (iterator.hasNext()) {

        Column column = (Column) iterator.next();

        String name = strategy.columnName(column.getName());
        String sqlType = strategy.sqlType(table.getName(), column.getSqlType());
        int sqlPrecision = strategy.sqlPrecision(table.getName(), column.getSqlType(), column.getPrecision());
        int sqlScale = strategy.sqlScale(table.getName(), column.getSqlType(), column.getScale());

        column.setName(name);
        column.setSqlType(sqlType);
        column.setPrecision(sqlPrecision);
        column.setScale(sqlScale);

    }

}
项目:greenpepper3    文件:AbstractDBUnitHibernateMemoryTest.java   
@SuppressWarnings("unchecked")
protected String[] getColumnNames( Class peristentClass, String[] includedFields )
        throws MappingException
{
    Collection columns = new ArrayList();
    for ( int i = 0; i < includedFields.length; i++ )
    {
        String propertyName = includedFields[i];
        Property property = getMapping( peristentClass ).getProperty( propertyName );

        for ( Iterator it = property.getColumnIterator(); it.hasNext(); )
        {
            Column col = ( Column ) it.next();
            columns.add( col.getName() );
        }
    }
    return ( String[] ) columns.toArray( new String[columns.size()] );
}
项目:manydesigns.cn    文件:HibernateConfig.java   
protected void setPKColumnGenerator(Mappings mappings, RootClass clazz, Table tab, com.manydesigns.portofino.model.database.Column column, SimpleValue id, Generator generator) {
    if (column.isAutoincrement()) {
        manageIdentityGenerator(mappings, tab, id);
    } else if (generator != null) {
        if (generator instanceof SequenceGenerator) {
            manageSequenceGenerator(mappings, tab, id, (SequenceGenerator) generator);
        } else if (generator instanceof
                            com.manydesigns.portofino.model.database.TableGenerator) {
            manageTableGenerator(mappings, tab, id,
                    (com.manydesigns.portofino.model.database.TableGenerator) generator);
        } else if (generator instanceof
                            com.manydesigns.portofino.model.database.IncrementGenerator){
            manageIncrementGenerator(mappings, tab, id, clazz.getEntityName());
        }
    }
}
项目:ODataSync    文件:ForeignKeyMetadata.java   
public boolean matches(ForeignKey fk) {
    if (refTable.equalsIgnoreCase(fk.getReferencedTable().getName())) {
        if (fk.getColumnSpan() == references.size()) {
            List fkRefs;
            if (fk.isReferenceToPrimaryKey()) {
                fkRefs = fk.getReferencedTable().getPrimaryKey().getColumns();
            } else {
                fkRefs = fk.getReferencedColumns();
            }

            for (int i = 0; i < fk.getColumnSpan(); i++) {
                Column column = fk.getColumn(i);
                Column ref = (Column)fkRefs.get(i);
                if (!hasReference(column, ref)) {
                    return false;
                }
            }

            return false;
        }
    }

    return false;
}
项目:debop4j    文件:DatastoreProviderGeneratingSchema.java   
@Override
public void start(Configuration configuration, SessionFactoryImplementor sessionFactoryImplementor) {
    Iterator<Table> tables = configuration.getTableMappings();
    while (tables.hasNext()) {
        Table table = tables.next();
        if (table.isPhysicalTable()) {
            String tableName = table.getQuotedName();
            // do something with table
            Iterator<Column> columns = (Iterator<Column>) table.getColumnIterator();
            while (columns.hasNext()) {
                Column column = columns.next();
                String columnName = column.getCanonicalName();
                // do something with column
            }
            //TODO handle unique constraints?
        }
    }
    throw new RuntimeException("STARTED!");
}
项目:Equella    文件:SQLServerDialect.java   
@Override
public String getModifyColumnSql(Mapping mapping, Column column, boolean changeNotNull, boolean changeType)
{
    String columnName = column.getQuotedName(this);
    String nullStr = column.isNullable() ? " NULL" : " NOT NULL";
    String typeStr = ' ' + column.getSqlType(this, mapping);
    return "ALTER COLUMN " + columnName + typeStr + nullStr;
}
项目:Equella    文件:SQLServerDialect.java   
@Override
public String getAddNotNullSql(Mapping mapping, Column column)
{
    String columnName = column.getQuotedName(this);

    String typeStr = ' ' + column.getSqlType(this, mapping);
    return "ALTER COLUMN " + columnName + typeStr + " NOT NULL";
}
项目:Equella    文件:SQLServerDialect.java   
@Override
public String getDropColumnSql(String table, Column column)
{
    String dropSQL = dropConstraintsSQL.replaceAll("\\$table", Matcher.quoteReplacement(table));
    dropSQL = dropSQL.replaceAll("\\$column", Matcher.quoteReplacement(column.getName()));
    return dropSQL + "\nalter table " + table + " drop column " + column.getQuotedName(this);
}
项目:Equella    文件:HibernateMigrationHelper.java   
public List<String> getAddColumnsSQL(String tableName, String... columnNames)
{
    List<String> sqlStrings = new ArrayList<String>();

    Table table = findTable(tableName);
    for( String columnName : columnNames )
    {
        Column column = table.getColumn(new Column(columnName));

        StringBuffer alter = new StringBuffer("alter table ")
            .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema)).append(' ')
            .append(dialect.getAddColumnString());
        alter.append(' ').append(column.getQuotedName(dialect)).append(' ')
            .append(column.getSqlType(dialect, mapping));

        boolean useUniqueConstraint = extDialect.supportsModifyWithConstraints() && column.isUnique()
            && dialect.supportsUnique() && (!column.isNullable() || dialect.supportsNotNullUnique());
        if( useUniqueConstraint )
        {
            alter.append(" unique");
        }
        if( column.hasCheckConstraint() && dialect.supportsColumnCheck() )
        {
            alter.append(" check(").append(column.getCheckConstraint()).append(")");
        }

        String columnComment = column.getComment();
        if( columnComment != null )
        {
            alter.append(dialect.getColumnComment(columnComment));
        }
        sqlStrings.add(alter.toString());
    }
    return sqlStrings;
}
项目:Equella    文件:HibernateMigrationHelper.java   
public List<String> getAddIndexesForColumns(String tableName, String... columnNames)
{
    Set<Column> colSet = new HashSet<Column>();
    for( String columnName : columnNames )
    {
        colSet.add(new Column(columnName));
    }
    List<String> sqlStrings = new ArrayList<String>();

    Table table = findTable(tableName);
    addIndexSQL(sqlStrings, table, colSet);
    return sqlStrings;
}
项目:Equella    文件:HibernateMigrationHelper.java   
public String getAddNamedIndex(String tableName, String indexName, String... columnNames)
{
    Index index = new Index();
    index.setName(indexName);
    index.setTable(findTable(tableName));
    for( String columnName : columnNames )
    {
        index.addColumn(new Column(columnName));
    }
    return index.sqlCreateString(dialect, mapping, defaultCatalog, defaultSchema);
}
项目:Equella    文件:HibernateMigrationHelper.java   
public List<String> getRenameColumnSQL(String tableName, String columnName, String newColumnName)
{
    List<String> sqlStrings = new ArrayList<String>();

    Table table = findTable(tableName);

    Column column = table.getColumn(new Column(columnName));
    String alter = null;
    alter = extDialect.getRenameColumnSql(table.getQualifiedName(dialect, defaultCatalog, defaultSchema), column,
        newColumnName);
    sqlStrings.add(alter);

    return sqlStrings;
}
项目:Equella    文件:HibernateMigrationHelper.java   
public List<String> getAddNotNullSQLIfRequired(Session session, String tableName, String... columns)
{
    final Table table = findTable(tableName);

    final List<String> sqlStrings = new ArrayList<String>();
    final Set<String> colset = new HashSet<String>(Arrays.asList(columns));
    session.doWork(new Work()
    {
        @Override
        public void execute(Connection connection) throws SQLException
        {
            ResultSet colresult = connection.getMetaData().getColumns(getDefaultCatalog(),
                extDialect.getNameForMetadataQuery(getDefaultSchema(), false),
                extDialect.getNameForMetadataQuery(table.getName(), table.isQuoted()), "%");
            try
            {
                while( colresult.next() )
                {
                    String columnName = colresult.getString("COLUMN_NAME").toLowerCase();
                    if( colset.contains(columnName)
                        && "yes".equals(colresult.getString("IS_NULLABLE").toLowerCase()) )
                    {
                        Column column = table.getColumn(new Column(columnName));

                        StringBuffer alter = new StringBuffer("alter table ")
                            .append(table.getQualifiedName(dialect, defaultCatalog, defaultSchema)).append(' ')
                            .append(extDialect.getAddNotNullSql(mapping, column));
                        sqlStrings.add(alter.toString());
                    }
                }
            }
            finally
            {
                colresult.close();
            }
        }
    });
    return sqlStrings;
}
项目:lams    文件:HbmBinder.java   
private static void bindIndex(Attribute indexAttribute, Table table, Column column, Mappings mappings) {
    if ( indexAttribute != null && table != null ) {
        StringTokenizer tokens = new StringTokenizer( indexAttribute.getValue(), ", " );
        while ( tokens.hasMoreTokens() ) {
            table.getOrCreateIndex( tokens.nextToken() ).addColumn( column );
        }
    }
}
项目:lams    文件:HbmBinder.java   
private static void bindUniqueKey(Attribute uniqueKeyAttribute, Table table, Column column, Mappings mappings) {
    if ( uniqueKeyAttribute != null && table != null ) {
        StringTokenizer tokens = new StringTokenizer( uniqueKeyAttribute.getValue(), ", " );
        while ( tokens.hasMoreTokens() ) {
            table.getOrCreateUniqueKey( tokens.nextToken() ).addColumn( column );
        }
    }
}
项目:lams    文件:HbmBinder.java   
public static void bindColumn(Element node, Column column, boolean isNullable) throws MappingException {
    Attribute lengthNode = node.attribute( "length" );
    if ( lengthNode != null ) column.setLength( Integer.parseInt( lengthNode.getValue() ) );
    Attribute scalNode = node.attribute( "scale" );
    if ( scalNode != null ) column.setScale( Integer.parseInt( scalNode.getValue() ) );
    Attribute precNode = node.attribute( "precision" );
    if ( precNode != null ) column.setPrecision( Integer.parseInt( precNode.getValue() ) );

    Attribute nullNode = node.attribute( "not-null" );
    column.setNullable( nullNode == null ? isNullable : nullNode.getValue().equals( "false" ) );

    Attribute unqNode = node.attribute( "unique" );
    if ( unqNode != null ) column.setUnique( unqNode.getValue().equals( "true" ) );

    column.setCheckConstraint( node.attributeValue( "check" ) );
    column.setDefaultValue( node.attributeValue( "default" ) );

    Attribute typeNode = node.attribute( "sql-type" );
    if ( typeNode != null ) column.setSqlType( typeNode.getValue() );

    String customWrite = node.attributeValue( "write" );
    if(customWrite != null && !customWrite.matches("[^?]*\\?[^?]*")) {
        throw new MappingException("write expression must contain exactly one value placeholder ('?') character");
    }
    column.setCustomWrite( customWrite );
    column.setCustomRead( node.attributeValue( "read" ) );

    Element comment = node.element("comment");
    if (comment!=null) column.setComment( comment.getTextTrim() );

}