import java.util.Properties;
import javax.sql.DataSource;
import schemacrawler.schema.Catalog;
import schemacrawler.schema.Column;
import schemacrawler.schema.Schema;
import schemacrawler.schema.Table;
import schemacrawler.schema.View;
import schemacrawler.schemacrawler.SchemaCrawlerOptions;
import schemacrawler.utility.SchemaCrawlerUtility;
import schemacrawler.utility.datasource.PropertiesDataSource;
public final class ApiExample
{
public static void main(final String[] args)
throws Exception
{
// Create a database connection
final DataSource dataSource = makeDataSource();
// Create the options
final SchemaCrawlerOptions options = new SchemaCrawlerOptions();
options.setShowStoredProcedures(false);
options.setAlphabeticalSortForTableColumns(true);
// Get the schema definition
final Catalog catalog = SchemaCrawlerUtility.getCatalog(dataSource
.getConnection(), options);
for (final Schema schema: catalog.getSchemas())
{
System.out.println(schema);
for (final Table table: schema.getTables())
{
System.out.print("o--> " + table);
if (table instanceof View)
{
System.out.println(" (VIEW)");
}
else
{
System.out.println();
}
for (final Column column: table.getColumns())
{
System.out.println(" o--> " + column + " (" + column.getType()
+ ")");
}
}
}
}
private static DataSource makeDataSource()
{
final String datasourceName = "schemacrawler";
final Properties connectionProperties = new Properties();
connectionProperties.setProperty(datasourceName + ".driver",
"org.hsqldb.jdbcDriver");
connectionProperties
.setProperty(datasourceName + ".url",
"jdbc:hsqldb:hsql://localhost:9001/schemacrawler");
connectionProperties.setProperty(datasourceName + ".user", "sa");
connectionProperties.setProperty(datasourceName + ".password", "");
return new PropertiesDataSource(connectionProperties, datasourceName);
}
}