protected ConnectionInfo getConnectionInfoSmartly()

in old/dekaf-core/src/main/java/org/jetbrains/dekaf/jdbc/JdbcIntermediateFacade.java [262:302]


  protected ConnectionInfo getConnectionInfoSmartly(final String envQuery,
                                                    final Pattern serverVersionPattern,
                                                    final int serverVersionGroupIndex,
                                                    final Pattern driverVersionPattern,
                                                    final int driverVersionGroupIndex) {
    String[] env;
    Version serverVersion, driverVersion;

    final JdbcIntermediateSession session = openSession();
    try {
      // environment
      env = session.queryOneRow(envQuery, 3, String.class);

      if (env == null) env = new String[] {null,null,null};
      assert env.length == 3 : "Session info should contain 3 components";

      // versions
      String rdbmsName, serverVersionStr, driverVersionStr;
      try {
        DatabaseMetaData md = session.getConnection().getMetaData();
        rdbmsName = md.getDatabaseProductName();
        if (rdbmsName == null) rdbmsName = session.getConnection().getClass().getName();
        serverVersionStr = md.getDatabaseProductVersion();
        driverVersionStr = md.getDriverVersion();
      }
      catch (SQLException sqle) {
        throw getExceptionRecognizer().recognizeException(sqle, "getting versions using JDBC metadata");
      }

      serverVersion =
          extractVersion(serverVersionStr, serverVersionPattern, serverVersionGroupIndex);
      driverVersion =
          extractVersion(driverVersionStr, driverVersionPattern, driverVersionGroupIndex);

      // ok
      return new ConnectionInfo(rdbmsName, env[0], env[1], env[2], serverVersion, driverVersion);
    }
    finally {
      session.close();
    }
  }