final Config config = new Config(map); isNoFooter = config.getBooleanValue(NO_FOOTER); isNoHeader = config.getBooleanValue(NO_HEADER); isShowDatabaseInfo = config.getBooleanValue(SHOW_DATABASE_INFO); isShowJdbcDriverInfo = config.getBooleanValue(SHOW_JDBC_DRIVER_INFO); isNoSchemaCrawlerInfo = config.getBooleanValue(NO_SCHEMACRAWLER_INFO); isAppendOutput = config.getBooleanValue(APPEND_OUTPUT); isShowUnqualifiedNames = config.getBooleanValue(SHOW_UNQUALIFIED_NAMES); .getBooleanValue(SORT_ALPHABETICALLY_TABLES, isAlphabeticalSortForTables); isAlphabeticalSortForTableColumns = config .getBooleanValue(SORT_ALPHABETICALLY_TABLE_COLUMNS, isAlphabeticalSortForTableColumns); .getBooleanValue(SORT_ALPHABETICALLY_ROUTINES, isAlphabeticalSortForRoutines); isAlphabeticalSortForRoutineColumns = config .getBooleanValue(SORT_ALPHABETICALLY_ROUTINE_COLUMNS, isAlphabeticalSortForRoutineColumns); isNoSchemaColors = config.getBooleanValue(NO_SCHEMA_COLORS); .getEnumValue(IDENTIFIER_QUOTING_STRATEGY, IdentifierQuotingStrategy.quote_if_special_characters_and_reserved_words);
protected final void normalizeOptionName(final String primaryOptionName, final String... alternateOptionName) { requireNonNull(primaryOptionName, "No option name provided"); final List<String> optionNames = new ArrayList<>(); optionNames.add(primaryOptionName); if (alternateOptionName != null) { optionNames.addAll(Arrays.asList(alternateOptionName)); } Collections.reverse(optionNames); String value = null; boolean foundValue = false; for (final String optionName: optionNames) { if (config.hasValue(optionName)) { value = config.get(optionName); foundValue = true; } config.remove(optionName); } if (foundValue) { config.put(primaryOptionName, value); } }
/** * Copies config into a map. * * @param config * Config to copy */ public Config(final Map<String, String> config) { this(); if (config != null) { putAll(config); } }
private String getUser() { final String user = config.getStringValue(USER, null); config.remove(USER); return user; }
@Override public Config toConfig() { final Config config = new Config(); config.setStringValue(SC_INPUT_ENCODING, inputEncodingCharset.name()); config.setStringValue(SC_OUTPUT_ENCODING, outputEncodingCharset.name()); return config; }
if (config.hasValue("title")) optionsBuilder.title(config.getStringValue("title", "")); consumeOption("title"); if (config.hasValue("infolevel")) final InfoLevel infoLevel = config.getEnumValue("infolevel", InfoLevel.standard); schemaInfoLevelBuilder.withInfoLevel(infoLevel); if (config.hasValue("schemas")) .getInclusionRule("schemas"); logOverride("schemas", schemaInclusionRule); optionsBuilder.includeSchemas(schemaInclusionRule); if (config.hasValue("tabletypes")) final String tabletypes = config.getStringValue("tabletypes", DEFAULT_TABLE_TYPES); if (!isBlank(tabletypes)) if (config.hasValue("tables")) .getInclusionRule("tables"); logOverride("tables", tableInclusionRule); optionsBuilder.includeTables(tableInclusionRule); consumeOption("tables");
@Override public Config getAdditionalConfiguration() { if (additionalConfiguration == null) { return new Config(); } else { return additionalConfiguration; } }
@Override public ConnectionOptions createConnectionOptions() throws SchemaCrawlerException { requireNonNull(databaseFile, "Database file not loaded"); final Config config = new Config(); config.put("server", "sqlite"); config.put("database", databaseFile.toString()); try { final ConnectionOptions connectionOptions = new SQLiteDatabaseConnector() .newDatabaseConnectionOptions(new SingleUseUserCredentials(), config); return connectionOptions; } catch (final IOException e) { throw new SchemaCrawlerException("Cannot read datad database file, " + databaseFile, e); } }
@Override public void loadConfig() throws SchemaCrawlerException { super.loadConfig(); if (config.hasValue(HOST)) { config.put(HOST, config.getStringValue(HOST, "")); } if (config.hasValue(PORT)) { config.put(PORT, String.valueOf(config.getIntegerValue(PORT, 0))); } if (config.hasValue(DATABASE)) { config.put(DATABASE, config.getStringValue(DATABASE, "")); } if (config.hasValue(URLX)) { config.put(URLX, config.getStringValue(URLX, "")); } }
if (config == null) configProperties = new Config(); configProperties = new Config(config); .getEnumValue(SC_RETRIEVAL_TABLES, tableRetrievalStrategy); tableColumnRetrievalStrategy = configProperties .getEnumValue(SC_RETRIEVAL_TABLE_COLUMNS, tableColumnRetrievalStrategy); pkRetrievalStrategy = configProperties .getEnumValue(SC_RETRIEVAL_PRIMARY_KEYS, pkRetrievalStrategy); indexRetrievalStrategy = configProperties .getEnumValue(SC_RETRIEVAL_INDEXES, indexRetrievalStrategy); fkRetrievalStrategy = configProperties .getEnumValue(SC_RETRIEVAL_FOREIGN_KEYS, fkRetrievalStrategy); procedureRetrievalStrategy = configProperties .getEnumValue(SC_RETRIEVAL_PROCEDURES, procedureRetrievalStrategy); procedureColumnRetrievalStrategy = configProperties .getEnumValue(SC_RETRIEVAL_PROCEDURE_COLUMNS, procedureColumnRetrievalStrategy); functionRetrievalStrategy = configProperties .getEnumValue(SC_RETRIEVAL_FUNCTIONS, functionRetrievalStrategy); functionColumnRetrievalStrategy = configProperties .getEnumValue(SC_RETRIEVAL_FUNCTION_COLUMNS, functionColumnRetrievalStrategy);
@Override public OperationOptionsBuilder fromConfig(final Config map) { if (map == null) { return this; } super.fromConfig(map); final Config config = new Config(map); isShowLobs = config.getBooleanValue(SHOW_LOBS, false); return this; }
@Override public void loadConfig() throws SchemaCrawlerException { super.loadConfig(); if (config.hasValue(URL)) { config.put(URL, config.getStringValue(URL, null)); } final String connectionUrl = config.getStringValue(URL, null); if (isBlank(connectionUrl)) { throw new SchemaCrawlerCommandLineException("Please provde a database connection URL"); } }
if (config.hasValue("noinfo")) final boolean noinfo = config.getBooleanValue("noinfo", true); textOptionsBuilder.noInfo(noinfo); consumeOption("noinfo"); if (config.hasValue("noremarks")) final boolean noremarks = config.getBooleanValue("noremarks", true); textOptionsBuilder.noRemarks(noremarks); consumeOption("noremarks"); if (config.hasValue("weakassociations")) final boolean value = config.getBooleanValue("weakassociations", true); textOptionsBuilder.weakAssociations(value); consumeOption("weakassociations"); if (config.hasValue("sorttables")) final boolean value = config.getBooleanValue("sorttables", true); textOptionsBuilder.sortTables(value); consumeOption("sorttables"); if (config.hasValue("sortcolumns")) final boolean value = config.getBooleanValue("sortcolumns", true); textOptionsBuilder.sortTableColumns(value); consumeOption("sortcolumns");
private String getPassword() { final String password; if (config.hasValue(PASSWORD)) { password = config.getStringValue(PASSWORD, null); } else { password = promptForPassword(); } config.remove(PASSWORD); return password; }
@Override public DatabaseConnector getOptions() throws SchemaCrawlerException { final DatabaseConnectorRegistry registry = new DatabaseConnectorRegistry(); final String databaseSystemIdentifier = config.getStringValue(SERVER, null); if (config.hasValue(SERVER) && !registry.hasDatabaseSystemIdentifier(databaseSystemIdentifier)) { throw new SchemaCrawlerCommandLineException(String .format("Unsupported server <%s> %n" + "Please provide a database connection URL on the command-line, %n" + "and re-run SchemaCrawler without the -server argument", databaseSystemIdentifier)); } final DatabaseConnector dbConnector; if (databaseSystemIdentifier != null) { dbConnector = registry.lookupDatabaseConnector(databaseSystemIdentifier); consumeOption(SERVER); } else { final String connectionUrl = config.getStringValue(URL, null); dbConnector = registry.lookupDatabaseConnectorFromUrl(connectionUrl); // NOTE: Do not consume URL option, since it is needed later } return dbConnector; }
@Override public Config toConfig() { final Config config = new Config(); config.setBooleanValue(NO_FOOTER, isNoFooter); config.setBooleanValue(NO_HEADER, isNoHeader); config.setBooleanValue(NO_SCHEMACRAWLER_INFO, isNoSchemaCrawlerInfo); config.setBooleanValue(SHOW_DATABASE_INFO, isShowDatabaseInfo); config.setBooleanValue(SHOW_JDBC_DRIVER_INFO, isShowJdbcDriverInfo); config.setBooleanValue(APPEND_OUTPUT, isAppendOutput); config.setBooleanValue(SHOW_UNQUALIFIED_NAMES, isShowUnqualifiedNames); config.setBooleanValue(SORT_ALPHABETICALLY_TABLES, isAlphabeticalSortForTables); config.setBooleanValue(SORT_ALPHABETICALLY_TABLE_COLUMNS, isAlphabeticalSortForTableColumns); config.setBooleanValue(SORT_ALPHABETICALLY_ROUTINES, isAlphabeticalSortForRoutines); config.setBooleanValue(SORT_ALPHABETICALLY_ROUTINE_COLUMNS, isAlphabeticalSortForRoutineColumns); config.setBooleanValue(NO_SCHEMA_COLORS, isNoSchemaColors); config.setEnumValue(IDENTIFIER_QUOTING_STRATEGY, identifierQuotingStrategy); return config; }
@Override public OutputOptionsBuilder fromConfig(final Config config) { final Config configProperties; if (config == null) { configProperties = new Config(); } else { configProperties = config; } this .withInputEncoding(configProperties.getStringValue(SC_INPUT_ENCODING, UTF_8.name())) .withOutputEncoding(configProperties.getStringValue(SC_OUTPUT_ENCODING, UTF_8.name())); return this; }