Example usage for org.apache.commons.dbcp2 BasicDataSource getDriver

List of usage examples for org.apache.commons.dbcp2 BasicDataSource getDriver

Introduction

In this page you can find the example usage for org.apache.commons.dbcp2 BasicDataSource getDriver.

Prototype

public synchronized Driver getDriver() 

Source Link

Document

Returns the JDBC Driver that has been configured for use by this pool.

Usage

From source file:com.twosigma.beaker.sql.ConnectionStringHolder.java

public void setConnectionString(String connectionString) {

    this.connectionString = connectionString;

    if (connectionString != null && !connectionString.isEmpty()) {

        BasicDataSource ds = null;
        String user = null;/*from  w ww. j a  va2  s  .  co  m*/
        try {
            ds = jdbcClient.getDataSource(connectionString);
        } catch (SQLException e) {
        }

        if (ds != null) {
            user = getProperty(USER_CONNECTION_KEY, connectionString, ds.getDriver());
        }
        if (user == null) {
            user = getProperty(USER_CONNECTION_KEY, connectionString);
        }

        if (user != null) {
            if (KEY_FOR_DISPLAY_INPUT_DIALOG.equals(user)) {
                showDialog = true;
            } else {
                this.user = user;
            }

            String password = getProperty(PASSWORD_CONNECTION_KEY, connectionString);
            if (password != null) {
                if (KEY_FOR_DISPLAY_INPUT_DIALOG.equals(password)) {
                    showDialog = true;
                } else {
                    this.password = password;
                }
            } else {
                showDialog = true;
            }
        }

    }
}

From source file:com.twosigma.beaker.sql.QueryExecutor.java

public synchronized Object executeQuery(String script, NamespaceClient namespaceClient,
        ConnectionStringHolder defaultConnectionString,
        Map<String, ConnectionStringHolder> namedConnectionString)
        throws SQLException, IOException, ReadVariableException {

    BeakerParser beakerParser = new BeakerParser(script, namespaceClient, defaultConnectionString,
            namedConnectionString, jdbcClient);

    BasicDataSource ds = jdbcClient.getDataSource(beakerParser.getDbURI().getActualConnectionString());

    Properties info = null;//from w  ww.  j a v a  2 s  . c om
    if (beakerParser.getDbURI().getUser() != null && !beakerParser.getDbURI().getUser().isEmpty()) {
        if (info == null) {
            info = new Properties();
        }
        info.put("user", beakerParser.getDbURI().getUser());
    }
    if (beakerParser.getDbURI().getPassword() != null && !beakerParser.getDbURI().getPassword().isEmpty()) {
        if (info == null) {
            info = new Properties();
        }
        info.put("password", beakerParser.getDbURI().getPassword());
    }

    boolean isConnectionExeption = true;

    // Workaround for "h2database" : do not work correctly with empty or null "Properties"
    try (Connection connection = info != null
            ? ds.getDriver().connect(beakerParser.getDbURI().getActualConnectionString(), info)
            : ds.getConnection()) {
        this.connection = connection;
        connection.setAutoCommit(false);
        List<Object> resultsForOutputCell = new ArrayList<>();
        Map<String, List<Object>> resultsForNamspace = new HashMap<>();

        for (BeakerParseResult queryLine : beakerParser.getResults()) {

            BeakerInputVar basicIterationArray = null;
            for (BeakerInputVar parameter : queryLine.getInputVars()) {
                if (parameter.isAll()) {
                    basicIterationArray = parameter;
                    if (parameter.getErrorMessage() != null)
                        throw new ReadVariableException(parameter.getErrorMessage());
                    //ToDo make recursively iteration over several arrays
                    break;
                }
            }

            try {
                if (basicIterationArray != null) {
                    int l;
                    Object obj;
                    try {
                        obj = namespaceClient.get(basicIterationArray.objectName);
                    } catch (Exception e) {
                        throw new ReadVariableException(basicIterationArray.objectName, e);
                    }
                    if (obj instanceof List) {
                        l = ((List) obj).size();
                    } else if (obj.getClass().isArray()) {
                        l = Array.getLength(obj);
                    } else
                        break;

                    for (int i = 0; i < l; i++) {
                        QueryResult queryResult = executeQuery(i, queryLine, connection, namespaceClient);
                        adoptResult(queryLine, queryResult, resultsForOutputCell, resultsForNamspace);
                    }
                } else {
                    QueryResult queryResult = executeQuery(-1, queryLine, connection, namespaceClient);
                    adoptResult(queryLine, queryResult, resultsForOutputCell, resultsForNamspace);
                }
            } catch (Exception e) {
                isConnectionExeption = false;
                throw e;
            }
        }
        connection.commit();

        for (String output : resultsForNamspace.keySet()) {
            if (resultsForNamspace.get(output).size() > 1) {
                OutputContainer outputContainer = new OutputContainer(resultsForNamspace.get(output));
                namespaceClient.set(output, outputContainer);
            } else if (!resultsForNamspace.get(output).isEmpty()) {
                namespaceClient.set(output, resultsForNamspace.get(output).get(0));
            } else {
                namespaceClient.set(output, null);
            }
        }

        if (resultsForOutputCell.size() > 1) {
            OutputContainer outputContainer = new OutputContainer(resultsForOutputCell);
            return outputContainer;
        } else if (!resultsForOutputCell.isEmpty()) {
            return resultsForOutputCell.get(0);
        } else {
            return null;
        }

    } catch (Exception e) {
        if (beakerParser.getDbURI() != null && isConnectionExeption) {
            beakerParser.getDbURI().setShowDialog(true);
        }
        throw e;
    } finally {
        statement = null;
    }
}

From source file:com.twosigma.beakerx.sql.QueryExecutor.java

public synchronized Object executeQuery(String script, BeakerXClient namespaceClient,
        ConnectionStringHolder defaultConnectionString,
        Map<String, ConnectionStringHolder> namedConnectionString)
        throws SQLException, IOException, ReadVariableException {

    BeakerParser beakerParser = new BeakerParser(script, namespaceClient, defaultConnectionString,
            namedConnectionString, jdbcClient);

    BasicDataSource ds = jdbcClient.getDataSource(beakerParser.getDbURI().getActualConnectionString());

    Properties info = null;/*from  ww  w  . j av  a2s.  co  m*/
    if (beakerParser.getDbURI().getUser() != null && !beakerParser.getDbURI().getUser().isEmpty()) {
        if (info == null) {
            info = new Properties();
        }
        info.put("user", beakerParser.getDbURI().getUser());
    }
    if (beakerParser.getDbURI().getPassword() != null && !beakerParser.getDbURI().getPassword().isEmpty()) {
        if (info == null) {
            info = new Properties();
        }
        info.put("password", beakerParser.getDbURI().getPassword());
    }

    boolean isConnectionExeption = true;

    // Workaround for "h2database" : do not work correctly with empty or null "Properties"
    try (Connection connection = info != null
            ? ds.getDriver().connect(beakerParser.getDbURI().getActualConnectionString(), info)
            : ds.getConnection()) {
        this.connection = connection;
        connection.setAutoCommit(false);
        List<Object> resultsForOutputCell = new ArrayList<>();
        Map<String, List<Object>> resultsForNamspace = new HashMap<>();

        for (BeakerParseResult queryLine : beakerParser.getResults()) {

            BeakerInputVar basicIterationArray = null;
            for (BeakerInputVar parameter : queryLine.getInputVars()) {
                if (parameter.isAll()) {
                    basicIterationArray = parameter;
                    if (parameter.getErrorMessage() != null)
                        throw new ReadVariableException(parameter.getErrorMessage());
                    //ToDo make recursively iteration over several arrays
                    break;
                }
            }

            try {
                if (basicIterationArray != null) {
                    int l;
                    Object obj;
                    try {
                        obj = namespaceClient.get(basicIterationArray.objectName);
                    } catch (Exception e) {
                        throw new ReadVariableException(basicIterationArray.objectName, e);
                    }
                    if (obj instanceof List) {
                        l = ((List) obj).size();
                    } else if (obj.getClass().isArray()) {
                        l = Array.getLength(obj);
                    } else
                        break;

                    for (int i = 0; i < l; i++) {
                        QueryResult queryResult = executeQuery(i, queryLine, connection, namespaceClient);
                        adoptResult(queryLine, queryResult, resultsForOutputCell, resultsForNamspace);
                    }
                } else {
                    QueryResult queryResult = executeQuery(-1, queryLine, connection, namespaceClient);
                    adoptResult(queryLine, queryResult, resultsForOutputCell, resultsForNamspace);
                }
            } catch (Exception e) {
                isConnectionExeption = false;
                throw e;
            }
        }
        connection.commit();

        for (String output : resultsForNamspace.keySet()) {
            if (resultsForNamspace.get(output).size() > 1) {
                OutputContainer outputContainer = new OutputContainer(resultsForNamspace.get(output));
                namespaceClient.set(output, outputContainer);
            } else if (!resultsForNamspace.get(output).isEmpty()) {
                namespaceClient.set(output, resultsForNamspace.get(output).get(0));
            } else {
                namespaceClient.set(output, null);
            }
        }

        if (resultsForOutputCell.size() > 1) {
            OutputContainer outputContainer = new OutputContainer(resultsForOutputCell);
            return outputContainer;
        } else if (!resultsForOutputCell.isEmpty()) {
            return resultsForOutputCell.get(0);
        } else {
            return OutputCell.HIDDEN;
        }

    } catch (Exception e) {
        if (beakerParser.getDbURI() != null && isConnectionExeption) {
            beakerParser.getDbURI().setShowDialog(true);
        }
        throw e;
    } finally {
        statement = null;
    }
}