diff options
author | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-01-28 10:08:12 +0100 |
---|---|---|
committer | Julien Lancelot <julien.lancelot@sonarsource.com> | 2014-01-28 10:09:24 +0100 |
commit | 142a2128dad51730260e7601f353292cab93b5ed (patch) | |
tree | d4b531effb89014ccace69d4bfabb68cb1d97d61 | |
parent | 353b7fc94ed3eb2ecefb242464861ae49810807c (diff) | |
download | sonarqube-142a2128dad51730260e7601f353292cab93b5ed.tar.gz sonarqube-142a2128dad51730260e7601f353292cab93b5ed.zip |
SONAR-4997 Add a migration to remove display=treemap on measure filters and and remove code used to display a filter as a treemap on the measure filters page
13 files changed, 75 insertions, 146 deletions
diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java index 02f7faece03..790677dec99 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/CorePlugin.java @@ -20,11 +20,7 @@ package org.sonar.plugins.core; import com.google.common.collect.ImmutableList; -import org.sonar.api.CoreProperties; -import org.sonar.api.Properties; -import org.sonar.api.Property; -import org.sonar.api.PropertyType; -import org.sonar.api.SonarPlugin; +import org.sonar.api.*; import org.sonar.api.checks.NoSonarFilter; import org.sonar.api.config.PropertyDefinition; import org.sonar.api.resources.Qualifiers; @@ -36,93 +32,22 @@ import org.sonar.plugins.core.charts.DistributionAreaChart; import org.sonar.plugins.core.charts.DistributionBarChart; import org.sonar.plugins.core.charts.XradarChart; import org.sonar.plugins.core.colorizers.JavaColorizerFormat; -import org.sonar.plugins.core.dashboards.GlobalDefaultDashboard; -import org.sonar.plugins.core.dashboards.ProjectDefaultDashboard; -import org.sonar.plugins.core.dashboards.ProjectHotspotDashboard; -import org.sonar.plugins.core.dashboards.ProjectIssuesDashboard; -import org.sonar.plugins.core.dashboards.ProjectTimeMachineDashboard; -import org.sonar.plugins.core.issue.CountFalsePositivesDecorator; -import org.sonar.plugins.core.issue.CountUnresolvedIssuesDecorator; -import org.sonar.plugins.core.issue.InitialOpenIssuesSensor; -import org.sonar.plugins.core.issue.InitialOpenIssuesStack; -import org.sonar.plugins.core.issue.IssueHandlers; -import org.sonar.plugins.core.issue.IssueTracking; -import org.sonar.plugins.core.issue.IssueTrackingDecorator; -import org.sonar.plugins.core.issue.IssuesDensityDecorator; -import org.sonar.plugins.core.issue.WeightedIssuesDecorator; +import org.sonar.plugins.core.dashboards.*; +import org.sonar.plugins.core.issue.*; import org.sonar.plugins.core.issue.ignore.IgnoreIssuesPlugin; -import org.sonar.plugins.core.issue.notification.ChangesOnMyIssueNotificationDispatcher; -import org.sonar.plugins.core.issue.notification.IssueChangesEmailTemplate; -import org.sonar.plugins.core.issue.notification.NewFalsePositiveNotificationDispatcher; -import org.sonar.plugins.core.issue.notification.NewIssuesEmailTemplate; -import org.sonar.plugins.core.issue.notification.NewIssuesNotificationDispatcher; -import org.sonar.plugins.core.issue.notification.SendIssueNotificationsPostJob; +import org.sonar.plugins.core.issue.notification.*; import org.sonar.plugins.core.measurefilters.MyFavouritesFilter; import org.sonar.plugins.core.measurefilters.ProjectFilter; import org.sonar.plugins.core.notifications.alerts.NewAlerts; import org.sonar.plugins.core.security.ApplyProjectRolesDecorator; -import org.sonar.plugins.core.sensors.BranchCoverageDecorator; -import org.sonar.plugins.core.sensors.CheckAlertThresholds; -import org.sonar.plugins.core.sensors.CommentDensityDecorator; -import org.sonar.plugins.core.sensors.CoverageDecorator; -import org.sonar.plugins.core.sensors.CoverageMeasurementFilter; -import org.sonar.plugins.core.sensors.DirectoriesDecorator; -import org.sonar.plugins.core.sensors.FileHashSensor; -import org.sonar.plugins.core.sensors.FilesDecorator; -import org.sonar.plugins.core.sensors.GenerateAlertEvents; -import org.sonar.plugins.core.sensors.ItBranchCoverageDecorator; -import org.sonar.plugins.core.sensors.ItCoverageDecorator; -import org.sonar.plugins.core.sensors.ItLineCoverageDecorator; -import org.sonar.plugins.core.sensors.LineCoverageDecorator; -import org.sonar.plugins.core.sensors.ManualMeasureDecorator; -import org.sonar.plugins.core.sensors.OverallBranchCoverageDecorator; -import org.sonar.plugins.core.sensors.OverallCoverageDecorator; -import org.sonar.plugins.core.sensors.OverallLineCoverageDecorator; -import org.sonar.plugins.core.sensors.ProfileEventsSensor; -import org.sonar.plugins.core.sensors.ProjectLinksSensor; -import org.sonar.plugins.core.sensors.UnitTestDecorator; -import org.sonar.plugins.core.sensors.VersionEventsSensor; +import org.sonar.plugins.core.sensors.*; import org.sonar.plugins.core.technicaldebt.NewTechnicalDebtDecorator; import org.sonar.plugins.core.technicaldebt.TechnicalDebtDecorator; -import org.sonar.plugins.core.timemachine.NewCoverageAggregator; -import org.sonar.plugins.core.timemachine.NewCoverageFileAnalyzer; -import org.sonar.plugins.core.timemachine.NewItCoverageFileAnalyzer; -import org.sonar.plugins.core.timemachine.NewOverallCoverageFileAnalyzer; -import org.sonar.plugins.core.timemachine.TendencyDecorator; -import org.sonar.plugins.core.timemachine.TimeMachineConfigurationPersister; -import org.sonar.plugins.core.timemachine.VariationDecorator; +import org.sonar.plugins.core.timemachine.*; import org.sonar.plugins.core.web.TestsViewer; -import org.sonar.plugins.core.widgets.AlertsWidget; -import org.sonar.plugins.core.widgets.BubbleChartWidget; -import org.sonar.plugins.core.widgets.ComplexityWidget; -import org.sonar.plugins.core.widgets.CoverageWidget; -import org.sonar.plugins.core.widgets.CustomMeasuresWidget; -import org.sonar.plugins.core.widgets.DescriptionWidget; -import org.sonar.plugins.core.widgets.DocumentationCommentsWidget; -import org.sonar.plugins.core.widgets.DuplicationsWidget; -import org.sonar.plugins.core.widgets.EventsWidget; -import org.sonar.plugins.core.widgets.HotspotMetricWidget; -import org.sonar.plugins.core.widgets.HotspotMostViolatedResourcesWidget; -import org.sonar.plugins.core.widgets.HotspotMostViolatedRulesWidget; -import org.sonar.plugins.core.widgets.ItCoverageWidget; -import org.sonar.plugins.core.widgets.MeasureFilterListWidget; -import org.sonar.plugins.core.widgets.MeasureFilterTreemapWidget; -import org.sonar.plugins.core.widgets.SizeWidget; -import org.sonar.plugins.core.widgets.TechnicalDebtPyramidWidget; -import org.sonar.plugins.core.widgets.TimeMachineWidget; -import org.sonar.plugins.core.widgets.TimelineWidget; -import org.sonar.plugins.core.widgets.TreemapWidget; -import org.sonar.plugins.core.widgets.WelcomeWidget; -import org.sonar.plugins.core.widgets.issues.ActionPlansWidget; -import org.sonar.plugins.core.widgets.issues.FalsePositiveIssuesWidget; -import org.sonar.plugins.core.widgets.issues.IssueFilterWidget; -import org.sonar.plugins.core.widgets.issues.IssuesWidget; -import org.sonar.plugins.core.widgets.issues.MyUnresolvedIssuesWidget; -import org.sonar.plugins.core.widgets.issues.UnresolvedIssuesPerAssigneeWidget; -import org.sonar.plugins.core.widgets.issues.UnresolvedIssuesStatusesWidget; -import org.sonar.plugins.core.widgets.measures.MeasureFilterAsBubbleChartWidget; -import org.sonar.plugins.core.widgets.measures.MeasureFilterAsHistogramWidget; -import org.sonar.plugins.core.widgets.measures.MeasureFilterAsPieChartWidget; +import org.sonar.plugins.core.widgets.*; +import org.sonar.plugins.core.widgets.issues.*; +import org.sonar.plugins.core.widgets.measures.*; import java.util.Arrays; import java.util.List; diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboard.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboard.java index 7315913c878..e59dfb5ad9c 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboard.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboard.java @@ -26,9 +26,9 @@ import org.sonar.core.measure.db.MeasureFilterDao; import org.sonar.core.measure.db.MeasureFilterDto; import org.sonar.plugins.core.measurefilters.MyFavouritesFilter; import org.sonar.plugins.core.measurefilters.ProjectFilter; -import org.sonar.plugins.core.widgets.MeasureFilterListWidget; -import org.sonar.plugins.core.widgets.MeasureFilterTreemapWidget; import org.sonar.plugins.core.widgets.WelcomeWidget; +import org.sonar.plugins.core.widgets.measures.MeasureFilterListWidget; +import org.sonar.plugins.core.widgets.measures.MeasureFilterTreemapWidget; /** * Projects global dashboard for Sonar diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/MeasureFilterListWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterListWidget.java index f2df34a21a9..bf8aa17989a 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/MeasureFilterListWidget.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterListWidget.java @@ -17,13 +17,10 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package org.sonar.plugins.core.widgets; +package org.sonar.plugins.core.widgets.measures; -import org.sonar.api.web.WidgetCategory; -import org.sonar.api.web.WidgetProperties; -import org.sonar.api.web.WidgetProperty; -import org.sonar.api.web.WidgetPropertyType; -import org.sonar.api.web.WidgetScope; +import org.sonar.api.web.*; +import org.sonar.plugins.core.widgets.CoreWidget; import static org.sonar.api.web.WidgetScope.GLOBAL; diff --git a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/MeasureFilterTreemapWidget.java b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterTreemapWidget.java index 90f1d1c7fe9..8587b9f3a24 100644 --- a/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/MeasureFilterTreemapWidget.java +++ b/plugins/sonar-core-plugin/src/main/java/org/sonar/plugins/core/widgets/measures/MeasureFilterTreemapWidget.java @@ -17,13 +17,10 @@ * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -package org.sonar.plugins.core.widgets; +package org.sonar.plugins.core.widgets.measures; -import org.sonar.api.web.WidgetCategory; -import org.sonar.api.web.WidgetProperties; -import org.sonar.api.web.WidgetProperty; -import org.sonar.api.web.WidgetPropertyType; -import org.sonar.api.web.WidgetScope; +import org.sonar.api.web.*; +import org.sonar.plugins.core.widgets.CoreWidget; import static org.sonar.api.web.WidgetScope.GLOBAL; diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_list.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_list.html.erb index c0e810f71d9..438c7f49d5b 100644 --- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_list.html.erb +++ b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_list.html.erb @@ -8,7 +8,7 @@ filter.set_criteria_value('display', 'list') filter.set_criteria_value('pageSize', page_size) filter.execute(self, :user => current_user) - @widget_title = link_to h(filter.name), {:controller => 'measures', :action => 'filter', :id => filter.id, :display => 'list'} + @widget_title = link_to h(filter.name), {:controller => 'measures', :action => 'filter', :id => filter.id} %> <% if widget_properties['displayFilterDescription'] && !filter.description.blank? %> @@ -17,7 +17,7 @@ </div> <% end %> - <%= render :partial => "measures/display_#{filter.display.key}", :locals => {:edit_mode => false, :filter => filter, :widget_id => widget.id} -%> + <%= render :partial => 'measures/display_list', :locals => {:edit_mode => false, :filter => filter, :widget_id => widget.id} -%> <% end else @@ -25,4 +25,4 @@ <p><%= image_tag 'warning.png' %> <%= message 'measure_filter.widget.unknown_filter_warning' -%></p> <% end -%>
\ No newline at end of file +%> diff --git a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_treemap.html.erb b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_treemap.html.erb index 4cf3eb1ae50..81ce8916b9a 100644 --- a/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_treemap.html.erb +++ b/plugins/sonar-core-plugin/src/main/resources/org/sonar/plugins/core/widgets/measure_filter_treemap.html.erb @@ -4,7 +4,7 @@ color_metric = widget_properties['colorMetric'] filter = MeasureFilter.find_by_id(filter_id.to_i) if filter_id if filter - url_options = {:controller => 'measures', :action => 'filter', :id => filter.id, :display => 'treemap'} + url_options = {:controller => 'measures', :action => 'filter', :id => filter.id} filter.load_criteria_from_data filter.set_criteria_value(:display, 'treemap') if size_metric @@ -30,7 +30,7 @@ </div> <% end %> - <%= render :partial => "measures/display_#{filter.display.key}", :locals => {:edit_mode => false, :widget_id => widget.id, :filter => filter} %> + <%= render :partial => 'measures/display_treemap', :locals => {:edit_mode => false, :widget_id => widget.id, :filter => filter} %> <% end else @@ -38,4 +38,4 @@ <p><%= image_tag 'warning.png' %> <%= message 'measure_filter.widget.unknown_filter_warning' -%></p> <% end -%>
\ No newline at end of file +%> diff --git a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboardTest.java b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboardTest.java index e74bc8bedec..9d10fecec06 100644 --- a/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboardTest.java +++ b/plugins/sonar-core-plugin/src/test/java/org/sonar/plugins/core/dashboards/GlobalDefaultDashboardTest.java @@ -28,9 +28,9 @@ import org.sonar.core.measure.db.MeasureFilterDto; import org.sonar.plugins.core.CorePlugin; import org.sonar.plugins.core.measurefilters.MyFavouritesFilter; import org.sonar.plugins.core.measurefilters.ProjectFilter; -import org.sonar.plugins.core.widgets.MeasureFilterListWidget; -import org.sonar.plugins.core.widgets.MeasureFilterTreemapWidget; import org.sonar.plugins.core.widgets.WelcomeWidget; +import org.sonar.plugins.core.widgets.measures.MeasureFilterListWidget; +import org.sonar.plugins.core.widgets.measures.MeasureFilterTreemapWidget; import java.util.List; diff --git a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java index d7fda0833c6..21baa95e891 100644 --- a/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java +++ b/sonar-core/src/main/java/org/sonar/core/persistence/DatabaseVersion.java @@ -33,7 +33,7 @@ import java.util.List; */ public class DatabaseVersion implements BatchComponent, ServerComponent { - public static final int LAST_VERSION = 492; + public static final int LAST_VERSION = 493; public static enum Status { UP_TO_DATE, REQUIRES_UPGRADE, REQUIRES_DOWNGRADE, FRESH_INSTALL diff --git a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql index 0b77126778f..db5b5ab1b55 100644 --- a/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql +++ b/sonar-core/src/main/resources/org/sonar/core/persistence/rows-h2.sql @@ -203,6 +203,7 @@ INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('489'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('490'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('491'); INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('492'); +INSERT INTO SCHEMA_MIGRATIONS(VERSION) VALUES ('493'); 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-server/src/main/webapp/WEB-INF/app/controllers/measures_controller.rb b/sonar-server/src/main/webapp/WEB-INF/app/controllers/measures_controller.rb index a10c4b0dacf..6cf6c6d8bc0 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/controllers/measures_controller.rb +++ b/sonar-server/src/main/webapp/WEB-INF/app/controllers/measures_controller.rb @@ -34,7 +34,10 @@ class MeasuresController < ApplicationController @filter = MeasureFilter.new end @filter.criteria=criteria_params - @filter.enable_default_display + + # SONAR-4997 + # Only list display is now managed + @filter.set_criteria_value(:display, 'list') @filter.execute(self, :user => current_user) if request.xhr? @@ -49,11 +52,13 @@ class MeasuresController < ApplicationController @filter = find_filter(params[:id]) @filter.load_criteria_from_data - @filter.enable_default_display - # criteria can be overridden @filter.override_criteria(criteria_params) + # SONAR-4997 + # Only list display is now managed + @filter.set_criteria_value(:display, 'list') + @filter.execute(self, :user => current_user) @unchanged = true diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display.html.erb index 42201d78075..e919a90a90e 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display.html.erb @@ -3,5 +3,5 @@ <div class="warning"><%= h message %></div> <% end %> <% elsif filter.rows && filter.display %> - <%= render :partial => "measures/display_#{filter.display.class::KEY}", :locals => {:filter => filter, :edit_mode => edit_mode, :widget_id => widget_id} -%> + <%= render :partial => 'measures/display_list', :locals => {:filter => filter, :edit_mode => edit_mode, :widget_id => widget_id} -%> <% end %> diff --git a/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display_treemap.html.erb b/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display_treemap.html.erb index f308a3e8397..078a1b13fee 100644 --- a/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display_treemap.html.erb +++ b/sonar-server/src/main/webapp/WEB-INF/app/views/measures/_display_treemap.html.erb @@ -3,8 +3,7 @@ </script> <% treemap_id = widget_id.nil? ? 1 : widget_id - unless edit_mode - colspan = 1 + colspan = 1 %> <table class="spaced"> <tr> @@ -31,39 +30,6 @@ </td> </tr> </table> -<% else %> - <table class="spaced width100 box"> - <tr> - <td valign="top" class="thin nowrap"> - <span class="comments"><%= message('size') -%></span> - <br/> - <%= metric_select_tag 'tmSize', Metric.all.select { |m| m.treemap_size? }, - :html_id => 'select-tm-size', - :allow_empty => false, - :selected_key => filter.display.size_metric.key -%> - </td> - <td valign="top" class="thin nowrap"> - <span class="comments"><%= message('color') -%></span> - <% if filter.display.color_metric %> - <span id="tm-gradient-<%= treemap_id -%>" class="note"> - <%= render :partial => 'treemap/gradient', :locals => {:metric => filter.display.color_metric} %> - </span> - <% end %> - <br/> - <%= metric_select_tag 'tmColor', Metric.all.select { |m| m.treemap_color? }, - :html_id => 'select-tm-color', - :allow_empty => false, - :selected_key => (filter.display.color_metric && filter.display.color_metric.key) -%> - - <button id="update-treemap"><%= message 'refresh' -%></button> - </td> - <td valign="bottom"><%= image_tag 'loading.gif', :id => "tm-loading-#{treemap_id}", :style => 'display:none' -%></td> - <td class="right" valign="bottom"> - <a href="#" class="button" id="exit-edit"><%= message 'close' -%></a> - </td> - </tr> - </table> -<% end %> <% unless defined? widget content_for :script do %> diff --git a/sonar-server/src/main/webapp/WEB-INF/db/migrate/493_delete_display_treemap_from_measure_filters.rb b/sonar-server/src/main/webapp/WEB-INF/db/migrate/493_delete_display_treemap_from_measure_filters.rb new file mode 100644 index 00000000000..a1beba69a7e --- /dev/null +++ b/sonar-server/src/main/webapp/WEB-INF/db/migrate/493_delete_display_treemap_from_measure_filters.rb @@ -0,0 +1,38 @@ +# +# SonarQube, open source software quality management tool. +# Copyright (C) 2008-2013 SonarSource +# mailto:contact AT sonarsource DOT com +# +# SonarQube 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. +# +# SonarQube 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 this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# + +# +# Sonar 4.2 +# SONAR-4997 +# +class DeleteDisplayTreemapFromMeasureFilters < ActiveRecord::Migration + + class MeasureFilter < ActiveRecord::Base + end + + def self.up + filters = MeasureFilter.all(:conditions => "data like '%display=treemap%'") + filters.each do |filter| + filter.data = filter.data.sub('display=treemap', '') + filter.save + end + end +end + |