예제 #1
0
  @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();
  }
예제 #2
0
 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);
 }
예제 #3
0
 private static DatabaseClient.Builder newBuilderForUrl(String url) {
   DatabaseClient.Builder builder;
   if (isEmpty(url) || url.startsWith("jdbc:h2:")) {
     builder = H2.builder();
   } else if (url.startsWith("jdbc:oracle:")) {
     builder = Oracle.builder();
   } else if (url.startsWith("jdbc:mysql:")) {
     builder = MySql.builder();
   } else if (url.startsWith("jdbc:jtds:")) {
     builder = MsSql.jtdsBuilder();
   } else if (url.startsWith("jdbc:sqlserver:")) {
     builder = MsSql.msBuilder();
   } else if (url.startsWith("jdbc:postgresql:")) {
     builder = PostgreSql.builder();
   } else {
     throw new IllegalArgumentException("Unsupported DB: " + url);
   }
   if (!isEmpty(url)) {
     builder.setUrl(url);
   }
   return builder;
 }