List of usage examples for org.apache.commons.dbcp2 BasicDataSource getDriver
public synchronized Driver getDriver()
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; } }