public static StorageManager getStorage(VSensorConfig config) { // StringBuilder sb = new StringBuilder("get storage for: ").append(config == null ? null : // config.getName()).append(" -> use "); StorageManager sm = storagesConfigs.get(config == null ? null : config); if (sm != null) return sm; DBConnectionInfo dci = null; if (config == null || config.getStorage() == null || !config.getStorage().isDefined()) { // Use the default storage // sb.append("(default) config: ").append(config); sm = mainStorage; } else { // sb.append("(specific) "); // Use the virtual sensor specific storage if (config.getStorage().isIdentifierDefined()) { // TODO get the connection info with the identifier. throw new IllegalArgumentException("Identifiers for storage is not supported yet."); } else { dci = new DBConnectionInfo( config.getStorage().getJdbcDriver(), config.getStorage().getJdbcURL(), config.getStorage().getJdbcUsername(), config.getStorage().getJdbcPassword()); } sm = storages.get(dci.hashCode()); if (sm == null) { sm = StorageManagerFactory.getInstance( config.getStorage().getJdbcDriver(), config.getStorage().getJdbcUsername(), config.getStorage().getJdbcPassword(), config.getStorage().getJdbcURL(), DEFAULT_MAX_DB_CONNECTIONS); storages.put(dci.hashCode(), sm); storagesConfigs.put(config, sm); } } // sb.append("storage: ").append(sm.toString()).append(" dci: ").append(dci).append(" code: // ").append(dci == null ? null : dci.hashCode()); // if (logger.isDebugEnabled()) // logger.warn(sb.toString()); return sm; }
public static BasicDataSource getDataSource(DBConnectionInfo dci) { BasicDataSource ds = null; try { ds = (BasicDataSource) GSNContext.getMainContext().lookup(Integer.toString(dci.hashCode())); if (ds == null) { ds = new BasicDataSource(); ds.setDriverClassName(dci.getDriverClass()); ds.setUsername(dci.getUserName()); ds.setPassword(dci.getPassword()); ds.setUrl(dci.getUrl()); // ds.setDefaultTransactionIsolation(Connection.TRANSACTION_READ_UNCOMMITTED); // ds.setAccessToUnderlyingConnectionAllowed(true); GSNContext.getMainContext().bind(Integer.toString(dci.hashCode()), ds); logger.warn("Created a DataSource to: " + ds.getUrl()); } } catch (NamingException e) { logger.error(e.getMessage(), e); } return ds; }