]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-6366 add supportsMigration() on Dialect interface
authorSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 3 Apr 2015 12:09:31 +0000 (14:09 +0200)
committerSébastien Lesaint <sebastien.lesaint@sonarsource.com>
Fri, 17 Apr 2015 13:14:59 +0000 (15:14 +0200)
sonar-core/src/main/java/org/sonar/core/persistence/dialect/Dialect.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/H2.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/MsSql.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/MySql.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/Oracle.java
sonar-core/src/main/java/org/sonar/core/persistence/dialect/PostgreSql.java
sonar-core/src/test/java/org/sonar/core/persistence/dialect/H2Test.java
sonar-core/src/test/java/org/sonar/core/persistence/dialect/MsSqlTest.java
sonar-core/src/test/java/org/sonar/core/persistence/dialect/MySqlTest.java
sonar-core/src/test/java/org/sonar/core/persistence/dialect/OracleTest.java
sonar-core/src/test/java/org/sonar/core/persistence/dialect/PostgreSqlTest.java

index a15fbbcc2613057633f90152d8e7004eff5398e8..bcaeb161fc90c405275593a6ea3d7128f3d5c7ff 100644 (file)
@@ -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();
 }
index d182cf6f9dbeab5d47677c813d67dfd25302eb7b..9361095d7d6c49588d62448f2b18767f7a89d77d 100644 (file)
@@ -43,4 +43,9 @@ public class H2 extends AbstractDialect {
     return StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:h2:");
   }
 
+  @Override
+  public boolean supportsMigration() {
+    return false;
+  }
+
 }
index 9fc40daed8992a4bee5a92246ad5410604ff9026..aff31dd5d2ee1952a5b7cd9f7a54f46019b8b13a 100644 (file)
@@ -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();
index 47b1c3d3bbcdead54ed2b82fb004b75e9157d4b5..756a39a891c8659aa2035b726c8d37152fcb5e69 100644 (file)
@@ -65,4 +65,9 @@ public class MySql extends AbstractDialect {
   public int getScrollSingleRowFetchSize() {
     return Integer.MIN_VALUE;
   }
+
+  @Override
+  public boolean supportsMigration() {
+    return true;
+  }
 }
index d6673158a0575ebcc8f72677cbe61a3f6aefefbd..7333f13f1f0885097623f749ae2892553724d383 100644 (file)
@@ -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();
index 3f33da58317d7235d92409b976209f2b43c2f10f..b9bfc5eff26104518ac8a342a51a2c4313543929 100644 (file)
@@ -48,20 +48,26 @@ public class PostgreSql extends AbstractDialect {
     return StringUtils.startsWithIgnoreCase(jdbcConnectionURL, "jdbc:postgresql:");
   }
 
+  @Override
+  public List<String> 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<String> getConnectionInitStatements() {
-    return INIT_STATEMENTS;
   }
 }
index 86e4838c3ff1bdaa0c8ba2841bdc187e1bb72aaf..ae6f853a60bb9af1be9dc7cd1696b320e2313068 100644 (file)
@@ -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();
+  }
 }
index 930bd8398f206e052412bd59075153c635c5e45b..33c92f224eb6fbf531884ed11c4c0cf89d6c5784 100644 (file)
@@ -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();
+  }
 }
index 32ad0160c39dd1b0d2956eb118259600a77a1b38..6694d035f684894e6f60da8fdb4b181251d88de7 100644 (file)
@@ -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();
+  }
 }
index d50f7ccc2b0c54b1ff6022269563b3cd1092d44b..b3710e9f27eb49e1b75596db29bd0d105d6bba76 100644 (file)
@@ -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();
+  }
 }
index 5eeabda0239a38920908d68cad0ee96de86848d1..61a71212ac10b0ed0db5ff7a6ba5493f67b42c89 100644 (file)
@@ -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();
+  }
 }