From c33a85a242df055f53dceafa26837613966a123e Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=C3=A9bastien=20Lesaint?= Date: Fri, 3 Apr 2015 14:09:31 +0200 Subject: [PATCH] SONAR-6366 add supportsMigration() on Dialect interface --- .../sonar/core/persistence/dialect/Dialect.java | 7 +++++++ .../org/sonar/core/persistence/dialect/H2.java | 5 +++++ .../sonar/core/persistence/dialect/MsSql.java | 5 +++++ .../sonar/core/persistence/dialect/MySql.java | 5 +++++ .../sonar/core/persistence/dialect/Oracle.java | 5 +++++ .../core/persistence/dialect/PostgreSql.java | 16 +++++++++++----- .../sonar/core/persistence/dialect/H2Test.java | 5 +++++ .../core/persistence/dialect/MsSqlTest.java | 5 +++++ .../core/persistence/dialect/MySqlTest.java | 5 +++++ .../core/persistence/dialect/OracleTest.java | 5 +++++ .../core/persistence/dialect/PostgreSqlTest.java | 5 +++++ 11 files changed, 63 insertions(+), 5 deletions(-) diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java index a15fbbcc261..bcaeb161fc9 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java @@ -87,4 +87,11 @@ public interface Dialect { * @since 5.0 */ int getScrollSingleRowFetchSize(); + + /** + * Indicates whether DB migration can be perform on the DB vendor implementation associated with the current dialect. + * + * @return a boolean + */ + boolean supportsMigration(); } diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/H2.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/H2.java index d182cf6f9db..9361095d7d6 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/H2.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/H2.java @@ -43,4 +43,9 @@ public class H2 extends AbstractDialect { return StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:h2:"); } + @Override + public boolean supportsMigration() { + return false; + } + } diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/MsSql.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/MsSql.java index 9fc40daed89..aff31dd5d2e 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/MsSql.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/MsSql.java @@ -44,6 +44,11 @@ public class MsSql extends AbstractDialect { || StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:jtds:sqlserver:"); } + @Override + public boolean supportsMigration() { + return true; + } + public static class MsSqlDialect extends SQLServerDialect { public MsSqlDialect() { super(); diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/MySql.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/MySql.java index 47b1c3d3bbc..756a39a891c 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/MySql.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/MySql.java @@ -65,4 +65,9 @@ public class MySql extends AbstractDialect { public int getScrollSingleRowFetchSize() { return Integer.MIN_VALUE; } + + @Override + public boolean supportsMigration() { + return true; + } } diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java index d6673158a05..7333f13f1f0 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java @@ -46,6 +46,11 @@ public class Oracle extends AbstractDialect { return StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:oracle:"); } + @Override + public boolean supportsMigration() { + return true; + } + public static class Oracle10gWithDecimalDialect extends Oracle10gDialect { public Oracle10gWithDecimalDialect() { super(); diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java index 3f33da58317..b9bfc5eff26 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java @@ -48,20 +48,26 @@ public class PostgreSql extends AbstractDialect { return StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:postgresql:"); } + @Override + public List getConnectionInitStatements() { + return INIT_STATEMENTS; + } + + @Override + public boolean supportsMigration() { + return true; + } + public static class PostgreSQLWithDecimalDialect extends PostgreSQLDialect { + public PostgreSQLWithDecimalDialect() { super(); registerColumnType(Types.DOUBLE, "numeric($p,$s)"); } - @Override public Class getNativeIdentifierGeneratorClass() { return PostgreSQLSequenceGenerator.class; } - } - @Override - public List getConnectionInitStatements() { - return INIT_STATEMENTS; } } diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/H2Test.java b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/H2Test.java index 86e4838c3ff..ae6f853a60b 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/H2Test.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/H2Test.java @@ -51,4 +51,9 @@ public class H2Test { public void testFetchSizeForScrolling() throws Exception { assertThat(dialect.getScrollDefaultFetchSize()).isEqualTo(200); } + + @Test + public void h2_does_not_supportMigration() throws Exception { + assertThat(dialect.supportsMigration()).isFalse(); + } } diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/MsSqlTest.java b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/MsSqlTest.java index 930bd8398f2..33c92f224eb 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/MsSqlTest.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/MsSqlTest.java @@ -49,4 +49,9 @@ public class MsSqlTest { assertThat(msSql.getDefaultDriverClassName()).isEqualTo("net.sourceforge.jtds.jdbc.Driver"); assertThat(msSql.getValidationQuery()).isEqualTo("SELECT 1"); } + + @Test + public void msSql_does_supportMigration() throws Exception { + assertThat(msSql.supportsMigration()).isTrue(); + } } diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/MySqlTest.java b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/MySqlTest.java index 32ad0160c39..6694d035f68 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/MySqlTest.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/MySqlTest.java @@ -55,4 +55,9 @@ public class MySqlTest { assertThat(mySql.getScrollDefaultFetchSize()).isEqualTo(Integer.MIN_VALUE); assertThat(mySql.getScrollSingleRowFetchSize()).isEqualTo(Integer.MIN_VALUE); } + + @Test + public void mysql_does_supportMigration() throws Exception { + assertThat(mySql.supportsMigration()).isTrue(); + } } diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java index d50f7ccc2b0..b3710e9f27e 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java @@ -52,4 +52,9 @@ public class OracleTest { assertThat(dialect.getScrollDefaultFetchSize()).isEqualTo(200); assertThat(dialect.getScrollSingleRowFetchSize()).isEqualTo(1); } + + @Test + public void oracle_does_supportMigration() throws Exception { + assertThat(dialect.supportsMigration()).isTrue(); + } } diff --git a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java index 5eeabda0239..61a71212ac1 100644 --- a/sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java +++ b/sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java @@ -57,4 +57,9 @@ public class PostgreSqlTest { public void testFetchSizeForScrolling() throws Exception { assertThat(dialect.getScrollDefaultFetchSize()).isEqualTo(200); } + + @Test + public void postgres_does_supportMigration() throws Exception { + assertThat(dialect.supportsMigration()).isTrue(); + } } -- 2.39.5