Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoberto E. Escobar2015-01-22 17:20:42 +0000
committerRoberto E. Escobar2015-01-22 18:44:21 +0000
commit8ef001902024acfb8d02a102628df73675341a8e (patch)
treebf475ead06b5b58de1c760c5acb78f6ad2b012c7
parent204775ae4448b07a226f2a9876df41fffc966cc3 (diff)
downloadorg.eclipse.osee-8ef001902024acfb8d02a102628df73675341a8e.tar.gz
org.eclipse.osee-8ef001902024acfb8d02a102628df73675341a8e.tar.xz
org.eclipse.osee-8ef001902024acfb8d02a102628df73675341a8e.zip
bug[ats_ATS154928]: Db init fails to initialize an empty database
-rw-r--r--plugins/org.eclipse.osee.jdbc.test/src/org/eclipse/osee/jdbc/JdbcReadWriteTest.java2
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientBuilder.java41
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientConfig.java9
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerBuilder.java6
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerConfig.java17
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcClientImpl.java16
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactory.java2
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactoryManager.java27
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcUtil.java16
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/PooledDataSourceFetcher.java6
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/SimpleConnectionProvider.java8
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/osgi/JdbcServiceImpl.java36
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/ops/CreateSchemaTx.java5
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/HyperSqlManager.java23
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/PostgreSqlManager.java10
-rw-r--r--plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/SchemaSqlUtil.java8
16 files changed, 185 insertions, 47 deletions
diff --git a/plugins/org.eclipse.osee.jdbc.test/src/org/eclipse/osee/jdbc/JdbcReadWriteTest.java b/plugins/org.eclipse.osee.jdbc.test/src/org/eclipse/osee/jdbc/JdbcReadWriteTest.java
index 0037514d4dc..928462d00f5 100644
--- a/plugins/org.eclipse.osee.jdbc.test/src/org/eclipse/osee/jdbc/JdbcReadWriteTest.java
+++ b/plugins/org.eclipse.osee.jdbc.test/src/org/eclipse/osee/jdbc/JdbcReadWriteTest.java
@@ -36,6 +36,7 @@ import org.junit.rules.TemporaryFolder;
*/
public class JdbcReadWriteTest {
+ // Although index is not needed for test, include it to test index creation during schema initialization
private static final String SCHEMA_DEF = //
"<TableConfig>\n" + //
"<Table name=\"BOOKS\" schema=\"TEST\" tablespace=\"TEST_DATA\">\n" + //
@@ -43,6 +44,7 @@ public class JdbcReadWriteTest {
"<Column id=\"TITLE\" defaultValue=\"not null\" limits=\"22\" type=\"VARCHAR\" />\n" + //
"<Column id=\"AUTHOR\" defaultValue=\"not null\" limits=\"22\" type=\"VARCHAR\" />\n" + //
"<Constraint schema=\"TEST\" id=\"TEST_BOOKS__I_PK\" type=\"PRIMARY KEY\" appliesTo=\"id\" />\n" + //
+ "<Index id=\"BOOKS__T_IDX\" tablespace=\"TEST_DATA\"><AppliesTo id=\"TITLE\" /></Index>\n" + //
"</Table>\n" + //
"</TableConfig>";
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientBuilder.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientBuilder.java
index ab983fa6b69..cf28889b200 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientBuilder.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientBuilder.java
@@ -82,19 +82,28 @@ public final class JdbcClientBuilder extends JdbcClientConfig {
}
public JdbcClient build() {
- JdbcClientConfig config = copy();
+ JdbcClientConfig cfg = copy();
- if (!Strings.isValid(config.getDbDriver())) {
- JdbcDriverType type = JdbcDriverType.fromUri(config.getDbUri());
+ if (!Strings.isValid(cfg.getDbDriver())) {
+ JdbcDriverType type = JdbcDriverType.fromUri(cfg.getDbUri());
if (type != null) {
dbDriver(type.getDriver());
}
}
- JdbcConnectionProvider connectionProvider = getConnectionProvider(config.getPoolConfig());
+
+ if (JdbcDriverType.hsql.getDriver().equals(getDbDriver())) {
+ if (!cfg.getDbProps().containsKey("hsqldb.tx")) {
+ cfg.addDbParam("hsqldb.tx", "MVCC");
+ }
+ cfg.setDbAppendPropsToUri(true);
+ }
+
+ JdbcConnectionProvider connectionProvider = getConnectionProvider(cfg.getPoolConfig());
JdbcSequenceProvider sequenceProvider = new JdbcSequenceProvider();
JdbcConnectionInfo dbInfo =
- JdbcUtil.newConnectionInfo(getDbDriver(), getDbUri(), getDbProps(), isDbAppendPropsToUri());
- return new JdbcClientImpl(config, connectionProvider, sequenceProvider, dbInfo);
+ JdbcUtil.newConnectionInfo(cfg.getDbDriver(), cfg.getDbUri(), cfg.getDbProps(),
+ cfg.isDbAppendPropsToUri());
+ return new JdbcClientImpl(cfg, connectionProvider, sequenceProvider, dbInfo);
}
private JdbcConnectionProvider getConnectionProvider(JdbcPoolConfig poolConfig) {
@@ -281,6 +290,10 @@ public final class JdbcClientBuilder extends JdbcClientConfig {
return this;
}
+ public JdbcClientBuilder fromType(JdbcDriverType type, String db, int port) {
+ return fromType(type, db, null, port);
+ }
+
public JdbcClientBuilder fromType(JdbcDriverType type, String db, String host, int port) {
dbDriver(type.getDriver());
@@ -292,13 +305,21 @@ public final class JdbcClientBuilder extends JdbcClientConfig {
switch (type) {
case hsql:
- dbParam("hsqldb.tx", "MVCC");
dbParamsInUri(true);
- dbUsername("public");
+ if (!getDbProps().containsKey("hsqldb.tx")) {
+ dbParam("hsqldb.tx", "MVCC");
+ }
+ if (!Strings.isValid(getDbUsername())) {
+ dbUsername("public");
+ }
break;
case oracle_thin:
- dbParam("SetBigStringTryClob", "true");
- dbParam("includeSynonyms", "true");
+ if (!getDbProps().containsKey("SetBigStringTryClob")) {
+ dbParam("SetBigStringTryClob", "true");
+ }
+ if (!getDbProps().containsKey("includeSynonyms")) {
+ dbParam("includeSynonyms", "true");
+ }
break;
default:
break;
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientConfig.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientConfig.java
index 9ae8597ed7a..1270f5ab326 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientConfig.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcClientConfig.java
@@ -29,6 +29,7 @@ import static org.eclipse.osee.jdbc.internal.JdbcUtil.getBoolean;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
+import org.eclipse.osee.jdbc.internal.JdbcUtil;
/**
* @author Roberto E. Escobar
@@ -72,7 +73,9 @@ public class JdbcClientConfig {
}
public Properties getDbProps() {
- return new Properties(dbProps);
+ Properties unmodifiable = new Properties();
+ unmodifiable.putAll(dbProps);
+ return unmodifiable;
}
public JdbcPoolConfig getPoolConfig() {
@@ -138,9 +141,7 @@ public class JdbcClientConfig {
for (Entry<String, Object> entry : src.entrySet()) {
String key = entry.getKey();
- if (!key.startsWith(JdbcConstants.NAMESPACE) && //
- !key.equals(JdbcConstants.JDBC_SERVICE__ID) && //
- !key.equals(JdbcConstants.JDBC_SERVICE__OSGI_BINDING)) {
+ if (JdbcUtil.isValidExtraParam(key)) {
Object value = entry.getValue();
if (value != null) {
addDbParam(key, String.valueOf(value));
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerBuilder.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerBuilder.java
index 3e70346974f..ec75cc0ba2a 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerBuilder.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerBuilder.java
@@ -81,6 +81,12 @@ public final class JdbcServerBuilder extends JdbcServerConfig {
int port = JdbcUtil.getRandomPort();
cfg.setDbListenPort(port);
}
+
+ if (JdbcConstants.DEFAULT_JDBC_SERVER__IMPL_CLASSNAME.equals(cfg.getServerImplClassName())) {
+ if (!cfg.getProperties().containsKey("hsqldb.tx")) {
+ cfg.addDbParam("hsqldb.tx", "MVCC");
+ }
+ }
return JdbcServerFactory.newJbdcServer(cfg, loggingEnabled, logger);
}
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerConfig.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerConfig.java
index d3b79b1df33..d13dbf2b6b5 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerConfig.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/JdbcServerConfig.java
@@ -36,6 +36,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import org.eclipse.osee.framework.jdk.core.util.Strings;
+import org.eclipse.osee.jdbc.internal.JdbcUtil;
/**
* @author Roberto E. Escobar
@@ -74,6 +75,14 @@ public class JdbcServerConfig {
return dbPath;
}
+ public String getDbUsername() {
+ return (String) properties.get(DB_USERNAME_KEY);
+ }
+
+ public String getDbPassword() {
+ return (String) properties.get(DB_PASSWORD_KEY);
+ }
+
public String getDbName() {
String dbName = dbPath;
if (Strings.isValid(dbName)) {
@@ -100,7 +109,9 @@ public class JdbcServerConfig {
}
public Properties getProperties() {
- return properties;
+ Properties unmodifiable = new Properties();
+ unmodifiable.putAll(properties);
+ return unmodifiable;
}
public String getServerImplClassName() {
@@ -217,9 +228,7 @@ public class JdbcServerConfig {
for (Entry<String, Object> entry : src.entrySet()) {
String key = entry.getKey();
- if (!key.startsWith(JdbcConstants.SERVER_NAMESPACE) && //
- !key.equals(JdbcConstants.JDBC_SERVICE__ID) && //
- !key.equals(JdbcConstants.JDBC_SERVICE__OSGI_BINDING)) {
+ if (JdbcUtil.isValidExtraParam(key)) {
Object value = entry.getValue();
if (value != null) {
addDbParam(key, String.valueOf(value));
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcClientImpl.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcClientImpl.java
index 6f6deb73e17..4c0d45ea614 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcClientImpl.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcClientImpl.java
@@ -489,7 +489,21 @@ public final class JdbcClientImpl implements JdbcClient {
executeCallable(new LoadUserSchemasCallable(this, userSpecifiedConfig, resources, options));
executeCallable(new ExtractSchemaCallable(this, userSpecifiedConfig.keySet(), currentDatabaseConfig));
- runTransaction(new CreateSchemaTx(this, userSpecifiedConfig, currentDatabaseConfig));
+
+ // Execute outside of transaction since SCHEMA changes have to be persisted as we go
+ JdbcConnectionImpl connection = getConnection();
+ try {
+ CreateSchemaTx tx = new CreateSchemaTx(this, userSpecifiedConfig, currentDatabaseConfig);
+ try {
+ tx.handleTxWork(connection);
+ } catch (Exception ex) {
+ tx.handleTxException(ex);
+ } finally {
+ tx.handleTxFinally();
+ }
+ } finally {
+ connection.close();
+ }
}
private void executeCallable(Callable<?> callable) {
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactory.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactory.java
index 6bbf96dfed0..6d01b39ed34 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactory.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactory.java
@@ -17,7 +17,7 @@ import java.sql.Connection;
*/
public interface JdbcConnectionFactory {
- Connection getConnection(JdbcConnectionInfo dbInfo) throws Exception;
+ Connection getConnection(JdbcConnectionInfo dbInfo);
String getDriver();
}
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactoryManager.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactoryManager.java
index 41b0f9618e5..5c6f0a430cf 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactoryManager.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcConnectionFactoryManager.java
@@ -14,6 +14,7 @@ import static org.eclipse.osee.jdbc.JdbcException.newJdbcException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
+import java.sql.SQLException;
import java.util.Map;
import org.eclipse.osee.jdbc.JdbcDbType;
import org.eclipse.osee.jdbc.JdbcException;
@@ -31,11 +32,7 @@ public class JdbcConnectionFactoryManager {
public MetaData getMetaData(JdbcConnectionInfo dbInfo) {
JdbcConnectionFactory proxiedFactory = getFactory(dbInfo.getDriver());
- try {
- return getMetaData(proxiedFactory, dbInfo);
- } catch (Exception ex) {
- throw JdbcException.newJdbcException(ex);
- }
+ return getMetaData(proxiedFactory, dbInfo);
}
public JdbcConnectionFactory getFactory(String driver) {
@@ -47,7 +44,7 @@ public class JdbcConnectionFactoryManager {
return factory;
}
- private MetaData getMetaData(JdbcConnectionFactory proxiedFactory, JdbcConnectionInfo dbInfo) throws Exception {
+ private MetaData getMetaData(JdbcConnectionFactory proxiedFactory, JdbcConnectionInfo dbInfo) {
MetaData metaData = new MetaData();
Connection connection = null;
try {
@@ -55,9 +52,15 @@ public class JdbcConnectionFactoryManager {
DatabaseMetaData metadata = connection.getMetaData();
metaData.setTxIsolationLevelSupported(metadata.supportsTransactionIsolationLevel(Connection.TRANSACTION_READ_COMMITTED));
metaData.setValidationQuery(JdbcDbType.getValidationSql(metadata));
+ } catch (SQLException ex) {
+ throw JdbcException.newJdbcException(ex);
} finally {
if (connection != null) {
- connection.close();
+ try {
+ connection.close();
+ } catch (SQLException ex) {
+ throw JdbcException.newJdbcException(ex);
+ }
}
}
return metaData;
@@ -94,13 +97,17 @@ public class JdbcConnectionFactoryManager {
}
@Override
- public Connection getConnection(JdbcConnectionInfo dbInfo) throws Exception {
+ public Connection getConnection(JdbcConnectionInfo dbInfo) {
try {
Class.forName(driver);
} catch (Exception ex) {
- throw newJdbcException("Unable to find connection factory with driver [%s]", driver);
+ throw newJdbcException(ex, "Unable to find connection factory with driver [%s]", driver);
+ }
+ try {
+ return DriverManager.getConnection(dbInfo.getUri(), dbInfo.getProperties());
+ } catch (Exception ex) {
+ throw newJdbcException(ex, "Unable to get connection for db - [%s]", dbInfo);
}
- return DriverManager.getConnection(dbInfo.getUri(), dbInfo.getProperties());
}
@Override
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcUtil.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcUtil.java
index fde05282c3c..537f4090895 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcUtil.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/JdbcUtil.java
@@ -41,6 +41,16 @@ public final class JdbcUtil {
// Utility class
}
+ public static boolean isValidExtraParam(String key) {
+ return Strings.isValid(key) //
+ && !key.startsWith(JdbcConstants.NAMESPACE) //
+ && !key.equalsIgnoreCase(JdbcConstants.JDBC_SERVICE__ID) //
+ && !key.equalsIgnoreCase(JdbcConstants.JDBC_SERVICE__OSGI_BINDING) //
+ && !key.equalsIgnoreCase("objectClass") //
+ && !key.equalsIgnoreCase("component.id") //
+ && !key.equalsIgnoreCase("component.name");
+ }
+
public static void setInputParametersForStatement(PreparedStatement statement, Object... data) throws JdbcException {
setInputParametersForStatement(statement, 1, data);
}
@@ -134,6 +144,12 @@ public final class JdbcUtil {
public Properties getProperties() {
return dbProps;
}
+
+ @Override
+ public String toString() {
+ return "JdbcConnectionInfo [id=" + getId() + ", driver=" + getDriver() + ", uri=" + getUri() + ", props=" + getProperties();
+ }
+
};
}
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/PooledDataSourceFetcher.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/PooledDataSourceFetcher.java
index b2c6945ee75..7456f2c3135 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/PooledDataSourceFetcher.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/PooledDataSourceFetcher.java
@@ -169,7 +169,11 @@ public class PooledDataSourceFetcher implements Callable<DataSource> {
// Do nothing on close exception;
}
}
- throw new SQLException(ex);
+ if (ex instanceof SQLException) {
+ throw (SQLException) ex;
+ } else {
+ throw new SQLException(ex);
+ }
}
return connection;
}
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/SimpleConnectionProvider.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/SimpleConnectionProvider.java
index 6a433c012b2..b6a757db2ea 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/SimpleConnectionProvider.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/SimpleConnectionProvider.java
@@ -10,7 +10,6 @@
*******************************************************************************/
package org.eclipse.osee.jdbc.internal;
-import static org.eclipse.osee.jdbc.JdbcException.newJdbcException;
import java.sql.Connection;
import java.util.Collections;
import java.util.Map;
@@ -30,12 +29,7 @@ public class SimpleConnectionProvider implements JdbcConnectionProvider {
@Override
public JdbcConnectionImpl getConnection(JdbcConnectionInfo dbInfo) throws JdbcException {
JdbcConnectionFactory factory = manager.getFactory(dbInfo.getDriver());
- Connection connection = null;
- try {
- connection = factory.getConnection(dbInfo);
- } catch (Exception ex) {
- throw newJdbcException(ex);
- }
+ Connection connection = factory.getConnection(dbInfo);
return new JdbcConnectionImpl(connection);
}
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/osgi/JdbcServiceImpl.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/osgi/JdbcServiceImpl.java
index 30289368d66..402b62ca91d 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/osgi/JdbcServiceImpl.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/osgi/JdbcServiceImpl.java
@@ -21,6 +21,7 @@ import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.jdbc.JdbcClient;
import org.eclipse.osee.jdbc.JdbcClientBuilder;
import org.eclipse.osee.jdbc.JdbcConstants;
+import org.eclipse.osee.jdbc.JdbcConstants.JdbcDriverType;
import org.eclipse.osee.jdbc.JdbcLogger;
import org.eclipse.osee.jdbc.JdbcServer;
import org.eclipse.osee.jdbc.JdbcServerBuilder;
@@ -72,7 +73,21 @@ public class JdbcServiceImpl implements JdbcService {
if (hasServerConfig(props)) {
JdbcServerConfig serverConfig = server.getConfig();
if (!Strings.isValid(builder.getDbUri())) {
- builder = JdbcClientBuilder.hsql(serverConfig.getDbName(), serverConfig.getDbPort());
+ builder = builder.fromType(JdbcDriverType.hsql, serverConfig.getDbName(), serverConfig.getDbPort());
+ }
+
+ if (!Strings.isValid(builder.getDbUsername())) {
+ String serverUsername = serverConfig.getDbUsername();
+ if (Strings.isValid(serverUsername)) {
+ builder.dbUsername(serverUsername);
+ }
+ }
+
+ if (!Strings.isValid(builder.getDbPassword())) {
+ String serverPassword = serverConfig.getDbPassword();
+ if (Strings.isValid(serverPassword)) {
+ builder.dbPassword(serverPassword);
+ }
}
}
clientRef.set(builder.build());
@@ -84,9 +99,22 @@ public class JdbcServiceImpl implements JdbcService {
private JdbcServer newServer(Map<String, Object> props) {
JdbcServer newServer = null;
if (hasServerConfig(props)) {
- newServer = JdbcServerBuilder.newBuilder(props)//
- .logger(asJdbcLogger(logger))//
- .build();
+ JdbcServerBuilder builder = JdbcServerBuilder.newBuilder(props)//
+ .logger(asJdbcLogger(logger));
+
+ if (!Strings.isValid(builder.getDbUsername())) {
+ String username = JdbcUtil.get(props, JdbcConstants.JDBC__CONNECTION_USERNAME, null);
+ if (Strings.isValid(username)) {
+ builder.dbUsername(username);
+ }
+ }
+ if (!Strings.isValid(builder.getDbPassword())) {
+ String password = JdbcUtil.get(props, JdbcConstants.JDBC__CONNECTION_PASSWORD, null);
+ if (Strings.isValid(password)) {
+ builder.dbPassword(password);
+ }
+ }
+ newServer = builder.build();
}
JdbcServer oldServer = serverRef.getAndSet(newServer);
if (oldServer != null) {
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/ops/CreateSchemaTx.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/ops/CreateSchemaTx.java
index ec549c5fce9..2ad737fdbae 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/ops/CreateSchemaTx.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/ops/CreateSchemaTx.java
@@ -47,7 +47,10 @@ public class CreateSchemaTx extends JdbcTransaction {
dbInit.dropTables(schemas, userSchema, dbSchema);
JdbcDbType dbType = client.getDatabaseType();
- if (dbType == JdbcDbType.postgresql || dbType == JdbcDbType.h2) {
+ if (dbType == JdbcDbType.postgresql //
+ || dbType == JdbcDbType.h2 //
+ || dbType == JdbcDbType.hsql //
+ ) {
try {
dbInit.dropSchema(schemas);
} catch (Exception ex) {
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/HyperSqlManager.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/HyperSqlManager.java
index 740a751f8b7..c337808c442 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/HyperSqlManager.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/HyperSqlManager.java
@@ -32,10 +32,33 @@ import org.eclipse.osee.jdbc.internal.schema.data.TableElement.ColumnFields;
*/
public class HyperSqlManager extends SqlManagerImpl {
+ // System level schema
+ private static final String PUBLIC_SCHEMA = "PUBLIC";
+
public HyperSqlManager(JdbcWriter client, SqlDataType sqlDataType) {
super(client, sqlDataType);
}
+ private boolean isSystemSchema(String schema) {
+ return PUBLIC_SCHEMA.equalsIgnoreCase(schema);
+ }
+
+ @Override
+ public void createSchema(String schema) throws OseeCoreException {
+ if (!isSystemSchema(schema)) {
+ String sql = String.format("%s SCHEMA \"%s\" AUTHORIZATION DBA", CREATE_STRING, schema);
+ client.runPreparedUpdate(sql);
+ }
+ }
+
+ @Override
+ public void dropSchema(String schema) throws OseeCoreException {
+ if (!isSystemSchema(schema)) {
+ String sql = String.format("%s SCHEMA IF EXISTS \"%s\" CASCADE", DROP_STRING, schema);
+ client.runPreparedUpdate(sql);
+ }
+ }
+
private String handleColumnCreationSection(Map<String, ColumnMetadata> columns) {
List<String> lines = new ArrayList<String>();
for (String key : columns.keySet()) {
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/PostgreSqlManager.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/PostgreSqlManager.java
index b1295f62a7b..72ddb8860ad 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/PostgreSqlManager.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/PostgreSqlManager.java
@@ -37,6 +37,16 @@ public class PostgreSqlManager extends SqlManagerImpl {
super(client, sqlDataType);
}
+ @Override
+ public void createSchema(String schema) throws OseeCoreException {
+ super.createSchema(schema.toLowerCase());
+ }
+
+ @Override
+ public void dropSchema(String schema) throws OseeCoreException {
+ super.dropSchema(schema.toLowerCase());
+ }
+
private String handleColumnCreationSection(Map<String, ColumnMetadata> columns) {
List<String> lines = new ArrayList<String>();
Set<String> keys = columns.keySet();
diff --git a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/SchemaSqlUtil.java b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/SchemaSqlUtil.java
index f6f2cd7ad05..528c84c2999 100644
--- a/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/SchemaSqlUtil.java
+++ b/plugins/org.eclipse.osee.jdbc/src/org/eclipse/osee/jdbc/internal/schema/sql/SchemaSqlUtil.java
@@ -103,14 +103,14 @@ public class SchemaSqlUtil {
}
public void createSchema(Set<String> schemas) throws OseeCoreException {
- for (String schemaId : schemas) {
- sqlManager.createSchema(schemaId.toLowerCase());
+ for (String schema : schemas) {
+ sqlManager.createSchema(schema);
}
}
public void dropSchema(Set<String> schemas) throws OseeCoreException {
- for (String schemaId : schemas) {
- sqlManager.dropSchema(schemaId.toLowerCase());
+ for (String schema : schemas) {
+ sqlManager.dropSchema(schema);
}
}

Back to the top