diff options
author | Roberto E. Escobar | 2015-01-22 17:20:42 +0000 |
---|---|---|
committer | Roberto E. Escobar | 2015-01-22 18:44:21 +0000 |
commit | 8ef001902024acfb8d02a102628df73675341a8e (patch) | |
tree | bf475ead06b5b58de1c760c5acb78f6ad2b012c7 | |
parent | 204775ae4448b07a226f2a9876df41fffc966cc3 (diff) | |
download | org.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
Change-Id: I418510f808dc7e2def78e99e1365d31db2f1d9c7
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); } } |