org.sonarsource.sonarqube.upgrade.MssqlConfig.java Source code

Java tutorial

Introduction

Here is the source code for org.sonarsource.sonarqube.upgrade.MssqlConfig.java

Source

/*
 * SonarQube
 * Copyright (C) 2009-2017 SonarSource SA
 * mailto:info AT sonarsource DOT com
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 3 of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 */
package org.sonarsource.sonarqube.upgrade;

import com.sonar.orchestrator.config.Configuration;
import com.sonar.orchestrator.version.Version;
import org.apache.commons.lang.StringUtils;

import static java.util.Objects.requireNonNull;

public class MssqlConfig {

    /**
     * Versions prior to 5.2 support only jTDS driver. Versions greater than or equal to 5.2
     * support only MS driver. The problem is that the test is configured with only
     * the MS URL, so it must be changed at runtime for versions < 5.2.
     */
    public static String fixUrl(Configuration conf, Version sqVersion) {
        String jdbcUrl = requireNonNull(conf.getString("sonar.jdbc.url"), "No JDBC url configured");
        if (jdbcUrl.startsWith("jdbc:sqlserver:") && !sqVersion.isGreaterThanOrEquals("5.2")) {
            // Job is configured with the new Microsoft driver, which is not supported by old versions of SQ
            String host = StringUtils.substringBetween(jdbcUrl, "jdbc:sqlserver://", ";databaseName=");
            String db = StringUtils.substringAfter(jdbcUrl, "databaseName=");
            jdbcUrl = "jdbc:jtds:sqlserver://" + host + "/" + db;
            System.out.println("Replaced JDBC url to: " + jdbcUrl);
            return jdbcUrl;
        }
        return jdbcUrl;
    }
}