Example usage for org.springframework.jdbc.core.metadata TableMetaDataProvider initializeWithTableColumnMetaData

List of usage examples for org.springframework.jdbc.core.metadata TableMetaDataProvider initializeWithTableColumnMetaData

Introduction

In this page you can find the example usage for org.springframework.jdbc.core.metadata TableMetaDataProvider initializeWithTableColumnMetaData.

Prototype

void initializeWithTableColumnMetaData(DatabaseMetaData databaseMetaData, @Nullable String catalogName,
        @Nullable String schemaName, @Nullable String tableName) throws SQLException;

Source Link

Document

Initialize using provided database meta-data, table and column information.

Usage

From source file:org.springframework.jdbc.core.metadata.TableMetaDataProviderFactory.java

/**
 * Create a TableMetaDataProvider based on the database metadata.
 * @param dataSource used to retrieve metadata
 * @param context the class that holds configuration and metadata
 * @return instance of the TableMetaDataProvider implementation to be used
 *//*w w w  .  j a  v  a2  s  . c  om*/
public static TableMetaDataProvider createMetaDataProvider(DataSource dataSource,
        TableMetaDataContext context) {
    try {
        TableMetaDataProvider result = (TableMetaDataProvider) JdbcUtils.extractDatabaseMetaData(dataSource,
                databaseMetaData -> {
                    String databaseProductName = JdbcUtils
                            .commonDatabaseName(databaseMetaData.getDatabaseProductName());
                    boolean accessTableColumnMetaData = context.isAccessTableColumnMetaData();
                    TableMetaDataProvider provider;
                    if ("Oracle".equals(databaseProductName)) {
                        provider = new OracleTableMetaDataProvider(databaseMetaData,
                                context.isOverrideIncludeSynonymsDefault());
                    } else if ("HSQL Database Engine".equals(databaseProductName)) {
                        provider = new HsqlTableMetaDataProvider(databaseMetaData);
                    } else if ("PostgreSQL".equals(databaseProductName)) {
                        provider = new PostgresTableMetaDataProvider(databaseMetaData);
                    } else if ("Apache Derby".equals(databaseProductName)) {
                        provider = new DerbyTableMetaDataProvider(databaseMetaData);
                    } else {
                        provider = new GenericTableMetaDataProvider(databaseMetaData);
                    }
                    if (logger.isDebugEnabled()) {
                        logger.debug("Using " + provider.getClass().getSimpleName());
                    }
                    provider.initializeWithMetaData(databaseMetaData);
                    if (accessTableColumnMetaData) {
                        provider.initializeWithTableColumnMetaData(databaseMetaData, context.getCatalogName(),
                                context.getSchemaName(), context.getTableName());
                    }
                    return provider;
                });
        return result;
    } catch (MetaDataAccessException ex) {
        throw new DataAccessResourceFailureException("Error retrieving database metadata", ex);
    }
}