package com.med.sql.tools; import java.util.HashSet; import java.util.List; import java.util.Set; import schemacrawler.schema.Schema; import com.med.sql.SchemaCrawlerUtils; /** * Supplies schema information for sql-tools applications based on sql-tools properties. * * @author Jane Eisenstein */ public class SqlToolsSchemas implements SqlToolsConstants { SqlToolsProperties properties = null; String[] targetSchemas = null; boolean excludeTargetSchemas = false; SqlToolsDataSource dataSource = null; Set<String> targetSchemaSet = null; List<Schema> schemas = null; boolean initialized = false; /** * Initialize from sql-tools properties. * @param props */ public SqlToolsSchemas(SqlToolsProperties props) { this.properties = props; } /** * Bypasses the need to construct a SqlToolsProperties. * @param dataSource * @param targetSchemaSet * @param excludeTargetSchemas */ public SqlToolsSchemas(SqlToolsDataSource dataSource, Set<String> targetSchemaSet, boolean excludeTargetSchemas) { this.dataSource = dataSource; this.targetSchemaSet = targetSchemaSet; this.excludeTargetSchemas = excludeTargetSchemas; initialized = true; } private void initialize() { if (!initialized && properties != null) { dataSource = new SqlToolsDataSource(properties); targetSchemas = properties.getStringArray(targetSchemas_key); targetSchemaSet = new HashSet<String>(); for (String schema : targetSchemas) { targetSchemaSet.add(schema); } excludeTargetSchemas = properties.getBoolean(excludeTargetSchemas_key); initialized = true; } } public List<Schema> getSchemas(boolean sortColumns) { if (schemas == null) { initialize(); SchemaCrawlerUtils scu = new SchemaCrawlerUtils(); schemas = scu.getSchemas( dataSource.getJdbcProperties(), dataSource.getDbms(), dataSource.getDataSource(), targetSchemaSet, excludeTargetSchemas, sortColumns, false, null); } return schemas; } public SqlToolsDataSource getDataSource() { if (dataSource == null) initialize(); return dataSource; } }