aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@gmail.com>2011-10-26 11:48:24 +0200
committerSimon Brandhof <simon.brandhof@gmail.com>2011-10-26 11:49:09 +0200
commit28e68ed90ba648cd2dcd6491982a7bda227b6bbd (patch)
tree797c86b2570baa5d379ac25b3370a65976515aa6
parent48563f868573a21cac93c8143b36b26200f19a6c (diff)
downloadsonarqube-28e68ed90ba648cd2dcd6491982a7bda227b6bbd.tar.gz
sonarqube-28e68ed90ba648cd2dcd6491982a7bda227b6bbd.zip
SONAR-2642 do not duplicate derby DDL files
-rw-r--r--sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java1
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/Database.java3
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/DatabaseMigrator.java60
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/DdlUtils.java3
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java30
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/InMemoryDatabase.java6
-rw-r--r--sonar-core/src/main/java/org/sonar/persistence/MyBatis.java4
-rw-r--r--sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql4
-rw-r--r--sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl2
-rw-r--r--sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java51
-rw-r--r--sonar-server/src/main/java/org/sonar/server/platform/Platform.java2
-rw-r--r--sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java10
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt18
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/db/structure/derby.ddl257
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/db/structure/derby.sql179
-rw-r--r--sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb16
16 files changed, 167 insertions, 479 deletions
diff --git a/sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java b/sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java
index 01df8825f85..1036280044f 100644
--- a/sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java
+++ b/sonar-core/src/main/java/org/sonar/jpa/session/AbstractDatabaseConnector.java
@@ -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) {
diff --git a/sonar-core/src/main/java/org/sonar/persistence/Database.java b/sonar-core/src/main/java/org/sonar/persistence/Database.java
index ac4fd69506d..028f8e812aa 100644
--- a/sonar-core/src/main/java/org/sonar/persistence/Database.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/Database.java
@@ -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
index 00000000000..6d31f295576
--- /dev/null
+++ b/sonar-core/src/main/java/org/sonar/persistence/DatabaseMigrator.java
@@ -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;
+ }
+}
diff --git a/sonar-core/src/main/java/org/sonar/persistence/DdlUtils.java b/sonar-core/src/main/java/org/sonar/persistence/DdlUtils.java
index 2b8cc3d22d7..14dd56eef2c 100644
--- a/sonar-core/src/main/java/org/sonar/persistence/DdlUtils.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/DdlUtils.java
@@ -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);
diff --git a/sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java b/sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java
index fae69d957ee..fb5eca5ccaa 100644
--- a/sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/DefaultDatabase.java
@@ -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());
diff --git a/sonar-core/src/main/java/org/sonar/persistence/InMemoryDatabase.java b/sonar-core/src/main/java/org/sonar/persistence/InMemoryDatabase.java
index 7e54f9522a9..80cf8bb4914 100644
--- a/sonar-core/src/main/java/org/sonar/persistence/InMemoryDatabase.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/InMemoryDatabase.java
@@ -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();
+ }
}
diff --git a/sonar-core/src/main/java/org/sonar/persistence/MyBatis.java b/sonar-core/src/main/java/org/sonar/persistence/MyBatis.java
index 4a468f8f767..82e23455b70 100644
--- a/sonar-core/src/main/java/org/sonar/persistence/MyBatis.java
+++ b/sonar-core/src/main/java/org/sonar/persistence/MyBatis.java
@@ -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;
diff --git a/sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql b/sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql
index 5a8a67209a9..825db32a1a6 100644
--- a/sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql
+++ b/sonar-core/src/main/resources/org/sonar/persistence/rows-derby.sql
@@ -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
diff --git a/sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl b/sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl
index be3e9ffdb6b..df60c0d6d24 100644
--- a/sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl
+++ b/sonar-core/src/main/resources/org/sonar/persistence/schema-derby.ddl
@@ -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))
diff --git a/sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java b/sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java
index 94361873195..05922626fae 100644
--- a/sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java
+++ b/sonar-core/src/test/java/org/sonar/persistence/DefaultDatabaseTest.java
@@ -19,10 +19,13 @@
*/
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
+ }
+ }
+ }
}
diff --git a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java
index 1ad12af6cd1..281418de6b7 100644
--- a/sonar-server/src/main/java/org/sonar/server/platform/Platform.java
+++ b/sonar-server/src/main/java/org/sonar/server/platform/Platform.java
@@ -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();
}
diff --git a/sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java b/sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java
index e4747e37a89..7e01bb368d2 100644
--- a/sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java
+++ b/sonar-server/src/main/java/org/sonar/server/ui/JRubyFacade.java
@@ -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 */
diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt b/sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt
index 752c79ebff3..ab8f7317bc0 100644
--- a/sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt
+++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/README.txt
@@ -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
index 2594c90feea..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/db/structure/derby.ddl
+++ /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
index b939fe86d44..00000000000
--- a/sonar-server/src/main/webapp/WEB-INF/db/structure/derby.sql
+++ /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;
diff --git a/sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb b/sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb
index 03d54ac198a..ee7f89f331a 100644
--- a/sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb
+++ b/sonar-server/src/main/webapp/WEB-INF/lib/database_version.rb
@@ -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)