Package org.hivedb.meta.persistence

Source Code of org.hivedb.meta.persistence.HiveBasicDataSource

package org.hivedb.meta.persistence;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.hivedb.util.HiveUtils;

import javax.sql.DataSource;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.SQLException;

public class HiveBasicDataSource implements DataSource, Cloneable {
  private Log log = LogFactory.getLog(HiveBasicDataSource.class);
  private ComboPooledDataSource comboPooledDataSource;

  public HiveBasicDataSource() {
    comboPooledDataSource = new ComboPooledDataSource();
  }

  public void close() {
    comboPooledDataSource.close();
  }

  public HiveBasicDataSource(String hiveUri) {
    this();
    comboPooledDataSource.setJdbcUrl(hiveUri);
    log.debug(String.format("HiveBasicDataSource created: %s", comboPooledDataSource.toString()));
  }

  public String getUrl() { //publicize for testing
    return comboPooledDataSource.getJdbcUrl();
  }

  public void setUrl(String url) {
    comboPooledDataSource.setJdbcUrl(url);
  }

  @Override
  public HiveBasicDataSource clone() throws CloneNotSupportedException {
    HiveBasicDataSource clone = new HiveBasicDataSource();
    clone.setMaxActive(this.getMaxActive());
    clone.setPassword(this.getPassword());
    clone.setUrl(this.getUrl());
    clone.setUsername(this.getUsername());
    clone.setValidationQuery(this.getValidationQuery());
    return clone;
  }

  @Override
  public int hashCode() {
    return HiveUtils.makeHashCode(
        this.getMaxActive(),
        this.getPassword(),
        this.getUrl(),
        this.getUsername(),
        this.getValidationQuery()
    );
  }

  public Connection getConnection() throws SQLException {
    Connection connection = comboPooledDataSource.getConnection();
    log.debug("Loaned connection, current active connections: " + this.getNumActive());
    return connection;
  }

  public Connection getConnection(String username, String password)
      throws SQLException {
    Connection connection = comboPooledDataSource.getConnection(username, password);
    log.debug("Loaned connection, current active connections: " + this.getNumActive());
    return connection;
  }

  public PrintWriter getLogWriter() throws SQLException {
    return comboPooledDataSource.getLogWriter();
  }

  public int getLoginTimeout() throws SQLException {
    return comboPooledDataSource.getLoginTimeout();
  }

  public void setLogWriter(PrintWriter out) throws SQLException {
    comboPooledDataSource.setLogWriter(out);
  }

  public void setLoginTimeout(int seconds) throws SQLException {
    comboPooledDataSource.setLoginTimeout(seconds);
  }

  public int getMaxActive() {
    return comboPooledDataSource.getMaxPoolSize();
  }

  public void setMaxActive(int maxActive) {
    comboPooledDataSource.setMaxPoolSize(maxActive);
  }

  private int getNumActive() throws SQLException {
    return comboPooledDataSource.getNumBusyConnections();
  }

  public String getUsername() {
    return comboPooledDataSource.getUser();
  }

  public void setUsername(String username) {
    comboPooledDataSource.setUser(username);
  }

  public String getPassword() {
    return comboPooledDataSource.getPassword();
  }

  public void setPassword(String password) {
    comboPooledDataSource.setPassword(password);
  }

  public String getValidationQuery() {
    return comboPooledDataSource.getPreferredTestQuery();
  }

  public void setValidationQuery(String validationQuery) {
    comboPooledDataSource.setPreferredTestQuery(validationQuery);
  }

  public <T> T unwrap(Class<T> iface) throws SQLException {
    throw new UnsupportedOperationException();
  }

  public boolean isWrapperFor(Class<?> iface) {
    return false;
  }
}
TOP

Related Classes of org.hivedb.meta.persistence.HiveBasicDataSource

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.