All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tigergraph.jdbc.Driver Maven / Gradle / Ivy

package com.tigergraph.jdbc;

import com.tigergraph.jdbc.common.BaseDriver;
import com.tigergraph.jdbc.restpp.RestppDriver;
import com.tigergraph.jdbc.log.TGLoggerFactory;

import java.util.HashMap;
import java.util.Map;
import java.lang.reflect.Constructor;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class Driver extends BaseDriver {

  /** Hash map of all available drivers. */
  private final Map DRIVERS =
      new HashMap() {
        {
          put(RestppDriver.JDBC_RESTPP_PREFIX, RestppDriver.class);
        }
      };

  public Driver() throws SQLException {
    super(null);
  }

  @Override
  public Connection connect(String url, Properties info) throws SQLException {
    // Get logging level.
    Integer logLevel = Integer.valueOf(info.getProperty("debug", "2"));
    String pattern = info.getProperty("logFilePattern", "");
    TGLoggerFactory.initializeLogger(logLevel, pattern);

    return getDriver(url).connect(url, info);
  }

  /** Retrieve the corresponding driver according to url. */
  private BaseDriver getDriver(String url) throws SQLException {
    BaseDriver driver = null;

    if (null == url) {
      throw new SQLException("URL can not be NULL.");
    }

    try {
      // Check the driver prefix from the url
      if (url.startsWith(JDBC_PREFIX)) {
        String[] pieces = url.split(":");
        if (pieces.length > 3) {
          String prefix = pieces[2];

          // Search the driver hash map.
          for (String key : DRIVERS.keySet()) {
            if (prefix.matches(key)) {
              Constructor constructor = DRIVERS.get(key).getDeclaredConstructor();
              driver = (BaseDriver) constructor.newInstance();
            }
          }
        }
      }
    } catch (Exception e) {
      throw new SQLException(e);
    }

    if (null == driver) {
      throw new SQLException("Cannot find a suitable driver for url: " + url);
    }

    return driver;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy