Package com.xiaoleilu.hutool.db.ds

Source Code of com.xiaoleilu.hutool.db.ds.SimpleDataSource

package com.xiaoleilu.hutool.db.ds;

import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.SQLFeatureNotSupportedException;
import java.util.logging.Logger;

import javax.sql.DataSource;

import com.xiaoleilu.hutool.Setting;
import com.xiaoleilu.hutool.db.DbUtil;
import com.xiaoleilu.hutool.exceptions.DbRuntimeException;

/***
* 简易数据源,没有使用连接池,仅供测试或打开关闭连接非常少的场合使用!
* @author loolly
*
*/
public class SimpleDataSource implements DataSource, Cloneable{
 
  /** 默认的数据库连接配置文件路径 */
  public final static String DEFAULT_DB_CONFIG_PATH = "config/db.setting";
 
  //-------------------------------------------------------------------- Fields start
  private String driver;    //数据库驱动
  private String url;      //jdbc url
  private String user;      //用户名
  private String pass;      //密码
  //-------------------------------------------------------------------- Fields end
 
  //-------------------------------------------------------------------- Constructor start
  /**
   * 构造
   * @param group 数据库配置文件中的分组
   */
  public SimpleDataSource(String group) {
    this(null, group);
  }
 
  /**
   * 构造
   * @param setting 数据库配置
   * @param group 数据库配置文件中的分组
   */
  public SimpleDataSource(Setting setting, String group) {
    if(null == setting) {
      setting = new Setting(DEFAULT_DB_CONFIG_PATH);
    }
    init(
        setting.getString("url", group),
        setting.getString("user", group),
        setting.getString("pass", group)
    );
  }
 
  /**
   * 构造
   * @param url jdbc url
   * @param user 用户名
   * @param pass 密码
   */
  public SimpleDataSource(String url, String user, String pass) {
    init(url, user, pass);
  }
  //-------------------------------------------------------------------- Constructor end
 
  /**
   * 初始化
   * @param url jdbc url
   * @param user 用户名
   * @param pass 密码
   */
  public void init(String url, String user, String pass) {
    this.url = url;
    this.user = user;
    this.pass = pass;
    this.driver = DbUtil.identifyDriver(url);
    try {
      Class.forName(this.driver);
    } catch (ClassNotFoundException e) {
      throw new DbRuntimeException(e, "Get jdbc driver from [{}] error!", url);
    }
  }

  //-------------------------------------------------------------------- Getters and Setters start
  public String getDriver() {
    return driver;
  }
  public void setDriver(String driver) {
    this.driver = driver;
  }
  public String getUrl() {
    return url;
  }
  public void setUrl(String url) {
    this.url = url;
  }
  public String getUser() {
    return user;
  }
  public void setUser(String user) {
    this.user = user;
  }
  public String getPass() {
    return pass;
  }
  public void setPass(String pass) {
    this.pass = pass;
  }
  //-------------------------------------------------------------------- Getters and Setters end

  @Override
  public PrintWriter getLogWriter() throws SQLException {
    return DriverManager.getLogWriter();
  }

  @Override
  public void setLogWriter(PrintWriter out) throws SQLException {
    DriverManager.setLogWriter(out);
  }

  @Override
  public void setLoginTimeout(int seconds) throws SQLException {
    DriverManager.setLoginTimeout(seconds);
  }

  @Override
  public int getLoginTimeout() throws SQLException {
    return DriverManager.getLoginTimeout();
  }

  @Override
  public <T> T unwrap(Class<T> iface) throws SQLException {
    throw new SQLException("Simple DataSource can't support unwrap method!");
  }

  @Override
  public boolean isWrapperFor(Class<?> iface) throws SQLException {
    throw new SQLException("Simple DataSource can't support isWrapperFor method!");
  }

  @Override
  public Connection getConnection() throws SQLException {
    return DriverManager.getConnection(this.url, this.user, this.pass);
  }

  @Override
  public Connection getConnection(String username, String password) throws SQLException {
    return DriverManager.getConnection(this.url, username, password);
  }

  /**
   * Support from JDK7
   */
  @Override
  public Logger getParentLogger() throws SQLFeatureNotSupportedException {
    throw new SQLFeatureNotSupportedException("Simple DataSource can't support getParentLogger method!");
  }
}
TOP

Related Classes of com.xiaoleilu.hutool.db.ds.SimpleDataSource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.