diff --git a/modules/DBDrivers/pom.xml b/modules/DBDrivers/pom.xml index a6296ac429d3ac63695b7695da53da4198a87174..166b673d38e30de42458a61dac99374f0890c77c 100644 --- a/modules/DBDrivers/pom.xml +++ b/modules/DBDrivers/pom.xml @@ -16,7 +16,7 @@ DBDrivers - + org.xerial sqlite-jdbc 3.16.1 @@ -31,6 +31,17 @@ postgresql 42.0.0.jre7 + + com.microsoft.sqlserver + mssql-jdbc + 6.1.0.jre7 + + + com.microsoft.azure + azure-keyvault + + + org.netbeans.api org-openide-util-lookup diff --git a/modules/DBDrivers/src/main/java/org/gephi/io/database/drivers/SQLServerDriver.java b/modules/DBDrivers/src/main/java/org/gephi/io/database/drivers/SQLServerDriver.java new file mode 100644 index 0000000000000000000000000000000000000000..85747c32a4e3de12548aff4221713f1468e9d699 --- /dev/null +++ b/modules/DBDrivers/src/main/java/org/gephi/io/database/drivers/SQLServerDriver.java @@ -0,0 +1,101 @@ +/* +Copyright 2008-2017 Gephi +Authors : Mathieu Bastian Eduardo Ramos +Website : http://www.gephi.org + +This file is part of Gephi. + +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + +Copyright 2017 Gephi Consortium. All rights reserved. + +The contents of this file are subject to the terms of either the GNU +General Public License Version 3 only ("GPL") or the Common +Development and Distribution License("CDDL") (collectively, the +"License"). You may not use this file except in compliance with the +License. You can obtain a copy of the License at +http://gephi.org/about/legal/license-notice/ +or /cddl-1.0.txt and /gpl-3.0.txt. See the License for the +specific language governing permissions and limitations under the +License. When distributing the software, include this License Header +Notice in each file and include the License files at +/cddl-1.0.txt and /gpl-3.0.txt. If applicable, add the following below the +License Header, with the fields enclosed by brackets [] replaced by +your own identifying information: +"Portions Copyrighted [year] [name of copyright owner]" + +If you wish your version of this file to be governed by only the CDDL +or only the GPL Version 3, indicate your decision by adding +"[Contributor] elects to include this software in this distribution +under the [CDDL or GPL Version 3] license." If you do not indicate a +single choice of license, a recipient has the option to distribute +your version of this file under either the CDDL, the GPL Version 3 or +to extend the choice of license to its licensees as provided above. +However, if you add GPL Version 3 code and therefore, elected the GPL +Version 3 license, then the option applies only if the new code is +made subject to such option by the copyright holder. + +Contributor(s): + +Portions Copyrighted 2017 Gephi Consortium. + */ +package org.gephi.io.database.drivers; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.openide.util.lookup.ServiceProvider; + +/** + * + * @author Mathieu Bastian + */ +@ServiceProvider(service = SQLDriver.class, position = 40) +public class SQLServerDriver implements SQLDriver { + + public SQLServerDriver() { + try { + Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); + } catch (ClassNotFoundException ex) { + Logger.getLogger(MySQLDriver.class.getName()).log(Level.SEVERE, null, ex); + } + } + + @Override + public Connection getConnection(String connectionUrl, String username, String passwd) throws SQLException { + //Bug #745414 + if (!connectionUrl.contains(";databaseName=")) { + String dbname = connectionUrl.substring(connectionUrl.lastIndexOf('/') + 1); + String url = connectionUrl.substring(0, connectionUrl.lastIndexOf('/')); + connectionUrl = url + ";databaseName=" + dbname; + } + + return DriverManager.getConnection(connectionUrl, username, passwd); + } + + @Override + public String getPrefix() { + return "sqlserver"; + } + + @Override + public String toString() { + return "SQL Server"; + } + + @Override + public boolean equals(Object obj) { + if (obj instanceof SQLServerDriver) { + return ((SQLServerDriver) obj).getPrefix().equals(getPrefix()); + } else { + return false; + } + } + + @Override + public int hashCode() { + return getPrefix().hashCode(); + } +}