java/jdbc-loopback-driver/src/info/globalcode/jdbc/loopback/Driver.java
author František Kučera <franta-hg@frantovo.cz>
Tue, 26 Feb 2019 18:19:49 +0100
branchv_0
changeset 236 a3ec71fa8e17
parent 235 8ce612cca4d8
permissions -rw-r--r--
Avoid reusing/rewriting the DB connection properties.
There was weird random errors while testing connection to multiple DB in parallel when one of them was meta connection to same DB connection.
Two kinds of exception: 1) missing password 2) „Passing DB password as CLI parameter is insecure!“
franta-hg@171
     1
/**
franta-hg@171
     2
 * SQL-DK
franta-hg@171
     3
 * Copyright © 2014 František Kučera (frantovo.cz)
franta-hg@171
     4
 *
franta-hg@171
     5
 * This program is free software: you can redistribute it and/or modify
franta-hg@171
     6
 * it under the terms of the GNU General Public License as published by
franta-hg@171
     7
 * the Free Software Foundation, either version 3 of the License, or
franta-hg@171
     8
 * (at your option) any later version.
franta-hg@171
     9
 *
franta-hg@171
    10
 * This program is distributed in the hope that it will be useful,
franta-hg@171
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
franta-hg@171
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
franta-hg@171
    13
 * GNU General Public License for more details.
franta-hg@171
    14
 *
franta-hg@171
    15
 * You should have received a copy of the GNU General Public License
franta-hg@171
    16
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
franta-hg@171
    17
 */
franta-hg@171
    18
package info.globalcode.jdbc.loopback;
franta-hg@171
    19
franta-hg@171
    20
import java.sql.DriverManager;
franta-hg@171
    21
import java.sql.DriverPropertyInfo;
franta-hg@171
    22
import java.sql.SQLException;
franta-hg@171
    23
import java.sql.SQLFeatureNotSupportedException;
franta-hg@171
    24
import java.util.Properties;
franta-hg@171
    25
import java.util.logging.Level;
franta-hg@171
    26
import java.util.logging.Logger;
franta-hg@171
    27
franta-hg@171
    28
/**
franta-hg@171
    29
 *
franta-hg@171
    30
 * @author Ing. František Kučera (frantovo.cz)
franta-hg@171
    31
 */
franta-hg@171
    32
public class Driver implements java.sql.Driver {
franta-hg@171
    33
franta-hg@171
    34
	private static final Logger log = Logger.getLogger(Driver.class.getName());
franta-hg@171
    35
franta-hg@171
    36
	static {
franta-hg@171
    37
		try {
franta-hg@171
    38
			DriverManager.registerDriver(new Driver());
franta-hg@171
    39
		} catch (SQLException e) {
franta-hg@171
    40
			log.log(Level.SEVERE, "Unable to register JDBC driver", e);
franta-hg@171
    41
		}
franta-hg@171
    42
	}
franta-hg@171
    43
franta-hg@171
    44
	@Override
franta-hg@171
    45
	public Connection connect(String url, Properties info) throws SQLException {
franta-hg@177
    46
		if (acceptsURL(url)) {
franta-hg@177
    47
			return new Connection(url, info);
franta-hg@177
    48
		} else {
franta-hg@235
    49
			// The driver should return "null" if it realizes it is the wrong kind of driver to connect to the given URL.
franta-hg@235
    50
			return null;
franta-hg@177
    51
		}
franta-hg@171
    52
	}
franta-hg@171
    53
franta-hg@171
    54
	@Override
franta-hg@171
    55
	public boolean acceptsURL(String url) throws SQLException {
franta-hg@171
    56
		return url != null && url.startsWith("jdbc:loopback://");
franta-hg@171
    57
	}
franta-hg@171
    58
franta-hg@171
    59
	@Override
franta-hg@171
    60
	public DriverPropertyInfo[] getPropertyInfo(String url, Properties info) throws SQLException {
franta-hg@171
    61
		return new DriverPropertyInfo[0];
franta-hg@171
    62
	}
franta-hg@171
    63
franta-hg@171
    64
	@Override
franta-hg@171
    65
	public int getMajorVersion() {
franta-hg@171
    66
		return 0;
franta-hg@171
    67
	}
franta-hg@171
    68
franta-hg@171
    69
	@Override
franta-hg@171
    70
	public int getMinorVersion() {
franta-hg@171
    71
		return 1;
franta-hg@171
    72
	}
franta-hg@171
    73
franta-hg@171
    74
	@Override
franta-hg@171
    75
	public boolean jdbcCompliant() {
franta-hg@171
    76
		return false;
franta-hg@171
    77
	}
franta-hg@171
    78
franta-hg@171
    79
	@Override
franta-hg@171
    80
	public Logger getParentLogger() throws SQLFeatureNotSupportedException {
franta-hg@171
    81
		throw new SQLFeatureNotSupportedException("Not supported yet.");
franta-hg@171
    82
	}
franta-hg@171
    83
franta-hg@171
    84
}