From c5e6187faf2bd455ad3560fc9e29f154decd1661 Mon Sep 17 00:00:00 2001 From: Alessandro Palmeira + Diego Araujo Date: Wed, 23 Jan 2013 16:23:59 +0000 Subject: [PATCH] [Mezuro] Add native metric configuration. --- plugins/mezuro/controllers/myprofile/mezuro_plugin_metric_configuration_controller.rb | 44 +++++++++++++++++++++++++++++--------------- plugins/mezuro/controllers/myprofile/mezuro_plugin_myprofile_controller.rb | 6 +----- plugins/mezuro/lib/kalibro/metric.rb | 2 +- plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb | 5 +++++ plugins/mezuro/test/fixtures/metric_fixtures.rb | 4 ++-- plugins/mezuro/test/functional/myprofile/mezuro_plugin_metric_configuration_controller_test.rb | 33 ++++++++++++++++++--------------- plugins/mezuro/test/unit/mezuro_plugin/helpers/content_viewer_helper_test.rb | 5 +++++ plugins/mezuro/views/content_viewer/show_configuration.rhtml | 2 +- plugins/mezuro/views/mezuro_plugin_metric_configuration/choose_metric.html.erb | 4 ++-- plugins/mezuro/views/mezuro_plugin_metric_configuration/edit.html.erb | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ plugins/mezuro/views/mezuro_plugin_metric_configuration/edit_metric_configuration.html.erb | 50 -------------------------------------------------- plugins/mezuro/views/mezuro_plugin_metric_configuration/new_metric_configuration.html.erb | 51 --------------------------------------------------- plugins/mezuro/views/mezuro_plugin_metric_configuration/new_native.html.erb | 44 ++++++++++++++++++++++++++++++++++++++++++++ 13 files changed, 158 insertions(+), 142 deletions(-) create mode 100644 plugins/mezuro/views/mezuro_plugin_metric_configuration/edit.html.erb delete mode 100644 plugins/mezuro/views/mezuro_plugin_metric_configuration/edit_metric_configuration.html.erb delete mode 100644 plugins/mezuro/views/mezuro_plugin_metric_configuration/new_metric_configuration.html.erb create mode 100644 plugins/mezuro/views/mezuro_plugin_metric_configuration/new_native.html.erb diff --git a/plugins/mezuro/controllers/myprofile/mezuro_plugin_metric_configuration_controller.rb b/plugins/mezuro/controllers/myprofile/mezuro_plugin_metric_configuration_controller.rb index 1104cb8..0af19de 100644 --- a/plugins/mezuro/controllers/myprofile/mezuro_plugin_metric_configuration_controller.rb +++ b/plugins/mezuro/controllers/myprofile/mezuro_plugin_metric_configuration_controller.rb @@ -7,11 +7,27 @@ class MezuroPluginMetricConfigurationController < MezuroPluginMyprofileControlle @base_tools = Kalibro::BaseTool.all end - def new_metric_configuration + def new_native @configuration_content = profile.articles.find(params[:id]) - @metric = Kalibro::BaseTool.find_by_name(params[:base_tool]).metric params[:metric_name] + @base_tool_name = params[:base_tool_name] + @metric = Kalibro::BaseTool.find_by_name(@base_tool_name).metric params[:metric_name] + @reading_group_names_and_ids = reading_group_names_and_ids end - + + def create_native + metric_configuration = Kalibro::MetricConfiguration.new(params[:metric_configuration]) + metric_configuration.save + + if metric_configuration_has_errors? metric_configuration + redirect_to_error_page metric_configuration.errors[0].message + else + id = params[:id] + metric_name = params[:metric_configuration][:metric][:name] + redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/metric_configuration/edit_native?id=#{id}&metric_name=#{metric_name.gsub(/\s/, '+')}" + end + end + +=begin def new_compound_metric_configuration @configuration_content = profile.articles.find(params[:id]) @metric_configurations = @configuration_content.metric_configurations @@ -33,17 +49,6 @@ class MezuroPluginMetricConfigurationController < MezuroPluginMyprofileControlle @metric = @metric_configuration.metric end - def create_metric_configuration - id = params[:id] - metric_name = params[:metric_configuration][:metric][:name] - metric_configuration = Kalibro::MetricConfiguration.new(params[:metric_configuration]) - metric_configuration.save - if metric_configuration_has_errors? metric_configuration - redirect_to_error_page metric_configuration.errors[0].message - else - redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/metric_configuration/edit_metric_configuration?id=#{id}&metric_name=#{metric_name.gsub(/\s/, '+')}" - end - end def create_compound_metric_configuration id = params[:id] @@ -92,11 +97,20 @@ class MezuroPluginMetricConfigurationController < MezuroPluginMyprofileControlle redirect_to "/#{profile.identifier}/#{configuration_content.slug}" end end +=end private + def reading_group_names_and_ids + array = Kalibro::ReadingGroup.all.map { |reading_group| [reading_group.name, reading_group.id] } + array.sort { |x,y| x.first.downcase <=> y.first.downcase } + end + + def metric_configuration_has_errors? metric_configuration + not metric_configuration.errors.empty? + end + def configuration_content_has_errors? not @configuration_content.errors[:base].nil? end - end diff --git a/plugins/mezuro/controllers/myprofile/mezuro_plugin_myprofile_controller.rb b/plugins/mezuro/controllers/myprofile/mezuro_plugin_myprofile_controller.rb index d9a1b1d..e3f23bd 100644 --- a/plugins/mezuro/controllers/myprofile/mezuro_plugin_myprofile_controller.rb +++ b/plugins/mezuro/controllers/myprofile/mezuro_plugin_myprofile_controller.rb @@ -18,11 +18,7 @@ class MezuroPluginMyprofileController < ProfileController #MyprofileController? redirect_to "/myprofile/#{profile.identifier}/plugin/mezuro/error_page?message=#{message}" end - def metric_configuration_has_errors? metric_configuration - not metric_configuration.errors.empty? - end - - def process_error_message message + def process_error_message message #FIXME if message =~ /bla/ message else diff --git a/plugins/mezuro/lib/kalibro/metric.rb b/plugins/mezuro/lib/kalibro/metric.rb index 5151db8..2c8066c 100644 --- a/plugins/mezuro/lib/kalibro/metric.rb +++ b/plugins/mezuro/lib/kalibro/metric.rb @@ -1,6 +1,6 @@ class Kalibro::Metric < Kalibro::Model - attr_accessor :name, :compound, :scope, :description, :script, :origin, :language + attr_accessor :name, :compound, :scope, :description, :script, :language def languages @language diff --git a/plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb b/plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb index db12ddf..72cbd7a 100644 --- a/plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb +++ b/plugins/mezuro/lib/mezuro_plugin/helpers/content_viewer_helper.rb @@ -52,6 +52,11 @@ class MezuroPlugin::Helpers::ContentViewerHelper MezuroPluginModuleResultController.helpers.distance_of_time_in_words(0, seconds, include_seconds = true) end + def self.aggregation_options + [["Average","AVERAGE"], ["Median", "MEDIAN"], ["Maximum", "MAXIMUM"], ["Minimum", "MINIMUM"], + ["Count", "COUNT"], ["Standard Deviation", "STANDARD_DEVIATION"]] + end + private def self.discretize_array(array) diff --git a/plugins/mezuro/test/fixtures/metric_fixtures.rb b/plugins/mezuro/test/fixtures/metric_fixtures.rb index 4c44987..05a3d49 100644 --- a/plugins/mezuro/test/fixtures/metric_fixtures.rb +++ b/plugins/mezuro/test/fixtures/metric_fixtures.rb @@ -13,7 +13,7 @@ class MetricFixtures end def self.total_cof_hash - {:name => 'Total Coupling Factor', :compound => "false", :scope => 'APPLICATION', :origin => 'Analizo', :language => ['JAVA']} + {:name => 'Total Coupling Factor', :compound => "false", :scope => 'APPLICATION', :language => ['JAVA']} end def self.amloc @@ -21,7 +21,7 @@ class MetricFixtures end def self.amloc_hash - {:name => 'Average Method LOC', :compound => "false", :scope => 'CLASS', :origin => 'Analizo', :language => ['JAVA']} + {:name => 'Average Method LOC', :compound => "false", :scope => 'CLASS', :language => ['JAVA']} end end diff --git a/plugins/mezuro/test/functional/myprofile/mezuro_plugin_metric_configuration_controller_test.rb b/plugins/mezuro/test/functional/myprofile/mezuro_plugin_metric_configuration_controller_test.rb index e7266d0..6c4a26b 100644 --- a/plugins/mezuro/test/functional/myprofile/mezuro_plugin_metric_configuration_controller_test.rb +++ b/plugins/mezuro/test/functional/myprofile/mezuro_plugin_metric_configuration_controller_test.rb @@ -4,6 +4,7 @@ require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures" require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_fixtures" require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/metric_configuration_fixtures" require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/configuration_fixtures" +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/reading_group_fixtures" class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase @@ -26,8 +27,11 @@ class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase @base_tool = BaseToolFixtures.base_tool @base_tool_hash = BaseToolFixtures.base_tool_hash -=begin @metric = MetricFixtures.amloc + + @reading_group = ReadingGroupFixtures.reading_group + +=begin @metric_configuration = MetricConfigurationFixtures.amloc_metric_configuration @metric_configuration_hash = MetricConfigurationFixtures.amloc_metric_configuration_hash @compound_metric_configuration = MetricConfigurationFixtures.sc_metric_configuration @@ -49,16 +53,25 @@ class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase assert_response 200 end -=begin - should 'test new metric configuration' do - Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool, {:base_tool_name => @base_tool.name}).returns({:base_tool => @base_tool_hash}) - get :new_metric_configuration, :profile => @profile.identifier, :id => @content.id, :base_tool => @base_tool.name, :metric_name => @metric.name + should 'test new native metric configuration' do + Kalibro::BaseTool.expects(:find_by_name).with(@base_tool.name).returns(@base_tool) + Kalibro::ReadingGroup.expects(:all).returns([@reading_group]) + get :new_native, :profile => @profile.identifier, :id => @content.id, :base_tool_name => @base_tool.name, :metric_name => @metric.name assert_equal @content, assigns(:configuration_content) assert_equal @metric.name, assigns(:metric).name + assert_equal @base_tool.name, assigns(:base_tool_name) + assert_equal [[@reading_group.name,@reading_group.id]], assigns(:reading_group_names_and_ids) assert_response 200 end + should 'test create native metric configuration' do + Kalibro::MetricConfiguration.expects(:new).with(@metric_configuration_hash).returns(@created_metric_configuration) + @created_metric_configuration.expects(:save).returns(true) + get :create_native, :profile => @profile.identifier, :id => @content.id, :metric_configuration => @native_hash + assert_response 200 + end +=begin should 'test new compound metric configuration' do Kalibro::Configuration.expects(:request).with("Configuration", :get_configuration, { :configuration_name => @content.name}).returns({:configuration => @configuration_hash}) @@ -95,16 +108,6 @@ class MezuroPluginMetricConfigurationControllerTest < ActionController::TestCase assert_response 200 end - should 'test create native metric configuration' do - Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { - :metric_configuration => @metric_configuration.to_hash, - :configuration_name => @metric_configuration.configuration_name}) - get :create_metric_configuration, - :profile => @profile.identifier, - :id => @content.id, - :metric_configuration => @native_hash - assert_response 302 - end should 'test compound metric creation' do Kalibro::MetricConfiguration.expects(:request).with("MetricConfiguration", :save_metric_configuration, { diff --git a/plugins/mezuro/test/unit/mezuro_plugin/helpers/content_viewer_helper_test.rb b/plugins/mezuro/test/unit/mezuro_plugin/helpers/content_viewer_helper_test.rb index 7490463..a06585b 100644 --- a/plugins/mezuro/test/unit/mezuro_plugin/helpers/content_viewer_helper_test.rb +++ b/plugins/mezuro/test/unit/mezuro_plugin/helpers/content_viewer_helper_test.rb @@ -55,4 +55,9 @@ class ContentViewerHelperTest < ActiveSupport::TestCase assert_equal 'AverageMethodLOC', @helper.format_name(metric_configuration_snapshot) end + should 'create aggregation options array' do + assert_equal [["Average","AVERAGE"], ["Median", "MEDIAN"], ["Maximum", "MAXIMUM"], ["Minimum", "MINIMUM"], + ["Count", "COUNT"], ["Standard Deviation", "STANDARD_DEVIATION"]], @helper.aggregation_options + end + end diff --git a/plugins/mezuro/views/content_viewer/show_configuration.rhtml b/plugins/mezuro/views/content_viewer/show_configuration.rhtml index 8c65ea1..f510dd5 100644 --- a/plugins/mezuro/views/content_viewer/show_configuration.rhtml +++ b/plugins/mezuro/views/content_viewer/show_configuration.rhtml @@ -53,7 +53,7 @@ <% else %> - <%= metric_configuration.metric.origin %> + <%= metric_configuration.base_tool_name %> <% end %> <%= metric_configuration.code %> diff --git a/plugins/mezuro/views/mezuro_plugin_metric_configuration/choose_metric.html.erb b/plugins/mezuro/views/mezuro_plugin_metric_configuration/choose_metric.html.erb index bddab69..0a75054 100644 --- a/plugins/mezuro/views/mezuro_plugin_metric_configuration/choose_metric.html.erb +++ b/plugins/mezuro/views/mezuro_plugin_metric_configuration/choose_metric.html.erb @@ -10,8 +10,8 @@ diff --git a/plugins/mezuro/views/mezuro_plugin_metric_configuration/edit.html.erb b/plugins/mezuro/views/mezuro_plugin_metric_configuration/edit.html.erb new file mode 100644 index 0000000..d2a6053 --- /dev/null +++ b/plugins/mezuro/views/mezuro_plugin_metric_configuration/edit.html.erb @@ -0,0 +1,50 @@ + + + + +

<%= @configuration_content.name %> Configuration

+ +<% owner = (not user.nil?) && user.id == @profile.id %> + +<% if owner %> + <%= render :partial => "content_viewer/metric_configuration_form" %> +<% else %> + <%= render :partial => "content_viewer/metric_configuration_view" %> +<% end %> + +
Ranges

+ + + + + + + + + + + + <% if (@metric_configuration.ranges!=nil) + @metric_configuration.ranges.each do |range| %> + <%= render :partial => "mezuro_plugin_range/range", :locals => {:range => range, :id => @configuration_content.id, + :metric_name => @metric.name} %> + <% end + end %> +
+ Label + + Beginning + + End + + Grade + + Color +
+ +
+<% if owner %> + <%= link_to_remote "New Range", :url => {:action =>"new_range", :controller => "mezuro_plugin_range", :id => @configuration_content.id, :metric_name => @metric.name} %> +<% end %> + + diff --git a/plugins/mezuro/views/mezuro_plugin_metric_configuration/edit_metric_configuration.html.erb b/plugins/mezuro/views/mezuro_plugin_metric_configuration/edit_metric_configuration.html.erb deleted file mode 100644 index d2a6053..0000000 --- a/plugins/mezuro/views/mezuro_plugin_metric_configuration/edit_metric_configuration.html.erb +++ /dev/null @@ -1,50 +0,0 @@ - - - - -

<%= @configuration_content.name %> Configuration

- -<% owner = (not user.nil?) && user.id == @profile.id %> - -<% if owner %> - <%= render :partial => "content_viewer/metric_configuration_form" %> -<% else %> - <%= render :partial => "content_viewer/metric_configuration_view" %> -<% end %> - -
Ranges

- - - - - - - - - - - - <% if (@metric_configuration.ranges!=nil) - @metric_configuration.ranges.each do |range| %> - <%= render :partial => "mezuro_plugin_range/range", :locals => {:range => range, :id => @configuration_content.id, - :metric_name => @metric.name} %> - <% end - end %> -
- Label - - Beginning - - End - - Grade - - Color -
- -
-<% if owner %> - <%= link_to_remote "New Range", :url => {:action =>"new_range", :controller => "mezuro_plugin_range", :id => @configuration_content.id, :metric_name => @metric.name} %> -<% end %> - - diff --git a/plugins/mezuro/views/mezuro_plugin_metric_configuration/new_metric_configuration.html.erb b/plugins/mezuro/views/mezuro_plugin_metric_configuration/new_metric_configuration.html.erb deleted file mode 100644 index d028bb9..0000000 --- a/plugins/mezuro/views/mezuro_plugin_metric_configuration/new_metric_configuration.html.erb +++ /dev/null @@ -1,51 +0,0 @@ - - -

<%= @configuration_content.name %> Configuration

- -<% form_for :metric_configuration, :url => {:action =>"create_metric_configuration", :controller => "mezuro_plugin_metric_configuration"}, :method => :get do |f| %> - <%= hidden_field_tag :id, @configuration_content.id %> - <%= f.hidden_field :configuration_name, :value => @configuration_content.name %> - - <% f.fields_for :metric do |m| %> - - <% @metric.language.each do |language| %> - <%= m.hidden_field :language, :multiple => true, :value => language %> - <% end %> - - <%= m.hidden_field "scope", :value => @metric.scope %> -

- <%= m.label :origin, "Collector Name:" %> - <%= @metric.origin %> - <%= m.hidden_field "origin", :value => @metric.origin %> -

-

- <%= m.label :name, "Metric Name:" %> - <%= @metric.name %> - <%= m.hidden_field "name", :value => @metric.name %> -

- - <% m.label :description, "Description:" %> - <% @metric.description %> - <% m.hidden_field "description", :value => @metric.description %> - - <% end %> -

- <%= f.label :code, "Code:" %> - <%= f.text_field :code %> -

-

- <%= f.label :aggregation_form, "Aggregation Form:" %> - <%= f.select :aggregation_form, [["Average","AVERAGE"], ["Median", "MEDIAN"], ["Maximum", "MAXIMUM"], ["Minimum", "MINIMUM"], - ["Count", "COUNT"], ["Standard Deviation", "STANDARD_DEVIATION"]] %> -

-

- <%= f.label :weight, "Weight:" %> - <%= f.text_field :weight %> -

- -

- <%= f.submit "Add" %> -

- -<% end %> - diff --git a/plugins/mezuro/views/mezuro_plugin_metric_configuration/new_native.html.erb b/plugins/mezuro/views/mezuro_plugin_metric_configuration/new_native.html.erb new file mode 100644 index 0000000..21c8d7f --- /dev/null +++ b/plugins/mezuro/views/mezuro_plugin_metric_configuration/new_native.html.erb @@ -0,0 +1,44 @@ + + +

<%= @configuration_content.name %> Configuration

+ +<%= hidden_field_tag :id, @configuration_content.id %> +<% form_for :metric_configuration, :url => {:action =>"create_native", :controller => "mezuro_plugin_metric_configuration"}, :method => :get do |f| %> + <%= f.hidden_field :configuration_id, :value => @configuration_content.configuration_id %> + + <%= labelled_form_field _('Collector Name:'), f.text_field(:base_tool_name, :value => @base_tool_name, :readonly => true) %> + + <% f.fields_for :metric do |m| %> + + <% @metric.language.each do |language| %> + <%= m.hidden_field :language, :multiple => true, :value => language %> + <% end %> + + <%= m.hidden_field "scope", :value => @metric.scope %> + +

+ <%= m.label :name, "Metric Name:" %> + <%= @metric.name %> + <%= m.hidden_field "name", :value => @metric.name %> +

+ <% m.label :description, "Description:" %> + <% @metric.description %> + <% m.hidden_field "description", :value => @metric.description %> + <% end %> + + <%= required labelled_form_field _('Code:'), f.text_field(:code) %> + + <%= required labelled_form_field _('Aggregation Form:'), + f.select(:aggregation_form, MezuroPlugin::Helpers::ContentViewerHelper.aggregation_options) %> + + <%= required labelled_form_field _('Weight:'), f.text_field(:weight) %> + + <%= required labelled_form_field _('Reading Group:'), + f.select(:reading_group_id, @reading_group_names_and_ids) %> + +

+ <%= f.submit "Add" %> +

+ +<% end %> + -- libgit2 0.21.2