FileDocCategorySizeDatePackage
TableMetadata.javaAPI DocHibernate 3.2.53919Mon Nov 06 07:35:20 GMT 2006org.hibernate.tool.hbm2ddl

TableMetadata

public class TableMetadata extends Object
JDBC table metadata
author
Christoph Sturm, Max Rydahl Andersen

Fields Summary
private static final Log
log
private final String
catalog
private final String
schema
private final String
name
private final Map
columns
private final Map
foreignKeys
private final Map
indexes
Constructors Summary
TableMetadata(ResultSet rs, DatabaseMetaData meta, boolean extras)


	        
		catalog = rs.getString("TABLE_CAT");
		schema = rs.getString("TABLE_SCHEM");
		name = rs.getString("TABLE_NAME");
		initColumns(meta);
		if (extras) {
			initForeignKeys(meta);
			initIndexes(meta);
		}
		String cat = catalog==null ? "" : catalog + '.";
		String schem = schema==null ? "" : schema + '.";
		log.info( "table found: " + cat + schem + name );
		log.info( "columns: " + columns.keySet() );
		if (extras) {
			log.info( "foreign keys: " + foreignKeys.keySet() );
			log.info( "indexes: " + indexes.keySet() );
		}
	
Methods Summary
public voidaddColumn(java.sql.ResultSet rs)

		String column = rs.getString("COLUMN_NAME");

		if (column==null) return;

		if ( getColumnMetadata(column) == null ) {
			ColumnMetadata info = new ColumnMetadata(rs);
			columns.put( info.getName().toLowerCase(), info );
		}
	
private voidaddForeignKey(java.sql.ResultSet rs)

		String fk = rs.getString("FK_NAME");

		if (fk == null) return;

		ForeignKeyMetadata info = getForeignKeyMetadata(fk);
		if (info == null) {
			info = new ForeignKeyMetadata(rs);
			foreignKeys.put( info.getName().toLowerCase(), info );
		}

		info.addColumn( getColumnMetadata( rs.getString("FKCOLUMN_NAME") ) );
	
private voidaddIndex(java.sql.ResultSet rs)

		String index = rs.getString("INDEX_NAME");

		if (index == null) return;

		IndexMetadata info = getIndexMetadata(index);
		if (info == null) {
			info = new IndexMetadata(rs);
			indexes.put( info.getName().toLowerCase(), info );
		}

		info.addColumn( getColumnMetadata( rs.getString("COLUMN_NAME") ) );
	
public java.lang.StringgetCatalog()

		return catalog;
	
public ColumnMetadatagetColumnMetadata(java.lang.String columnName)

		return (ColumnMetadata) columns.get( columnName.toLowerCase() );
	
public ForeignKeyMetadatagetForeignKeyMetadata(java.lang.String keyName)

		return (ForeignKeyMetadata) foreignKeys.get( keyName.toLowerCase() );
	
public IndexMetadatagetIndexMetadata(java.lang.String indexName)

		return (IndexMetadata) indexes.get( indexName.toLowerCase() );
	
public java.lang.StringgetName()

		return name;
	
public java.lang.StringgetSchema()

		return schema;
	
private voidinitColumns(java.sql.DatabaseMetaData meta)

		ResultSet rs = null;
		
		try {
			rs = meta.getColumns(catalog, schema, name, "%");
			while ( rs.next() ) addColumn(rs);
		}
		finally  {
			if (rs != null) rs.close();
		}
	
private voidinitForeignKeys(java.sql.DatabaseMetaData meta)

		ResultSet rs = null;

		try {
			rs = meta.getImportedKeys(catalog, schema, name);
			while ( rs.next() ) addForeignKey(rs);
		}
		finally {
			if (rs != null) rs.close();
		}
	
private voidinitIndexes(java.sql.DatabaseMetaData meta)

		ResultSet rs = null;

		try {
			rs = meta.getIndexInfo(catalog, schema, name, false, true);
			
			while ( rs.next() ) {
				if ( rs.getShort("TYPE") == DatabaseMetaData.tableIndexStatistic ) continue;
				addIndex(rs);
			}
		}
		finally {
			if (rs != null) rs.close();
		}
	
public java.lang.StringtoString()

		return "TableMetadata(" + name + ')";