/** @param args */ public static void main(final String[] args) { LogUtils.initializeLogging(); if (args.length != 1) { LOGGER.fatal("You must specify the output directory"); return; } final String dbname = "generate_schema"; Connection connection = null; try { // generate example database final DataSource datasource = Utilities.createMemoryDataSource(dbname); connection = datasource.getConnection(); final String baseDir = "fll/resources/challenge-descriptors/"; final String challengeName = "example-database.xml"; final ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); final URL challengeUrl = classLoader.getResource(baseDir + challengeName); final InputStream stream = challengeUrl.openStream(); final Reader reader = new InputStreamReader(stream, Utilities.DEFAULT_CHARSET); final Document document = ChallengeParser.parse(reader); GenerateDB.generateDB(document, connection); SchemaAnalyzer analyzer = new SchemaAnalyzer(); final Config config = new HsqlMemConfig(); config.setAdsEnabled(false); config.setDb(dbname); config.setHighQuality(true); config.setSchema("PUBLIC"); config.setUser("SA"); config.setOutputDir(args[0]); analyzer.analyze(config); } catch (final SQLException e) { LOGGER.fatal("Error talking to the database", e); } catch (final Exception e) { LOGGER.fatal("Error creating the diagram", e); } finally { // clean up database SQLFunctions.close(connection); } }