]> source.dussan.org Git - sonarqube.git/commitdiff
SONAR-3984 complete Ruby API
authorSimon Brandhof <simon.brandhof@gmail.com>
Thu, 6 Dec 2012 15:32:17 +0000 (16:32 +0100)
committerSimon Brandhof <simon.brandhof@gmail.com>
Thu, 6 Dec 2012 15:32:43 +0000 (16:32 +0100)
sonar-server/src/main/webapp/WEB-INF/app/controllers/measures_controller.rb
sonar-server/src/main/webapp/WEB-INF/app/models/measure_filter.rb
sonar-server/src/main/webapp/WEB-INF/app/models/measure_filter_display.rb
sonar-server/src/main/webapp/WEB-INF/app/models/measure_filter_display_list.rb
sonar-server/src/main/webapp/WEB-INF/app/models/measure_filter_display_treemap.rb

index 0d1a7296125d30571d23194001fba37cd8be986a..82c27224d29bf8fa5758ff467d76807e723535d5 100644 (file)
@@ -22,7 +22,7 @@ class MeasuresController < ApplicationController
   # GET /measures/index
   def index
     @filter = MeasureFilter.new
-    @filter.set_criteria_value('qualifiers', 'TRK')
+    @filter.set_criteria_value(:qualifiers, 'TRK')
     render :action => 'search'
   end
 
index edb7241669b91ba2305aa3cce9efb20ae859be1b..9269e17bf0f7f27d158b91761320fbe2242f2558 100644 (file)
@@ -96,23 +96,23 @@ class MeasureFilter < ActiveRecord::Base
   end
 
   def criteria(key=nil)
-    @criteria ||= {}
+    @criteria ||= HashWithIndifferentAccess.new
     if key
-      @criteria[key.to_s]
+      @criteria[key]
     else
       @criteria
     end
   end
 
   def criteria=(hash)
-    @criteria = {}
+    @criteria = HashWithIndifferentAccess.new
     hash.each_pair do |k, v|
       set_criteria_value(k, v)
     end
   end
 
   def override_criteria(hash)
-    @criteria ||= {}
+    @criteria ||= HashWithIndifferentAccess.new
     hash.each_pair do |k, v|
       set_criteria_value(k, v)
     end
@@ -120,11 +120,11 @@ class MeasureFilter < ActiveRecord::Base
 
   # API used by Displays
   def set_criteria_value(key, value)
-    @criteria ||= {}
+    @criteria ||= HashWithIndifferentAccess.new
     if key
       if value && value!='' && value!=['']
         value = value.to_s if value.is_a?(Fixnum)
-        @criteria[key.to_s]=value
+        @criteria[key]=value
       else
         @criteria.delete(key)
       end
@@ -138,7 +138,7 @@ class MeasureFilter < ActiveRecord::Base
 
   def load_criteria_from_data
     if self.data
-      @criteria = self.data.split(CRITERIA_SEPARATOR).inject({}) do |h, s|
+      @criteria = self.data.split(CRITERIA_SEPARATOR).inject(HashWithIndifferentAccess.new) do |h, s|
         k, v=s.split('=')
         if k && v
           v=v.split(CRITERIA_KEY_VALUE_SEPARATOR) if v.include?(CRITERIA_KEY_VALUE_SEPARATOR)
@@ -147,7 +147,7 @@ class MeasureFilter < ActiveRecord::Base
         h
       end
     else
-      @criteria = {}
+      @criteria = HashWithIndifferentAccess.new
     end
   end
 
index 62270fbfe0efefaf3ceaf2ab12ec3836cccaa5f8..6fce8261d8c62b243deafaa5caac70872283cd6c 100644 (file)
@@ -42,8 +42,8 @@ class MeasureFilterDisplay
     @options = options
 
     if filter.base_resource
-      qualifiers = filter.criteria('qualifiers')
-      filter.set_criteria_value('onBaseComponents', 'true') unless qualifiers && !qualifiers.empty?
+      qualifiers = filter.criteria(:qualifiers)
+      filter.set_criteria_value(:onBaseComponents, 'true') unless qualifiers && !qualifiers.empty?
     end
   end
 
index 10a336822d4d78be49f220d256dbaab13a116740..87486f132edcf4559ec97278d269caf5dd431100 100644 (file)
@@ -83,16 +83,16 @@ class MeasureFilterDisplayList < MeasureFilterDisplay
     super(filter, options)
 
     # default values
-    filter.set_criteria_default_value('cols', ['metric:alert_status', 'name', 'date', 'metric:ncloc', 'metric:violations', 'links'])
-    filter.set_criteria_default_value('sort', 'name')
-    filter.set_criteria_default_value('asc', 'true')
-    filter.set_criteria_default_value('pageSize', '30')
-    filter.pagination.per_page = [filter.criteria['pageSize'].to_i, 200].min
-    filter.pagination.page = (filter.criteria['page'] || 1).to_i
+    filter.set_criteria_default_value(:cols, ['metric:alert_status', 'name', 'date', 'metric:ncloc', 'metric:violations', 'links'])
+    filter.set_criteria_default_value(:sort, 'name')
+    filter.set_criteria_default_value(:asc, 'true')
+    filter.set_criteria_default_value(:pageSize, '30')
+    filter.pagination.per_page = [filter.criteria[:pageSize].to_i, 200].min
+    filter.pagination.page = (filter.criteria[:page] || 1).to_i
 
     @columns = []
     metrics = []
-    filter.criteria('cols').each do |column_key|
+    filter.criteria(:cols).each do |column_key|
       column = Column.new(column_key)
       @columns << column
       metrics << column.metric if column.metric
@@ -101,9 +101,9 @@ class MeasureFilterDisplayList < MeasureFilterDisplay
     filter.metrics=(metrics)
   end
 
-  PROPERTY_KEYS = Set.new(['cols', 'sort', 'asc', 'pageSize'])
+  PROPERTY_KEYS = Set.new([:cols, :sort, :asc, :pageSize])
 
   def url_params
-    @filter.criteria.select { |k, v| PROPERTY_KEYS.include?(k) }
+    @filter.criteria.select { |k, v| PROPERTY_KEYS.include?(k.to_sym) }
   end
 end
index 7e1648f22a42b54e3195f602bba893711c3d2cb5..48323872b3769ac05f793355bda441d2c73ab6cf 100644 (file)
@@ -22,20 +22,20 @@ class MeasureFilterDisplayTreemap < MeasureFilterDisplay
   include ActionView::Helpers::UrlHelper
 
   KEY = :treemap
-  PROPERTY_KEYS = Set.new(['tmSize', 'tmColor'])
+  PROPERTY_KEYS = Set.new([:tmSize, :tmColor])
   MAX_RESULTS = 1000
   attr_reader :id, :size, :size_metric, :color_metric
 
   def initialize(filter, options)
     super(filter, options)
 
-    @size_metric = Metric.by_key(@filter.criteria('tmSize')||'ncloc')
-    @color_metric = Metric.by_key(@filter.criteria('tmColor')||'violations_density')
+    @size_metric = Metric.by_key(@filter.criteria(:tmSize)||'ncloc')
+    @color_metric = Metric.by_key(@filter.criteria(:tmColor)||'violations_density')
     @filter.metrics=([@size_metric, @color_metric].compact)
     @id_count = 0
 
-    filter.set_criteria_value('sort', "metric:#{@size_metric.key}") if @size_metric
-    filter.set_criteria_value('asc', 'true')
+    filter.set_criteria_value(:sort, "metric:#{@size_metric.key}") if @size_metric
+    filter.set_criteria_value(:asc, 'true')
     filter.pagination.per_page = MAX_RESULTS
     filter.pagination.page = 1
   end
@@ -61,7 +61,7 @@ class MeasureFilterDisplayTreemap < MeasureFilterDisplay
   end
 
   def url_params
-    @filter.criteria.select { |k, v| PROPERTY_KEYS.include?(k) }
+    @filter.criteria.select { |k, v| PROPERTY_KEYS.include?(k.to_sym) }
   end
 
   private