private static void feedDriverMavenKey( FileSystem fileSystem, DatabaseClient.Builder builder, String propertyValue) { String[] fields = StringUtils.split(propertyValue, ':'); Preconditions.checkArgument( fields.length == 3, "Format is groupId:artifactId:version. Please check the property sonar.jdbc.driverMavenKey: " + propertyValue); MavenLocation location = MavenLocation.create(fields[0], fields[1], fields[2]); File file = fileSystem.locate(location); Preconditions.checkState(file.exists(), "Driver file does not exist: " + location); builder.setDriverFile(file); }
@VisibleForTesting static DatabaseClient create(Configuration config, FileSystem fileSystem) { String url = config.getString("sonar.jdbc.url"); DatabaseClient.Builder builder = newBuilderForUrl(url); String s = config.getString("sonar.jdbc.schema"); if (!isEmpty(s)) { builder.setSchema(s); } s = config.getString("sonar.jdbc.username"); if (!isEmpty(s)) { builder.setLogin(s); } s = config.getString("sonar.jdbc.password"); if (!isEmpty(s)) { builder.setPassword(s); } s = config.getString("sonar.jdbc.rootUrl"); if (!isEmpty(s)) { builder.setRootUrl(s); } s = config.getString("sonar.jdbc.rootUsername"); if (!isEmpty(s)) { builder.setRootLogin(s); } s = config.getString("sonar.jdbc.rootPassword"); if (!isEmpty(s)) { builder.setRootPassword(s); } s = config.getString("sonar.jdbc.driverFile"); if (!isEmpty(s)) { builder.setDriverFile(new File(s)); } s = config.getString("sonar.jdbc.driverMavenKey"); if (!isEmpty(s)) { feedDriverMavenKey(fileSystem, builder, s); } String value = config.getString("orchestrator.keepDatabase", "false"); boolean keepDatabase = StringUtils.isNotBlank(value) ? Boolean.valueOf(value) : false; if (keepDatabase) { builder.setDropAndCreate(false); } return builder.build(); }