]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-4083 The WS metrics should allow to create or delete only manual metrics
authorJulien Lancelot <julien.lancelot@gmail.com>
Thu, 21 Mar 2013 10:52:06 +0000 (11:52 +0100)
committerJulien Lancelot <julien.lancelot@gmail.com>
Thu, 21 Mar 2013 10:52:06 +0000 (11:52 +0100)
sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java
sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql
sonar-server/src/main/webapp/WEB-INF/app/controllers/api/metrics_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/models/metric.rb
sonar-server/src/main/webapp/WEB-INF/db/migrate/383_update_metrics_user_managed_created_by_ws.rb [new file with mode: 0644]

index 383c94f4fedd0287dd8f1e79a94c9a84520a8d86..0e02a73a54ac22f26b7f4ba1dbfb5ecc67436403 100644 (file)
@@ -32,7 +32,7 @@ import java.util.List;
  */
 public class DatabaseVersion implements BatchComponent, ServerComponent {
 
-  public static final int LAST_VERSION = 382;
+  public static final int LAST_VERSION = 383;
 
   public static enum Status {
     UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL
index e3aedb778540d6be8017ce244f6317c7bdf8ebde..f601fc32e6394586343e2ea28b684623f2df8773 100644 (file)
@@ -152,6 +152,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('370');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('380');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('381');
 INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('382');
+INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('383');
 
 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 00d4e7c04a7a5b57774d534bf809f54469f9da1c..36ac182ee75ed7f325a3db64b4a290ac5f8edd5b 100644 (file)
@@ -55,7 +55,8 @@ class Api::MetricsController < Api::RestController
 
     begin
       metric.attributes = params.merge({:name => params[:id], :short_name => params[:name], :enabled => true})
-      metric.origin = 'WS'
+      metric.origin = Metric::ORIGIN_WS
+      metric.user_managed = true
       metric.save!
       Metric.clear_cache
       rest_status_ok
@@ -65,7 +66,7 @@ class Api::MetricsController < Api::RestController
   end
 
   def update
-    metric = Metric.first(:conditions => ['(name=? OR id=?) AND enabled=? AND origin<>?', params[:id], params[:id].to_i, true, Metric::ORIGIN_JAVA])
+    metric = Metric.first(:conditions => ['(name=? OR id=?) AND enabled=? AND user_managed=?', params[:id], params[:id].to_i, true, true])
     if metric
       begin
         metric.attributes = params.merge({:name => params[:id], :short_name => params[:name], :enabled => true})
@@ -81,7 +82,7 @@ class Api::MetricsController < Api::RestController
   end
 
   def destroy
-    metric = Metric.first(:conditions => ['(name=? OR id=?) AND enabled=? AND origin<>?', params[:id], params[:id].to_i, true, Metric::ORIGIN_JAVA])
+    metric = Metric.first(:conditions => ['(name=? OR id=?) AND enabled=? AND user_managed=?', params[:id], params[:id].to_i, true, true])
     if !metric
       rest_status_ko('Unable to delete : Metric [' + params[:id] + '] does not exist', 404)
     else
index 0e54111c09a50968c67651d636c515bb3e6233ff..fa3825630e90fefbdafe0e341bf0fa3a8171fef1 100644 (file)
@@ -38,6 +38,7 @@ class Metric < ActiveRecord::Base
 
   ORIGIN_GUI='GUI'
   ORIGIN_JAVA='JAV'
+  ORIGIN_WS='WS'
 
   CACHE_KEY='metrics'
   I18N_DOMAIN_CACHE_KEY='i18n_domains'
diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/383_update_metrics_user_managed_created_by_ws.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/383_update_metrics_user_managed_created_by_ws.rb
new file mode 100644 (file)
index 0000000..db82e65
--- /dev/null
@@ -0,0 +1,35 @@
+#
+# Sonar, entreprise quality control tool.
+# Copyright (C) 2008-2012 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
+#
+
+#
+# Sonar 3.6
+#
+class UpdateMetricsUserManagedCreatedByWs < ActiveRecord::Migration
+
+  class Metric < ActiveRecord::Base
+  end
+
+  def self.up
+    Metric.reset_column_information
+    Metric.update_all({:user_managed => true}, ['user_managed=? and origin=?', false, 'WS'])
+  end
+
+end
+