]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-2642 do not duplicate derby DDL files
authorSimon Brandhof <simon.brandhof@gmail.com>
Wed, 26 Oct 2011 09:48:24 +0000 (11:48 +0200)
committerSimon Brandhof <simon.brandhof@gmail.com>
Wed, 26 Oct 2011 09:49:09 +0000 (11:49 +0200)
16 files changed:
sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java
sonar-core/src/main/java/org/sonar/persistence/Database.java
sonar-core/src/main/java/org/sonar/persistence/DatabaseMigrator.java [new file with mode: 0644]
sonar-core/src/main/java/org/sonar/persistence/DdlUtils.java
sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java
sonar-core/src/main/java/org/sonar/persistence/InMemoryDatabase.java
sonar-core/src/main/java/org/sonar/persistence/MyBatis.java
sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql
sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl
sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java
sonar-server/src/main/java/org/sonar/server/platform/Platform.java
sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java
sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt
sonar-server/src/main/webapp/WEB-INF/db/structure/derby.ddl [deleted file]
sonar-server/src/main/webapp/WEB-INF/db/structure/derby.sql [deleted file]
sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb

index 01df8825f85aca96cfe7144b9c061fb12c68f00a..1036280044fb0467e5ea8468e7b51e52e27bff65 100644 (file)
@@ -82,7 +82,6 @@ public abstract class AbstractDatabaseConnector implements DatabaseConnector {
     if (!started) {
       String jdbcConnectionUrl = testConnection();
       dialect = DialectRepository.find(configuration.getString("sonar.jdbc.dialect"), jdbcConnectionUrl);
-      LoggerFactory.getLogger("org.sonar.INFO").info("Database dialect class " + dialect.getClass().getName());
       started = true;
     }
     if (!operational) {
index ac4fd69506d03d8e384c03fb3aad587c64f42385..028f8e812aab2dec469f3f906258b98f116b01f2 100644 (file)
@@ -19,6 +19,8 @@
  */
 package org.sonar.persistence;
 
+import org.sonar.jpa.dialect.Dialect;
+
 import javax.sql.DataSource;
 
 /**
@@ -29,4 +31,5 @@ public interface Database {
   Database start();
   Database stop();
   DataSource getDataSource();
+  Dialect getDialect();
 }
diff --git a/sonar-core/src/main/java/org/sonar/persistence/DatabaseMigrator.java b/sonar-core/src/main/java/org/sonar/persistence/DatabaseMigrator.java
new file mode 100644 (file)
index 0000000..6d31f29
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Sonar, open source software quality management tool.
+ * Copyright (C) 2008-2011 SonarSource
+ * mailto:contact AT sonarsource DOT com
+ *
+ * Sonar is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * Sonar is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Sonar; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02
+ */
+package org.sonar.persistence;
+
+import org.apache.ibatis.session.SqlSession;
+import org.slf4j.LoggerFactory;
+import org.sonar.api.ServerComponent;
+
+import java.sql.Connection;
+
+/**
+ * Restore schema by executing DDL scripts. Only Derby database is supported. Other databases are created by Ruby on Rails migrations.
+ *
+ * @since 2.12
+ */
+public class DatabaseMigrator implements ServerComponent {
+
+  private MyBatis myBatis;
+  private Database database;
+
+  public DatabaseMigrator(MyBatis myBatis, Database database) {
+    this.myBatis = myBatis;
+    this.database = database;
+  }
+
+  /**
+   * @return true if the database has been created, false if this database is not supported
+   */
+  public boolean createDatabase() {
+    if (DdlUtils.supportsDialect(database.getDialect().getId())) {
+      LoggerFactory.getLogger(getClass()).info("Create database");
+      SqlSession session = myBatis.openSession();
+      Connection connection = session.getConnection();
+      try {
+        DdlUtils.execute(connection, database.getDialect().getId());
+      } finally {
+        session.close();
+      }
+      return true;
+    }
+    return false;
+  }
+}
index 2b8cc3d22d7f7ab4977488060de59c2f601eb844..14dd56eef2cd07c9432a016976f8dc3b470665a5 100644 (file)
@@ -44,6 +44,9 @@ public final class DdlUtils {
     return "derby".equals(dialect);
   }
 
+  /**
+   * The connection is commited in this method but not closed.
+   */
   public static void execute(Connection connection, String dialect) {
     if (!supportsDialect(dialect)) {
       throw new IllegalArgumentException("Unsupported dialect: " + dialect);
index fae69d957ee155ec0aa1b2d8071005c5e2a710ff..fb5eca5ccaad8842f29de4975d676c092d512b8a 100644 (file)
@@ -26,6 +26,8 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.sonar.api.config.Settings;
 import org.sonar.api.database.DatabaseProperties;
+import org.sonar.jpa.dialect.Dialect;
+import org.sonar.jpa.dialect.DialectRepository;
 
 import javax.sql.DataSource;
 import java.sql.SQLException;
@@ -42,6 +44,7 @@ public class DefaultDatabase implements Database {
 
   private Settings settings;
   private BasicDataSource datasource;
+  private Dialect dialect;
 
   public DefaultDatabase(Settings settings) {
     this.settings = settings;
@@ -51,8 +54,9 @@ public class DefaultDatabase implements Database {
     try {
       doBeforeStart();
 
-      LOG.info("Create JDBC datasource");
-      datasource = (BasicDataSource) BasicDataSourceFactory.createDataSource(getCommonsDbcpProperties());
+      Properties properties = getProperties();
+      dialect = initDialect(properties);
+      datasource = initDatasource(properties);
       return this;
 
     } catch (Exception e) {
@@ -60,6 +64,19 @@ public class DefaultDatabase implements Database {
     }
   }
 
+  BasicDataSource initDatasource(Properties properties) throws Exception {
+    LOG.info("Create JDBC datasource");
+    return (BasicDataSource) BasicDataSourceFactory.createDataSource(extractCommonsDbcpProperties(properties));
+  }
+
+  Dialect initDialect(Properties properties) {
+    Dialect result = DialectRepository.find(properties.getProperty("sonar.jdbc.dialect"), properties.getProperty("sonar.jdbc.url"));
+    if (result != null && "derby".equals(result.getId())) {
+      LoggerFactory.getLogger(getClass()).warn("Derby database should be used for evaluation purpose only");
+    }
+    return result;
+  }
+
   protected void doBeforeStart() {
   }
 
@@ -79,6 +96,10 @@ public class DefaultDatabase implements Database {
 
   }
 
+  public final Dialect getDialect() {
+    return dialect;
+  }
+
   public final DataSource getDataSource() {
     return datasource;
   }
@@ -104,10 +125,9 @@ public class DefaultDatabase implements Database {
     }
   }
 
-  Properties getCommonsDbcpProperties() {
+  static Properties extractCommonsDbcpProperties(Properties properties) {
     Properties result = new Properties();
-    Properties props = getProperties();
-    for (Map.Entry<Object, Object> entry : props.entrySet()) {
+    for (Map.Entry<Object, Object> entry : properties.entrySet()) {
       String key = (String) entry.getKey();
       if (StringUtils.startsWith(key, "sonar.jdbc.")) {
         result.setProperty(StringUtils.removeStart(key, "sonar.jdbc."), (String) entry.getValue());
index 7e54f9522a92a3996eb53a1a2ce5336d0a402952..80cf8bb49149859647da7aa20f6df82aea2e47ec 100644 (file)
@@ -21,6 +21,8 @@ package org.sonar.persistence;
 
 import org.apache.commons.dbcp.BasicDataSource;
 import org.apache.commons.dbcp.BasicDataSourceFactory;
+import org.sonar.jpa.dialect.Derby;
+import org.sonar.jpa.dialect.Dialect;
 
 import javax.sql.DataSource;
 import java.sql.Connection;
@@ -95,4 +97,8 @@ public class InMemoryDatabase implements Database {
   public DataSource getDataSource() {
     return datasource;
   }
+
+  public Dialect getDialect() {
+    return new Derby();
+  }
 }
index 4a468f8f76722eb8d9e256b1ad6db9020f1a6ef2..82e23455b703850ee925c41c9445dcf7c393defd 100644 (file)
@@ -25,6 +25,8 @@ import org.apache.ibatis.builder.xml.XMLMapperBuilder;
 import org.apache.ibatis.mapping.Environment;
 import org.apache.ibatis.session.*;
 import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
+import org.sonar.api.BatchComponent;
+import org.sonar.api.ServerComponent;
 import org.sonar.persistence.model.Duplication;
 import org.sonar.persistence.model.DuplicationMapper;
 import org.sonar.persistence.model.Rule;
@@ -33,7 +35,7 @@ import org.sonar.persistence.model.RuleMapper;
 import java.io.IOException;
 import java.io.InputStream;
 
-public class MyBatis {
+public class MyBatis implements BatchComponent, ServerComponent {
 
   private Database database;
   private SqlSessionFactory sessionFactory;
index 5a8a67209a92a4eebf31112d22177b55341f3c6d..825db32a1a64e0c566f3940099163f8a9db7a742 100644 (file)
@@ -1,7 +1,7 @@
 -- Version 2.11
 
 -- All the rows inserted during Rails migrations. Rows inserted during server startup tasks (Java) are excluded : rules, profiles, metrics, ...
--- Note: do not split a request on multiple lines.
+-- Note: do not split a request on multiple lines and do not end with ;
 INSERT INTO ACTIVE_DASHBOARDS(ID, DASHBOARD_ID, USER_ID, ORDER_INDEX) VALUES (1, 1, null, 1)
 ALTER TABLE ACTIVE_DASHBOARDS ALTER COLUMN ID RESTART WITH 2
 
@@ -161,6 +161,8 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('214')
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('215')
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('216')
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('217')
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('220')
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('221')
 
 INSERT INTO USERS(ID, LOGIN, NAME, EMAIL, CRYPTED_PASSWORD, SALT, CREATED_AT, UPDATED_AT, REMEMBER_TOKEN, REMEMBER_TOKEN_EXPIRES_AT) VALUES (1, 'admin', 'Administrator', '', 'a373a0e667abb2604c1fd571eb4ad47fe8cc0878', '48bc4b0d93179b5103fd3885ea9119498e9d161b', '2011-09-26 22:27:48.0', '2011-09-26 22:27:48.0', null, null)
 ALTER TABLE USERS ALTER COLUMN ID RESTART WITH 2
index be3e9ffdb6b94c4b7acc6d495572fd0d2f991c82..df60c0d6d24600840f7d3b0a23b5deb61e8ba3ea 100644 (file)
@@ -41,7 +41,7 @@ CREATE TABLE "RULES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (ST
 
 CREATE TABLE "WIDGET_PROPERTIES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "WIDGET_ID" INTEGER NOT NULL, "KEE" VARCHAR(100), "TEXT_VALUE" VARCHAR(4000), "VALUE_TYPE" VARCHAR(20))
 
-CREATE TABLE "EVENTS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(50), "RESOURCE_ID" INTEGER, "SNAPSHOT_ID" INTEGER, "CATEGORY" VARCHAR(50), "EVENT_DATE" TIMESTAMP, "CREATED_AT" TIMESTAMP, "DESCRIPTION" VARCHAR(3072), "DATA" VARCHAR(4000))
+CREATE TABLE "EVENTS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(400), "RESOURCE_ID" INTEGER, "SNAPSHOT_ID" INTEGER, "CATEGORY" VARCHAR(50), "EVENT_DATE" TIMESTAMP, "CREATED_AT" TIMESTAMP, "DESCRIPTION" VARCHAR(4000))
 
 CREATE TABLE "ALERTS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "PROFILE_ID" INTEGER, "METRIC_ID" INTEGER, "OPERATOR" VARCHAR(3), "VALUE_ERROR" VARCHAR(64), "VALUE_WARNING" VARCHAR(64))
 
index 94361873195cba8e4983763269a896a98ac66773..05922626faebc3d5c5de03db82b366a63619af74 100644 (file)
  */
 package org.sonar.persistence;
 
+import org.apache.commons.dbcp.BasicDataSource;
 import org.hamcrest.core.Is;
 import org.junit.Test;
 import org.sonar.api.config.Settings;
 
+import java.sql.DriverManager;
+import java.sql.SQLException;
 import java.util.Properties;
 
 import static org.junit.Assert.assertThat;
@@ -52,28 +55,24 @@ public class DefaultDatabaseTest {
   }
 
   @Test
-  public void shouldGetCommonsDbcpProperties() {
-    Settings settings = new Settings();
-    settings.setProperty("sonar.jdbc.driverClassName", "my.Driver");
-    settings.setProperty("sonar.jdbc.username", "me");
-    settings.setProperty("sonar.jdbc.maxActive", "5");
-
-    DefaultDatabase db = new DefaultDatabase(settings);
-    Properties props = db.getCommonsDbcpProperties();
+  public void shouldExtractCommonsDbcpProperties() {
+    Properties props = new Properties();
+    props.setProperty("sonar.jdbc.driverClassName", "my.Driver");
+    props.setProperty("sonar.jdbc.username", "me");
+    props.setProperty("sonar.jdbc.maxActive", "5");
 
-    assertThat(props.getProperty("username"), Is.is("me"));
-    assertThat(props.getProperty("driverClassName"), Is.is("my.Driver"));
-    assertThat(props.getProperty("maxActive"), Is.is("5"));
+    Properties commonsDbcpProps = DefaultDatabase.extractCommonsDbcpProperties(props);
 
-    // default value
-    assertThat(props.getProperty("password"), Is.is("sonar"));
+    assertThat(commonsDbcpProps.getProperty("username"), Is.is("me"));
+    assertThat(commonsDbcpProps.getProperty("driverClassName"), Is.is("my.Driver"));
+    assertThat(commonsDbcpProps.getProperty("maxActive"), Is.is("5"));
   }
 
   @Test
   public void shouldCompleteProperties() {
     Settings settings = new Settings();
 
-    DefaultDatabase db = new DefaultDatabase(settings){
+    DefaultDatabase db = new DefaultDatabase(settings) {
       @Override
       protected void doCompleteProperties(Properties properties) {
         properties.setProperty("sonar.jdbc.maxActive", "2");
@@ -84,4 +83,28 @@ public class DefaultDatabaseTest {
 
     assertThat(props.getProperty("sonar.jdbc.maxActive"), Is.is("2"));
   }
+
+  @Test
+  public void shouldStart() throws SQLException {
+    Settings settings = new Settings();
+    settings.setProperty("sonar.jdbc.url", "jdbc:derby:memory:sonar;create=true;user=sonar;password=sonar");
+    settings.setProperty("sonar.jdbc.driverClassName", "org.apache.derby.jdbc.EmbeddedDriver");
+    settings.setProperty("sonar.jdbc.username", "sonar");
+    settings.setProperty("sonar.jdbc.password", "sonar");
+    settings.setProperty("sonar.jdbc.maxActive", "1");
+
+    try {
+      DefaultDatabase db = new DefaultDatabase(settings);
+      db.start();
+
+      assertThat(db.getDialect().getId(), Is.is("derby"));
+      assertThat(((BasicDataSource) db.getDataSource()).getMaxActive(), Is.is(1));
+    } finally {
+      try {
+        DriverManager.getConnection("jdbc:derby:memory:sonar;drop=true");
+      } catch (Exception e) {
+        // silently ignore
+      }
+    }
+  }
 }
index 1ad12af6cd1863ea8bb425e6387e321881e154ce..281418de6b7b58afb2f12e3328c9a093013015e6 100644 (file)
@@ -47,6 +47,7 @@ import org.sonar.jpa.dao.MeasuresDao;
 import org.sonar.jpa.dao.ProfilesDao;
 import org.sonar.jpa.dao.RulesDao;
 import org.sonar.jpa.session.*;
+import org.sonar.persistence.DatabaseMigrator;
 import org.sonar.persistence.DefaultDatabase;
 import org.sonar.persistence.MyBatis;
 import org.sonar.server.charts.ChartFactory;
@@ -125,6 +126,7 @@ public final class Platform {
     rootContainer.addSingleton(MyBatis.class);
     rootContainer.addSingleton(DefaultDatabaseConnector.class);
     rootContainer.addSingleton(DefaultServerUpgradeStatus.class);
+    rootContainer.addSingleton(DatabaseMigrator.class);
     rootContainer.startComponents();
   }
 
index e4747e37a89dd04bbf19f119f56d911858a6d2db..7e01bb368d277ad3b43c4b957d65b63ed93694e4 100644 (file)
@@ -37,6 +37,8 @@ import org.sonar.core.i18n.RuleI18nManager;
 import org.sonar.jpa.dialect.Dialect;
 import org.sonar.jpa.session.DatabaseConnector;
 import org.sonar.markdown.Markdown;
+import org.sonar.persistence.Database;
+import org.sonar.persistence.DatabaseMigrator;
 import org.sonar.server.platform.ServerSettings;
 import org.sonar.server.configuration.Backup;
 import org.sonar.server.configuration.ProfilesManager;
@@ -171,9 +173,13 @@ public final class JRubyFacade {
   public Collection<Language> getLanguages() {
     return getContainer().getComponentsByType(Language.class);
   }
-
+  
   public Dialect getDialect() {
-    return getContainer().getComponentByType(DatabaseConnector.class).getDialect();
+    return getContainer().getComponentByType(Database.class).getDialect();
+  }
+
+  public boolean createDatabase() {
+    return getContainer().getComponentByType(DatabaseMigrator.class).createDatabase();
   }
 
   /* PROFILES CONSOLE : RULES AND METRIC THRESHOLDS */
index 752c79ebff3125be107be981760af79e584d3123..ab8f7317bc0193f61b65f7fb07176d116b289eb8 100644 (file)
@@ -1,5 +1,17 @@
-Don't forget that index name limited to 30 characters in Oracle DB.
+HOW TO ADD A MIGRATION
 
-Prefer to add nullable columns to avoid problems during migration.
+* Jump some versions when adding the first Ruby on Rails migration of a new sonar version. For example if sonar 2.10 is 193, then sonar 2.11 should start at 200.
+* Complete the DDL files for Derby :
+  + sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl
+  + complete sonar-core/src/main/resources/org/sonar/persistence/rows-derby.ddl :
+    - add "INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('<THE MIGRATION ID>')"
+* Update the migration id defined in sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java
+* To be removed soon : complete sonar-testing-harness/src/main/resources/org/sonar/test/persistence/sonar-test.ddl
 
-After adding migration script - don't forget to update sonar-core/src/main/java/org/sonar/jpa/entity/SchemaMigration.java and ../structure/derby.*
+
+
+
+RECOMMANDATIONS
+
+* Don't forget that index name limited to 30 characters in Oracle DB.
+* Prefer to add nullable columns to avoid problems during migration.
\ No newline at end of file
diff --git a/sonar-server/src/main/webapp/WEB-INF/db/structure/derby.ddl b/sonar-server/src/main/webapp/WEB-INF/db/structure/derby.ddl
deleted file mode 100644 (file)
index 2594c90..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
--- Structure of version 2.11
-
--- This file has been generated manually :
---   1. start sonar with property sonar.useStructureDump=false
---   2. execute $DERBY_HOME/bin/dblook -d 'jdbc:derby://localhost:1527/sonar;user=sonar;password=sonar' -o /derby.ddl
---   3. copy the generated derby.ddl into this file
-
-CREATE TABLE "SONAR"."QUALITY_MODELS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(100));
-
-CREATE TABLE "SONAR"."GROUPS_USERS" ("USER_ID" INTEGER, "GROUP_ID" INTEGER);
-
-CREATE TABLE "SONAR"."CHARACTERISTIC_EDGES" ("CHILD_ID" INTEGER, "PARENT_ID" INTEGER);
-
-CREATE TABLE "SONAR"."CRITERIA" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "FILTER_ID" INTEGER, "FAMILY" VARCHAR(100), "KEE" VARCHAR(100), "OPERATOR" VARCHAR(20), "VALUE" DECIMAL(30,20), "TEXT_VALUE" VARCHAR(256), "VARIATION" SMALLINT);
-
-CREATE TABLE "SONAR"."DEPENDENCIES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "FROM_SNAPSHOT_ID" INTEGER, "FROM_RESOURCE_ID" INTEGER, "TO_SNAPSHOT_ID" INTEGER, "TO_RESOURCE_ID" INTEGER, "DEP_USAGE" VARCHAR(30), "DEP_WEIGHT" INTEGER, "PROJECT_SNAPSHOT_ID" INTEGER, "PARENT_DEPENDENCY_ID" BIGINT, "FROM_SCOPE" VARCHAR(3), "TO_SCOPE" VARCHAR(3));
-
-CREATE TABLE "SONAR"."CHARACTERISTICS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "QUALITY_MODEL_ID" INTEGER, "KEE" VARCHAR(100), "NAME" VARCHAR(100), "RULE_ID" INTEGER, "DEPTH" INTEGER, "CHARACTERISTIC_ORDER" INTEGER, "DESCRIPTION" VARCHAR(4000), "ENABLED" SMALLINT);
-
-CREATE TABLE "SONAR"."RULES_PARAMETERS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "RULE_ID" INTEGER NOT NULL, "NAME" VARCHAR(128) NOT NULL, "PARAM_TYPE" VARCHAR(512) NOT NULL, "DEFAULT_VALUE" VARCHAR(4000), "DESCRIPTION" VARCHAR(4000));
-
-CREATE TABLE "SONAR"."RULES_PROFILES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(100) NOT NULL, "DEFAULT_PROFILE" SMALLINT DEFAULT 0, "PROVIDED" SMALLINT NOT NULL DEFAULT 0, "LANGUAGE" VARCHAR(16), "PARENT_NAME" VARCHAR(100), "ENABLED" SMALLINT NOT NULL DEFAULT 1, "VERSION" INTEGER DEFAULT 1, "USED_PROFILE" SMALLINT DEFAULT 0);
-
-CREATE TABLE "SONAR"."WIDGETS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "DASHBOARD_ID" INTEGER NOT NULL, "WIDGET_KEY" VARCHAR(256) NOT NULL, "NAME" VARCHAR(256), "DESCRIPTION" VARCHAR(1000), "COLUMN_INDEX" INTEGER, "ROW_INDEX" INTEGER, "CONFIGURED" SMALLINT, "CREATED_AT" TIMESTAMP, "UPDATED_AT" TIMESTAMP);
-
-CREATE TABLE "SONAR"."FILTER_COLUMNS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "FILTER_ID" INTEGER, "FAMILY" VARCHAR(100), "KEE" VARCHAR(100), "SORT_DIRECTION" VARCHAR(5), "ORDER_INDEX" INTEGER, "VARIATION" SMALLINT);
-
-CREATE TABLE "SONAR"."MEASURE_DATA" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "MEASURE_ID" INTEGER, "SNAPSHOT_ID" INTEGER, "DATA" BLOB(2147483647));
-
-CREATE TABLE "SONAR"."GROUPS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(40), "DESCRIPTION" VARCHAR(200), "CREATED_AT" TIMESTAMP, "UPDATED_AT" TIMESTAMP);
-
-CREATE TABLE "SONAR"."ACTIVE_RULE_PARAM_CHANGES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "ACTIVE_RULE_CHANGE_ID" INTEGER NOT NULL, "RULES_PARAMETER_ID" INTEGER NOT NULL, "OLD_VALUE" VARCHAR(4000), "NEW_VALUE" VARCHAR(4000));
-
-CREATE TABLE "SONAR"."SNAPSHOTS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "CREATED_AT" TIMESTAMP, "PROJECT_ID" INTEGER NOT NULL, "PARENT_SNAPSHOT_ID" INTEGER, "STATUS" VARCHAR(4) NOT NULL DEFAULT 'U', "ISLAST" SMALLINT NOT NULL DEFAULT 0, "SCOPE" VARCHAR(3), "QUALIFIER" VARCHAR(3), "ROOT_SNAPSHOT_ID" INTEGER, "VERSION" VARCHAR(60), "PATH" VARCHAR(96), "DEPTH" INTEGER, "ROOT_PROJECT_ID" INTEGER, "PERIOD1_MODE" VARCHAR(100), "PERIOD1_PARAM" VARCHAR(100), "PERIOD1_DATE" TIMESTAMP, "PERIOD2_MODE" VARCHAR(100), "PERIOD2_PARAM" VARCHAR(100), "PERIOD2_DATE" TIMESTAMP, "PERIOD3_MODE" VARCHAR(100), "PERIOD3_PARAM" VARCHAR(100), "PERIOD3_DATE" TIMESTAMP, "PERIOD4_MODE" VARCHAR(100), "PERIOD4_PARAM" VARCHAR(100), "PERIOD4_DATE" TIMESTAMP, "PERIOD5_MODE" VARCHAR(100), "PERIOD5_PARAM" VARCHAR(100), "PERIOD5_DATE" TIMESTAMP);
-
-CREATE TABLE "SONAR"."SCHEMA_MIGRATIONS" ("VERSION" VARCHAR(256) NOT NULL);
-
-CREATE TABLE "SONAR"."GROUP_ROLES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "GROUP_ID" INTEGER, "RESOURCE_ID" INTEGER, "ROLE" VARCHAR(64) NOT NULL);
-
-CREATE TABLE "SONAR"."RULES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "PLUGIN_RULE_KEY" VARCHAR(200) NOT NULL, "PLUGIN_NAME" VARCHAR(255) NOT NULL, "DESCRIPTION" CLOB(2147483647), "PRIORITY" INTEGER, "ENABLED" SMALLINT, "CARDINALITY" VARCHAR(10), "PARENT_ID" INTEGER, "PLUGIN_CONFIG_KEY" VARCHAR(500), "NAME" VARCHAR(200));
-
-CREATE TABLE "SONAR"."WIDGET_PROPERTIES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "WIDGET_ID" INTEGER NOT NULL, "KEE" VARCHAR(100), "TEXT_VALUE" VARCHAR(4000), "VALUE_TYPE" VARCHAR(20));
-
-CREATE TABLE "SONAR"."EVENTS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(50), "RESOURCE_ID" INTEGER, "SNAPSHOT_ID" INTEGER, "CATEGORY" VARCHAR(50), "EVENT_DATE" TIMESTAMP, "CREATED_AT" TIMESTAMP, "DESCRIPTION" VARCHAR(3072), "DATA" VARCHAR(4000));
-
-CREATE TABLE "SONAR"."ALERTS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "PROFILE_ID" INTEGER, "METRIC_ID" INTEGER, "OPERATOR" VARCHAR(3), "VALUE_ERROR" VARCHAR(64), "VALUE_WARNING" VARCHAR(64));
-
-CREATE TABLE "SONAR"."PROPERTIES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "PROP_KEY" VARCHAR(512), "RESOURCE_ID" INTEGER, "TEXT_VALUE" CLOB(2147483647), "USER_ID" INTEGER);
-
-CREATE TABLE "SONAR"."PROJECT_LINKS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "PROJECT_ID" INTEGER NOT NULL, "LINK_TYPE" VARCHAR(20), "NAME" VARCHAR(128), "HREF" VARCHAR(2048) NOT NULL);
-
-CREATE TABLE "SONAR"."DUPLICATIONS_INDEX" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "PROJECT_SNAPSHOT_ID" INTEGER NOT NULL, "SNAPSHOT_ID" INTEGER NOT NULL, "HASH" VARCHAR(50) NOT NULL, "INDEX_IN_FILE" INTEGER NOT NULL, "START_LINE" INTEGER NOT NULL, "END_LINE" INTEGER NOT NULL);
-
-CREATE TABLE "SONAR"."REVIEW_COMMENTS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "CREATED_AT" TIMESTAMP, "UPDATED_AT" TIMESTAMP, "REVIEW_ID" INTEGER, "USER_ID" INTEGER, "REVIEW_TEXT" CLOB(2147483647));
-
-CREATE TABLE "SONAR"."ACTIVE_RULE_CHANGES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "USER_NAME" VARCHAR(200) NOT NULL, "PROFILE_ID" INTEGER NOT NULL, "PROFILE_VERSION" INTEGER NOT NULL, "RULE_ID" INTEGER NOT NULL, "CHANGE_DATE" TIMESTAMP NOT NULL, "ENABLED" SMALLINT, "OLD_SEVERITY" INTEGER, "NEW_SEVERITY" INTEGER);
-
-CREATE TABLE "SONAR"."PROJECT_MEASURES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "VALUE" DECIMAL(30,20), "METRIC_ID" INTEGER NOT NULL, "SNAPSHOT_ID" INTEGER, "RULE_ID" INTEGER, "RULES_CATEGORY_ID" INTEGER, "TEXT_VALUE" VARCHAR(96), "TENDENCY" INTEGER, "MEASURE_DATE" TIMESTAMP, "PROJECT_ID" INTEGER, "ALERT_STATUS" VARCHAR(5), "ALERT_TEXT" VARCHAR(4000), "URL" VARCHAR(2000), "DESCRIPTION" VARCHAR(4000), "RULE_PRIORITY" INTEGER, "CHARACTERISTIC_ID" INTEGER, "VARIATION_VALUE_1" DECIMAL(30,20), "VARIATION_VALUE_2" DECIMAL(30,20), "VARIATION_VALUE_3" DECIMAL(30,20), "VARIATION_VALUE_4" DECIMAL(30,20), "VARIATION_VALUE_5" DECIMAL(30,20));
-
-CREATE TABLE "SONAR"."SNAPSHOT_SOURCES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "SNAPSHOT_ID" INTEGER NOT NULL, "DATA" CLOB(2147483647));
-
-CREATE TABLE "SONAR"."PROJECTS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(256), "DESCRIPTION" VARCHAR(2000), "ENABLED" SMALLINT NOT NULL DEFAULT 1, "SCOPE" VARCHAR(3), "QUALIFIER" VARCHAR(3), "KEE" VARCHAR(400), "ROOT_ID" INTEGER, "PROFILE_ID" INTEGER, "LANGUAGE" VARCHAR(5), "COPY_RESOURCE_ID" INTEGER, "LONG_NAME" VARCHAR(256));
-
-CREATE TABLE "SONAR"."REVIEWS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "CREATED_AT" TIMESTAMP, "UPDATED_AT" TIMESTAMP, "USER_ID" INTEGER, "ASSIGNEE_ID" INTEGER, "TITLE" VARCHAR(500), "STATUS" VARCHAR(10), "SEVERITY" VARCHAR(10), "RULE_FAILURE_PERMANENT_ID" INTEGER, "PROJECT_ID" INTEGER, "RESOURCE_ID" INTEGER, "RESOURCE_LINE" INTEGER, "RESOLUTION" VARCHAR(200));
-
-CREATE TABLE "SONAR"."RULES_CATEGORIES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(255) NOT NULL, "DESCRIPTION" VARCHAR(1000) NOT NULL);
-
-CREATE TABLE "SONAR"."ACTIVE_FILTERS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "FILTER_ID" INTEGER, "USER_ID" INTEGER, "ORDER_INDEX" INTEGER);
-
-CREATE TABLE "SONAR"."MANUAL_MEASURES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "METRIC_ID" INTEGER NOT NULL, "RESOURCE_ID" INTEGER, "VALUE" DECIMAL(30,20), "TEXT_VALUE" VARCHAR(4000), "USER_LOGIN" VARCHAR(40), "DESCRIPTION" VARCHAR(4000), "CREATED_AT" TIMESTAMP, "UPDATED_AT" TIMESTAMP);
-
-CREATE TABLE "SONAR"."ACTIVE_RULES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "PROFILE_ID" INTEGER NOT NULL, "RULE_ID" INTEGER NOT NULL, "FAILURE_LEVEL" INTEGER NOT NULL, "INHERITANCE" VARCHAR(10));
-
-CREATE TABLE "SONAR"."NOTIFICATIONS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "CREATED_AT" TIMESTAMP, "DATA" BLOB(2147483647));
-
-CREATE TABLE "SONAR"."USER_ROLES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "USER_ID" INTEGER, "RESOURCE_ID" INTEGER, "ROLE" VARCHAR(64) NOT NULL);
-
-CREATE TABLE "SONAR"."ACTIVE_DASHBOARDS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "DASHBOARD_ID" INTEGER NOT NULL, "USER_ID" INTEGER, "ORDER_INDEX" INTEGER);
-
-CREATE TABLE "SONAR"."ACTIVE_RULE_PARAMETERS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "ACTIVE_RULE_ID" INTEGER NOT NULL, "RULES_PARAMETER_ID" INTEGER NOT NULL, "VALUE" VARCHAR(4000));
-
-CREATE TABLE "SONAR"."CHARACTERISTIC_PROPERTIES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "CHARACTERISTIC_ID" INTEGER, "KEE" VARCHAR(100), "VALUE" DECIMAL(30,20), "TEXT_VALUE" VARCHAR(4000));
-
-CREATE TABLE "SONAR"."USERS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "LOGIN" VARCHAR(40), "NAME" VARCHAR(200), "EMAIL" VARCHAR(100), "CRYPTED_PASSWORD" VARCHAR(40), "SALT" VARCHAR(40), "CREATED_AT" TIMESTAMP, "UPDATED_AT" TIMESTAMP, "REMEMBER_TOKEN" VARCHAR(500), "REMEMBER_TOKEN_EXPIRES_AT" TIMESTAMP);
-
-CREATE TABLE "SONAR"."FILTERS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(100), "USER_ID" INTEGER, "SHARED" SMALLINT, "FAVOURITES" SMALLINT, "RESOURCE_ID" INTEGER, "DEFAULT_VIEW" VARCHAR(20), "PAGE_SIZE" INTEGER, "PERIOD_INDEX" INTEGER);
-
-CREATE TABLE "SONAR"."DASHBOARDS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "USER_ID" INTEGER, "NAME" VARCHAR(256), "DESCRIPTION" VARCHAR(1000), "COLUMN_LAYOUT" VARCHAR(20), "SHARED" SMALLINT, "CREATED_AT" TIMESTAMP, "UPDATED_AT" TIMESTAMP);
-
-CREATE TABLE "SONAR"."RULE_FAILURES" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "SNAPSHOT_ID" INTEGER NOT NULL, "RULE_ID" INTEGER NOT NULL, "FAILURE_LEVEL" INTEGER NOT NULL, "MESSAGE" VARCHAR(4000), "LINE" INTEGER, "COST" DECIMAL(30,20), "CREATED_AT" TIMESTAMP, "CHECKSUM" VARCHAR(1000), "PERMANENT_ID" INTEGER, "SWITCHED_OFF" SMALLINT);
-
-CREATE TABLE "SONAR"."METRICS" ("ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1), "NAME" VARCHAR(64) NOT NULL, "DESCRIPTION" VARCHAR(255), "DIRECTION" INTEGER NOT NULL DEFAULT 0, "DOMAIN" VARCHAR(64), "SHORT_NAME" VARCHAR(64), "QUALITATIVE" SMALLINT NOT NULL DEFAULT 0, "VAL_TYPE" VARCHAR(8), "USER_MANAGED" SMALLINT DEFAULT 0, "ENABLED" SMALLINT DEFAULT 1, "ORIGIN" VARCHAR(3), "WORST_VALUE" DECIMAL(30,20), "BEST_VALUE" DECIMAL(30,20), "OPTIMIZED_BEST_VALUE" SMALLINT, "HIDDEN" SMALLINT);
-
--- ----------------------------------------------
--- DDL Statements for indexes
--- ----------------------------------------------
-
-CREATE INDEX "SONAR"."GROUP_ROLES_RESOURCE" ON "SONAR"."GROUP_ROLES" ("RESOURCE_ID");
-
-CREATE INDEX "SONAR"."GROUP_ROLES_GROUP" ON "SONAR"."GROUP_ROLES" ("GROUP_ID");
-
-CREATE INDEX "SONAR"."USER_ROLES_RESOURCE" ON "SONAR"."USER_ROLES" ("RESOURCE_ID");
-
-CREATE INDEX "SONAR"."USER_ROLES_USER" ON "SONAR"."USER_ROLES" ("USER_ID");
-
-CREATE INDEX "SONAR"."DUPLICATIONS_INDEX_HASH" ON "SONAR"."DUPLICATIONS_INDEX" ("HASH");
-
-CREATE INDEX "SONAR"."DUPLICATIONS_INDEX_SID" ON "SONAR"."DUPLICATIONS_INDEX" ("SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."DUPLICATIONS_INDEX_PSID" ON "SONAR"."DUPLICATIONS_INDEX" ("PROJECT_SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."SNAP_SOURCES_SNAPSHOT_ID" ON "SONAR"."SNAPSHOT_SOURCES" ("SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."INDEX_GROUPS_USERS_ON_GROUP_ID" ON "SONAR"."GROUPS_USERS" ("GROUP_ID");
-
-CREATE INDEX "SONAR"."INDEX_GROUPS_USERS_ON_USER_ID" ON "SONAR"."GROUPS_USERS" ("USER_ID");
-
-CREATE INDEX "SONAR"."DEPS_TO_SID" ON "SONAR"."DEPENDENCIES" ("TO_SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."DEPS_FROM_SID" ON "SONAR"."DEPENDENCIES" ("FROM_SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."MEASURES_SID_METRIC" ON "SONAR"."PROJECT_MEASURES" ("SNAPSHOT_ID", "METRIC_ID");
-
-CREATE INDEX "SONAR"."ACTIVE_RULE_CHANGES_PID" ON "SONAR"."ACTIVE_RULE_CHANGES" ("PROFILE_ID");
-
-CREATE INDEX "SONAR"."CHARACTERISTIC_PROPERTIES_CID" ON "SONAR"."CHARACTERISTIC_PROPERTIES" ("CHARACTERISTIC_ID");
-
-CREATE UNIQUE INDEX "SONAR"."METRICS_UNIQUE_NAME" ON "SONAR"."METRICS" ("NAME");
-
-CREATE INDEX "SONAR"."ACTIVE_RULE_PARAM_CHANGES_CID" ON "SONAR"."ACTIVE_RULE_PARAM_CHANGES" ("ACTIVE_RULE_CHANGE_ID");
-
-CREATE INDEX "SONAR"."M_DATA_SID" ON "SONAR"."MEASURE_DATA" ("SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."MEASURE_DATA_MEASURE_ID" ON "SONAR"."MEASURE_DATA" ("MEASURE_ID");
-
-CREATE INDEX "SONAR"."RF_PERMANENT_ID" ON "SONAR"."RULE_FAILURES" ("PERMANENT_ID");
-
-CREATE INDEX "SONAR"."RULE_FAILURE_RULE_ID" ON "SONAR"."RULE_FAILURES" ("RULE_ID");
-
-CREATE INDEX "SONAR"."RULE_FAILURE_SNAPSHOT_ID" ON "SONAR"."RULE_FAILURES" ("SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."EVENTS_SNAPSHOT_ID" ON "SONAR"."EVENTS" ("SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."EVENTS_RESOURCE_ID" ON "SONAR"."EVENTS" ("RESOURCE_ID");
-
-CREATE INDEX "SONAR"."WIDGETS_WIDGETKEY" ON "SONAR"."WIDGETS" ("WIDGET_KEY");
-
-CREATE INDEX "SONAR"."WIDGETS_DASHBOARDS" ON "SONAR"."WIDGETS" ("DASHBOARD_ID");
-
-CREATE INDEX "SONAR"."SNAPSHOTS_QUALIFIER" ON "SONAR"."SNAPSHOTS" ("QUALIFIER");
-
-CREATE INDEX "SONAR"."SNAPSHOTS_ROOT" ON "SONAR"."SNAPSHOTS" ("ROOT_SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."SNAPSHOTS_PARENT" ON "SONAR"."SNAPSHOTS" ("PARENT_SNAPSHOT_ID");
-
-CREATE INDEX "SONAR"."SNAPSHOT_PROJECT_ID" ON "SONAR"."SNAPSHOTS" ("PROJECT_ID");
-
-CREATE INDEX "SONAR"."RULES_PARAMETERS_RULE_ID" ON "SONAR"."RULES_PARAMETERS" ("RULE_ID");
-
-CREATE INDEX "SONAR"."ACTIVE_DASHBOARDS_DASHBOARDID" ON "SONAR"."ACTIVE_DASHBOARDS" ("DASHBOARD_ID");
-
-CREATE INDEX "SONAR"."ACTIVE_DASHBOARDS_USERID" ON "SONAR"."ACTIVE_DASHBOARDS" ("USER_ID");
-
-CREATE UNIQUE INDEX "SONAR"."UNIQUE_SCHEMA_MIGRATIONS" ON "SONAR"."SCHEMA_MIGRATIONS" ("VERSION");
-
-CREATE INDEX "SONAR"."WIDGET_PROPERTIES_WIDGETS" ON "SONAR"."WIDGET_PROPERTIES" ("WIDGET_ID");
-
-CREATE INDEX "SONAR"."PROPERTIES_KEY" ON "SONAR"."PROPERTIES" ("PROP_KEY");
-
-CREATE INDEX "SONAR"."MANUAL_MEASURES_RESOURCE_ID" ON "SONAR"."MANUAL_MEASURES" ("RESOURCE_ID");
-
-CREATE INDEX "SONAR"."PROJECTS_KEE" ON "SONAR"."PROJECTS" ("KEE");
-
--- ----------------------------------------------
--- DDL Statements for keys
--- ----------------------------------------------
-
--- primary/unique
-ALTER TABLE "SONAR"."GROUP_ROLES" ADD CONSTRAINT "SQL110927104437910" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."REVIEWS" ADD CONSTRAINT "SQL110927104440700" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."RULES" ADD CONSTRAINT "SQL110927104437080" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."USER_ROLES" ADD CONSTRAINT "SQL110927104437940" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."DUPLICATIONS_INDEX" ADD CONSTRAINT "SQL110927104441080" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."SNAPSHOT_SOURCES" ADD CONSTRAINT "SQL110927104437590" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."NOTIFICATIONS" ADD CONSTRAINT "SQL110927104441030" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."RULES_CATEGORIES" ADD CONSTRAINT "SQL110927104437060" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."DEPENDENCIES" ADD CONSTRAINT "SQL110927104438330" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."PROJECT_MEASURES" ADD CONSTRAINT "SQL110927104437040" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."ACTIVE_RULE_CHANGES" ADD CONSTRAINT "SQL110927104440770" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."CHARACTERISTIC_PROPERTIES" ADD CONSTRAINT "SQL110927104439660" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."QUALITY_MODELS" ADD CONSTRAINT "SQL110927104439440" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."USERS" ADD CONSTRAINT "SQL110927104437310" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."CRITERIA" ADD CONSTRAINT "SQL110927104438720" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."METRICS" ADD CONSTRAINT "SQL110927104436990" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."ACTIVE_RULE_PARAM_CHANGES" ADD CONSTRAINT "SQL110927104440790" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."MEASURE_DATA" ADD CONSTRAINT "SQL110927104437810" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."RULE_FAILURES" ADD CONSTRAINT "SQL110927104437100" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."EVENTS" ADD CONSTRAINT "SQL110927104437690" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."WIDGETS" ADD CONSTRAINT "SQL110927104439750" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."SNAPSHOTS" ADD CONSTRAINT "SQL110927104436960" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."ACTIVE_RULES" ADD CONSTRAINT "SQL110927104437550" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."CHARACTERISTICS" ADD CONSTRAINT "SQL110927104439450" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."RULES_PARAMETERS" ADD CONSTRAINT "SQL110927104437130" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."ACTIVE_FILTERS" ADD CONSTRAINT "SQL110927104438740" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."ACTIVE_DASHBOARDS" ADD CONSTRAINT "SQL110927104439710" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."FILTER_COLUMNS" ADD CONSTRAINT "SQL110927104438710" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."REVIEW_COMMENTS" ADD CONSTRAINT "SQL110927104440710" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."WIDGET_PROPERTIES" ADD CONSTRAINT "SQL110927104439770" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."PROPERTIES" ADD CONSTRAINT "SQL110927104437750" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."DASHBOARDS" ADD CONSTRAINT "SQL110927104439740" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."GROUPS" ADD CONSTRAINT "SQL110927104437850" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."PROJECT_LINKS" ADD CONSTRAINT "SQL110927104437150" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."FILTERS" ADD CONSTRAINT "SQL110927104438690" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."MANUAL_MEASURES" ADD CONSTRAINT "SQL110927104440930" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."ALERTS" ADD CONSTRAINT "SQL110927104437730" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."PROJECTS" ADD CONSTRAINT "SQL110927104436930" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."RULES_PROFILES" ADD CONSTRAINT "SQL110927104437540" PRIMARY KEY ("ID");
-
-ALTER TABLE "SONAR"."ACTIVE_RULE_PARAMETERS" ADD CONSTRAINT "SQL110927104437560" PRIMARY KEY ("ID");
\ No newline at end of file
diff --git a/sonar-server/src/main/webapp/WEB-INF/db/structure/derby.sql b/sonar-server/src/main/webapp/WEB-INF/db/structure/derby.sql
deleted file mode 100644 (file)
index b939fe8..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
--- Version 2.11
-
--- All the rows inserted during Rails migrations. Rows inserted during server startup tasks (Java) are excluded : rules, profiles, metrics, ...
--- Note: do not split a request on multiple lines.
-INSERT INTO SONAR.ACTIVE_DASHBOARDS(ID, DASHBOARD_ID, USER_ID, ORDER_INDEX) VALUES (1, 1, null, 1);
-ALTER TABLE SONAR.ACTIVE_DASHBOARDS ALTER COLUMN ID RESTART WITH 2;
-
-INSERT INTO SONAR.ACTIVE_FILTERS(ID, FILTER_ID, USER_ID, ORDER_INDEX) VALUES (1, 1, null, 1);
-INSERT INTO SONAR.ACTIVE_FILTERS(ID, FILTER_ID, USER_ID, ORDER_INDEX) VALUES (2, 2, null, 2);
-INSERT INTO SONAR.ACTIVE_FILTERS(ID, FILTER_ID, USER_ID, ORDER_INDEX) VALUES (3, 3, null, 3);
-ALTER TABLE SONAR.ACTIVE_FILTERS ALTER COLUMN ID RESTART WITH 4;
-
-INSERT INTO SONAR.CRITERIA(ID, FILTER_ID, FAMILY, KEE, OPERATOR, VALUE, TEXT_VALUE, VARIATION) VALUES (1, 1, 'qualifier', null, '=', null, 'TRK', null);
-INSERT INTO SONAR.CRITERIA(ID, FILTER_ID, FAMILY, KEE, OPERATOR, VALUE, TEXT_VALUE, VARIATION) VALUES (2, 2, 'qualifier', null, '=', null, 'TRK', null);
-INSERT INTO SONAR.CRITERIA(ID, FILTER_ID, FAMILY, KEE, OPERATOR, VALUE, TEXT_VALUE, VARIATION) VALUES (3, 3, 'qualifier', null, '=', null, 'VW,SVW,TRK,BRC,DIR,PAC,FIL,CLA,UTS,LIB', null);
-ALTER TABLE SONAR.CRITERIA ALTER COLUMN ID RESTART WITH 4;
-
-INSERT INTO SONAR.DASHBOARDS(ID, USER_ID, NAME, DESCRIPTION, COLUMN_LAYOUT, SHARED, CREATED_AT, UPDATED_AT) VALUES (1, null, 'Dashboard', 'Default dashboard', '50%-50%', 1, '2011-09-26 22:27:55.0', '2011-09-26 22:27:55.0');
-ALTER TABLE SONAR.DASHBOARDS ALTER COLUMN ID RESTART WITH 2;
-
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (1, 1, 'metric', 'alert_status', null, 1, null);
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (2, 1, 'name', null, 'ASC', 2, null);
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (3, 1, 'version', null, null, 3, null);
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (4, 1, 'metric', 'ncloc', null, 4, null);
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (5, 1, 'metric', 'violations_density', null, 5, null);
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (6, 1, 'date', null, null, 6, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (7, 1, 'links', null, null, 7, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (8, 2, 'name', null, 'ASC', 1, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (9, 2, 'metric', 'ncloc', null, 2, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (10, 2, 'metric', 'violations_density', null, 3, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (11, 3, 'metric', 'alert_status', null, 1, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (12, 3, 'name', null, 'ASC', 2, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (13, 3, 'metric', 'ncloc', null, 3, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (14, 3, 'metric', 'violations_density', null, 4, null)
-INSERT INTO SONAR.FILTER_COLUMNS(ID, FILTER_ID, FAMILY, KEE, SORT_DIRECTION, ORDER_INDEX, VARIATION) VALUES (15, 3, 'date', null, null, 5, null)
-ALTER TABLE SONAR.FILTER_COLUMNS ALTER COLUMN ID RESTART WITH 16;
-
-INSERT INTO SONAR.FILTERS(ID, NAME, USER_ID, SHARED, FAVOURITES, RESOURCE_ID, DEFAULT_VIEW, PAGE_SIZE, PERIOD_INDEX) VALUES (1, 'Projects', null, 1, 0, null, 'list', null, null)
-INSERT INTO SONAR.FILTERS(ID, NAME, USER_ID, SHARED, FAVOURITES, RESOURCE_ID, DEFAULT_VIEW, PAGE_SIZE, PERIOD_INDEX) VALUES (2, 'Treemap', null, 1, 0, null, 'treemap', null, null)
-INSERT INTO SONAR.FILTERS(ID, NAME, USER_ID, SHARED, FAVOURITES, RESOURCE_ID, DEFAULT_VIEW, PAGE_SIZE, PERIOD_INDEX) VALUES (3, 'My favourites', null, 1, 1, null, 'list', null, null)
-ALTER TABLE SONAR.FILTERS ALTER COLUMN ID RESTART WITH 4;
-
-INSERT INTO SONAR.GROUP_ROLES(ID, GROUP_ID, RESOURCE_ID, ROLE) VALUES (1, 1, null, 'admin')
-INSERT INTO SONAR.GROUP_ROLES(ID, GROUP_ID, RESOURCE_ID, ROLE) VALUES (2, 1, null, 'default-admin')
-INSERT INTO SONAR.GROUP_ROLES(ID, GROUP_ID, RESOURCE_ID, ROLE) VALUES (3, 2, null, 'default-user')
-INSERT INTO SONAR.GROUP_ROLES(ID, GROUP_ID, RESOURCE_ID, ROLE) VALUES (4, null, null, 'default-user')
-INSERT INTO SONAR.GROUP_ROLES(ID, GROUP_ID, RESOURCE_ID, ROLE) VALUES (5, 2, null, 'default-codeviewer')
-INSERT INTO SONAR.GROUP_ROLES(ID, GROUP_ID, RESOURCE_ID, ROLE) VALUES (6, null, null, 'default-codeviewer')
-ALTER TABLE SONAR.GROUP_ROLES ALTER COLUMN ID RESTART WITH 7;
-
-INSERT INTO SONAR.GROUPS(ID, NAME, DESCRIPTION, CREATED_AT, UPDATED_AT) VALUES (1, 'sonar-administrators', 'System administrators', '2011-09-26 22:27:51.0', '2011-09-26 22:27:51.0')
-INSERT INTO SONAR.GROUPS(ID, NAME, DESCRIPTION, CREATED_AT, UPDATED_AT) VALUES (2, 'sonar-users', 'Any new users created will automatically join this group', '2011-09-26 22:27:51.0', '2011-09-26 22:27:51.0')
-ALTER TABLE SONAR.GROUPS ALTER COLUMN ID RESTART WITH 3;
-
-INSERT INTO SONAR.GROUPS_USERS(USER_ID, GROUP_ID) VALUES (1, 1)
-INSERT INTO SONAR.GROUPS_USERS(USER_ID, GROUP_ID) VALUES (1, 2)
-
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('1')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('2')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('10')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('11')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('13')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('14')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('16')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('35')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('36')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('39')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('41')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('46')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('48')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('49')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('51')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('52')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('53')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('54')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('55')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('57')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('58')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('59')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('60')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('61')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('62')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('66')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('68')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('69')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('72')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('73')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('75')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('76')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('77')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('78')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('79')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('80')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('81')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('82')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('84')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('85')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('86')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('87')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('88')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('89')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('90')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('91')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('92')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('93')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('94')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('95')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('96')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('97')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('98')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('99')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('100')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('101')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('110')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('111')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('112')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('113')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('114')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('115')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('116')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('117')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('118')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('119')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('120')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('131')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('132')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('133')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('134')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('135')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('136')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('137')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('138')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('139')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('140')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('141')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('142')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('150')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('151')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('160')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('162')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('163')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('165')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('166')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('167')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('168')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('169')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('170')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('180')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('181')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('190')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('191')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('200')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('201')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('202')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('203')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('210')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('211')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('212')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('213')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('214')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('215')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('216')
-INSERT INTO SONAR.SCHEMA_MIGRATIONS(VERSION) VALUES ('217')
-
-INSERT INTO SONAR.USERS(ID, LOGIN, NAME, EMAIL, CRYPTED_PASSWORD, SALT, CREATED_AT, UPDATED_AT, REMEMBER_TOKEN, REMEMBER_TOKEN_EXPIRES_AT) VALUES (1, 'admin', 'Administrator', '', 'a373a0e667abb2604c1fd571eb4ad47fe8cc0878', '48bc4b0d93179b5103fd3885ea9119498e9d161b', '2011-09-26 22:27:48.0', '2011-09-26 22:27:48.0', null, null)
-ALTER TABLE SONAR.USERS ALTER COLUMN ID RESTART WITH 2;
-
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (1, 1, 'size', 'Size metrics', null, 1, 1, 1, '2011-09-26 22:27:55.0', '2011-09-26 22:27:55.0')
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (2, 1, 'comments_duplications', 'Comments duplications', null, 1, 2, 1, '2011-09-26 22:27:55.0', '2011-09-26 22:27:55.0')
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (3, 1, 'complexity', 'Complexity', null, 1, 3, 1, '2011-09-26 22:27:55.0', '2011-09-26 22:27:55.0')
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (4, 1, 'code_coverage', 'Code coverage', null, 1, 4, 1, '2011-09-26 22:27:55.0', '2011-09-26 22:27:55.0');
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (5, 1, 'events', 'Events', null, 1, 5, 1, '2011-09-26 22:27:56.0', '2011-09-26 22:27:56.0');
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (6, 1, 'description', 'Description', null, 1, 6, 1, '2011-09-26 22:27:56.0', '2011-09-26 22:27:56.0');
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (7, 1, 'rules', 'Rules', null, 2, 1, 1, '2011-09-26 22:27:56.0', '2011-09-26 22:27:56.0');
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (8, 1, 'alerts', 'Alerts', null, 2, 2, 1, '2011-09-26 22:27:56.0', '2011-09-26 22:27:56.0');
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (9, 1, 'file_design', 'File design', null, 2, 3, 1, '2011-09-26 22:27:56.0', '2011-09-26 22:27:56.0');
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (10, 1, 'package_design', 'Package design', null, 2, 4, 1, '2011-09-26 22:27:56.0', '2011-09-26 22:27:56.0');
-INSERT INTO SONAR.WIDGETS(ID, DASHBOARD_ID, WIDGET_KEY, NAME, DESCRIPTION, COLUMN_INDEX, ROW_INDEX, CONFIGURED, CREATED_AT, UPDATED_AT) VALUES (11, 1, 'ckjm', 'CKJM', null, 2, 5, 1, '2011-09-26 22:27:56.0', '2011-09-26 22:27:56.0');
-ALTER TABLE SONAR.WIDGETS ALTER COLUMN ID RESTART WITH 12;
index 03d54ac198a320f0bb6535887ea8f253160e6412..ee7f89f331ace897ac4067881ace29bd6222b743 100644 (file)
@@ -70,9 +70,6 @@ class DatabaseVersion
   end
 
   def self.automatic_setup
-    if !production?
-      puts 'Derby database should be used for evaluation purpose only'
-    end
     if current_version<=0
       try_restore_structure_dump() if use_structure_dump?
       upgrade_and_start()
@@ -90,18 +87,7 @@ class DatabaseVersion
   end
 
   def self.try_restore_structure_dump()
-    begin
-      ddl=IO.readlines("#{RAILS_ROOT}/db/structure/#{dialect}.ddl")
-      sql=IO.readlines("#{RAILS_ROOT}/db/structure/#{dialect}.sql")
-
-      puts "Restore database structure & data"
-      execute_sql_requests(ddl)
-      execute_sql_requests(sql)
-      puts "Database created"
-    rescue
-      # file not found
-      nil
-    end
+    ::Java::OrgSonarServerUi::JRubyFacade.getInstance().createDatabase()
   end
 
   def self.execute_sql_requests(requests)