Commit 5e54605b7ac316d824483cd3156a797f6fb813b6

Authored by João M. M. da Silva + Diego Araújo
Committed by Paulo Meireles
1 parent 8d1ac533

[Mezuro] Refactored base_tool and native_metric entities/clients to model

plugins/mezuro/controllers/mezuro_plugin_myprofile_controller.rb
@@ -5,18 +5,18 @@ class MezuroPluginMyprofileController < ProfileController @@ -5,18 +5,18 @@ class MezuroPluginMyprofileController < ProfileController
5 5
6 def choose_base_tool 6 def choose_base_tool
7 @configuration_content = profile.articles.find(params[:id]) 7 @configuration_content = profile.articles.find(params[:id])
8 - @base_tools = Kalibro::Client::BaseToolClient.base_tools 8 + @base_tools = Kalibro::BaseTool.all_names
9 end 9 end
10 10
11 def choose_metric 11 def choose_metric
12 @configuration_content = profile.articles.find(params[:id]) 12 @configuration_content = profile.articles.find(params[:id])
13 @base_tool = params[:base_tool] 13 @base_tool = params[:base_tool]
14 - @supported_metrics = Kalibro::Client::BaseToolClient.metrics @base_tool 14 + @supported_metrics = Kalibro::BaseTool.find_by_name(@base_tool).supported_metrics
15 end 15 end
16 16
17 def new_metric_configuration 17 def new_metric_configuration
18 @configuration_content = profile.articles.find(params[:id]) 18 @configuration_content = profile.articles.find(params[:id])
19 - @metric = Kalibro::Client::BaseToolClient.metric params[:metric_name], params[:base_tool] 19 + @metric = Kalibro::BaseTool.find_by_name(params[:base_tool]).metric params[:metric_name]
20 end 20 end
21 21
22 def new_compound_metric_configuration 22 def new_compound_metric_configuration
@@ -123,7 +123,7 @@ class MezuroPluginMyprofileController < ProfileController @@ -123,7 +123,7 @@ class MezuroPluginMyprofileController < ProfileController
123 123
124 def new_metric_configuration_instance 124 def new_metric_configuration_instance
125 metric_configuration = Kalibro::Entities::MetricConfiguration.new 125 metric_configuration = Kalibro::Entities::MetricConfiguration.new
126 - metric_configuration.metric = Kalibro::Entities::NativeMetric.new 126 + metric_configuration.metric = Kalibro::NativeMetric.new
127 assign_metric_configuration_instance(metric_configuration, Kalibro::Entities::MetricConfiguration::NATIVE_TYPE) 127 assign_metric_configuration_instance(metric_configuration, Kalibro::Entities::MetricConfiguration::NATIVE_TYPE)
128 end 128 end
129 129
plugins/mezuro/lib/kalibro/base_tool.rb 0 → 100644
@@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
  1 +class Kalibro::BaseTool < Kalibro::Model
  2 +
  3 + attr_accessor :name, :description, :supported_metric
  4 +
  5 + def self.all_names
  6 + request("BaseTool", :get_base_tool_names)[:base_tool_name].to_a
  7 + end
  8 +
  9 + def self.find_by_name(name)
  10 + new request("BaseTool", :get_base_tool, {:base_tool_name => name})[:base_tool]
  11 + end
  12 +
  13 + def supported_metric=(value)
  14 + @supported_metric = to_objects_array(value, Kalibro::NativeMetric)
  15 + end
  16 +
  17 + def supported_metrics
  18 + @supported_metric
  19 + end
  20 +
  21 + def supported_metrics=(supported_metrics)
  22 + @supported_metric = supported_metrics
  23 + end
  24 +
  25 + def metric(name)
  26 + supported_metrics.find {|metric| metric.name == name}
  27 + end
  28 +
  29 +end
plugins/mezuro/lib/kalibro/client/base_tool_client.rb
@@ -1,28 +0,0 @@ @@ -1,28 +0,0 @@
1 -class Kalibro::Client::BaseToolClient  
2 -  
3 - def self.base_tools  
4 - new.base_tool_names  
5 - end  
6 -  
7 - def self.metrics(base_tool)  
8 - new.base_tool(base_tool).supported_metrics  
9 - end  
10 -  
11 - def self.metric(metric_name, base_tool)  
12 - metrics(base_tool).find {|metric| metric.name == metric_name}  
13 - end  
14 -  
15 - def initialize  
16 - @port = Kalibro::Client::Port.new('BaseTool')  
17 - end  
18 -  
19 - def base_tool_names  
20 - @port.request(:get_base_tool_names)[:base_tool_name].to_a  
21 - end  
22 -  
23 - def base_tool(name)  
24 - hash = @port.request(:get_base_tool, {:base_tool_name => name})[:base_tool]  
25 - Kalibro::Entities::BaseTool.from_hash(hash)  
26 - end  
27 -  
28 -end  
plugins/mezuro/lib/kalibro/client/project_client.rb
@@ -1,65 +0,0 @@ @@ -1,65 +0,0 @@
1 -class Kalibro::Client::ProjectClient  
2 -  
3 - def self.project(project_name)  
4 - new.project(project_name)  
5 - end  
6 -  
7 - def self.save(project_content)  
8 - project = create_project(project_content)  
9 - new.save(project)  
10 - end  
11 -  
12 - def self.remove(project_name)  
13 - instance = new  
14 - if (instance.project_names.include?(project_name))  
15 - instance.remove(project_name)  
16 - end  
17 - end  
18 -  
19 - def self.create_project (project_content)  
20 - project = Kalibro::Entities::Project.new  
21 - project.name = project_content.name  
22 - project.license = project_content.license  
23 - project.description = project_content.description  
24 - project.repository = create_repository(project_content)  
25 - project.configuration_name = project_content.configuration_name  
26 - project  
27 - end  
28 -  
29 - def self.create_repository(project_content)  
30 - repository = Kalibro::Entities::Repository.new  
31 - repository.type = project_content.repository_type  
32 - repository.address = project_content.repository_url  
33 - repository  
34 - end  
35 -  
36 - def initialize  
37 - @port = Kalibro::Client::Port.new('Project')  
38 - end  
39 -  
40 - def save(project)  
41 - @port.request(:save_project, {:project => project.to_hash})  
42 - end  
43 -  
44 - def project_names  
45 - @port.request(:get_project_names)[:project_name].to_a  
46 - end  
47 -  
48 - def project(project_name)  
49 - begin  
50 - hash = @port.request(:get_project, {:project_name => project_name})[:project]  
51 - rescue Exception => error  
52 - unless (error.message =~ /There is no project named/).nil?  
53 - return nil  
54 - else  
55 - raise error  
56 - end  
57 - end  
58 - Kalibro::Entities::Project.from_hash(hash)  
59 - end  
60 -  
61 - def remove(project_name)  
62 - @port.request(:remove_project, {:project_name => project_name})  
63 - end  
64 -  
65 -end  
plugins/mezuro/lib/kalibro/entities/base_tool.rb
@@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
1 -class Kalibro::Entities::BaseTool < Kalibro::Entities::Entity  
2 -  
3 - attr_accessor :name, :description, :supported_metric  
4 -  
5 - def supported_metric=(value)  
6 - @supported_metric = to_entity_array(value, Kalibro::Entities::NativeMetric)  
7 - end  
8 -  
9 - def supported_metrics  
10 - @supported_metric  
11 - end  
12 -  
13 - def supported_metrics=(supported_metrics)  
14 - @supported_metric = supported_metrics  
15 - end  
16 -  
17 -end  
18 \ No newline at end of file 0 \ No newline at end of file
plugins/mezuro/lib/kalibro/entities/metric.rb
@@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
1 -class Kalibro::Entities::Metric < Kalibro::Entities::Entity  
2 -  
3 - attr_accessor :name, :scope, :description  
4 -  
5 -end  
plugins/mezuro/lib/kalibro/entities/native_metric.rb
@@ -1,17 +0,0 @@ @@ -1,17 +0,0 @@
1 -class Kalibro::Entities::NativeMetric < Kalibro::Entities::Metric  
2 -  
3 - attr_accessor :origin, :language  
4 -  
5 - def languages  
6 - @language  
7 - end  
8 -  
9 - def languages=(languages)  
10 - @language = languages  
11 - end  
12 -  
13 - def language=(value)  
14 - @language = to_entity_array(value)  
15 - end  
16 -  
17 -end  
plugins/mezuro/lib/kalibro/entities/project.rb
@@ -1,12 +0,0 @@ @@ -1,12 +0,0 @@
1 -class Kalibro::Entities::Project < Kalibro::Entities::Entity  
2 -  
3 - attr_accessor :name, :license, :description, :repository, :configuration_name, :state, :error  
4 -  
5 - def repository=(value)  
6 - @repository = to_entity(value, Kalibro::Entities::Repository)  
7 - end  
8 -  
9 - def error=(value)  
10 - @error = to_entity(value, Kalibro::Entities::Error)  
11 - end  
12 -end  
plugins/mezuro/lib/kalibro/entities/repository.rb
@@ -1,5 +0,0 @@ @@ -1,5 +0,0 @@
1 -class Kalibro::Entities::Repository < Kalibro::Entities::Entity  
2 -  
3 - attr_accessor :type, :address, :username, :password  
4 -  
5 -end  
6 \ No newline at end of file 0 \ No newline at end of file
plugins/mezuro/lib/kalibro/metric.rb 0 → 100644
@@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
  1 +class Kalibro::Metric < Kalibro::Model
  2 +
  3 + attr_accessor :name, :scope, :description
  4 +
  5 +end
plugins/mezuro/lib/kalibro/model.rb
@@ -27,6 +27,7 @@ class Kalibro::Model @@ -27,6 +27,7 @@ class Kalibro::Model
27 27
28 def convert_to_hash(value) 28 def convert_to_hash(value)
29 return value if value.nil? 29 return value if value.nil?
  30 + return value.collect { |element| convert_to_hash(element) } if value.is_a?(Array)
30 return value.to_hash if value.is_a?(Kalibro::Model) 31 return value.to_hash if value.is_a?(Kalibro::Model)
31 value 32 value
32 end 33 end
@@ -48,4 +49,13 @@ class Kalibro::Model @@ -48,4 +49,13 @@ class Kalibro::Model
48 response.to_hash["#{action}_response".to_sym] 49 response.to_hash["#{action}_response".to_sym]
49 end 50 end
50 51
  52 + def to_objects_array(value, model_class = nil)
  53 + array = value.kind_of?(Array) ? value : [value]
  54 + array.each.collect { |element| to_object(element, model_class) }
  55 + end
  56 +
  57 + def to_object(value, model_class)
  58 + value.kind_of?(Hash) ? model_class.new(value) : value
  59 + end
  60 +
51 end 61 end
plugins/mezuro/lib/kalibro/native_metric.rb 0 → 100644
@@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
  1 +class Kalibro::NativeMetric < Kalibro::Metric
  2 +
  3 + attr_accessor :origin, :language
  4 +
  5 + def languages
  6 + @language
  7 + end
  8 +
  9 + def languages=(languages)
  10 + @language = languages
  11 + end
  12 +
  13 + def language=(value)
  14 + @language = to_objects_array(value)
  15 + end
  16 +
  17 +end
plugins/mezuro/lib/kalibro/project.rb
@@ -42,7 +42,7 @@ class Kalibro::Project &lt; Kalibro::Model @@ -42,7 +42,7 @@ class Kalibro::Project &lt; Kalibro::Model
42 end 42 end
43 43
44 def repository=(value) 44 def repository=(value)
45 - @repository = (value.kind_of?(Hash)) ? Kalibro::Repository.new(value) : value 45 + @repository = to_object(value, Kalibro::Repository)
46 end 46 end
47 47
48 end 48 end
plugins/mezuro/test/fixtures/base_tool_fixtures.rb
@@ -2,16 +2,11 @@ require File.dirname(__FILE__) + &#39;/native_metric_fixtures&#39; @@ -2,16 +2,11 @@ require File.dirname(__FILE__) + &#39;/native_metric_fixtures&#39;
2 2
3 class BaseToolFixtures 3 class BaseToolFixtures
4 4
5 - def self.analizo  
6 - base_tool = Kalibro::Entities::BaseTool.new  
7 - base_tool.name = 'Analizo'  
8 - base_tool.supported_metrics = [  
9 - NativeMetricFixtures.total_cof,  
10 - NativeMetricFixtures.amloc]  
11 - base_tool 5 + def self.base_tool
  6 + Kalibro::BaseTool.new base_tool_hash
12 end 7 end
13 8
14 - def self.analizo_hash 9 + def self.base_tool_hash
15 {:name => 'Analizo', :supported_metric => [ 10 {:name => 'Analizo', :supported_metric => [
16 NativeMetricFixtures.total_cof_hash, 11 NativeMetricFixtures.total_cof_hash,
17 NativeMetricFixtures.amloc_hash]} 12 NativeMetricFixtures.amloc_hash]}
plugins/mezuro/test/fixtures/native_metric_fixtures.rb
1 class NativeMetricFixtures 1 class NativeMetricFixtures
2 2
3 def self.total_cof 3 def self.total_cof
4 - total_cof = Kalibro::Entities::NativeMetric.new  
5 - total_cof.name = 'Total Coupling Factor'  
6 - total_cof.scope = 'APPLICATION'  
7 - total_cof.origin = 'Analizo'  
8 - total_cof.languages = ['JAVA']  
9 - total_cof 4 + Kalibro::NativeMetric.new total_cof_hash
10 end 5 end
11 6
12 def self.total_cof_hash 7 def self.total_cof_hash
@@ -14,12 +9,7 @@ class NativeMetricFixtures @@ -14,12 +9,7 @@ class NativeMetricFixtures
14 end 9 end
15 10
16 def self.amloc 11 def self.amloc
17 - total_cof = Kalibro::Entities::NativeMetric.new  
18 - total_cof.name = 'Average Method LOC'  
19 - total_cof.scope = 'CLASS'  
20 - total_cof.origin = 'Analizo'  
21 - total_cof.languages = ['JAVA']  
22 - total_cof 12 + Kalibro::NativeMetric.new amloc_hash
23 end 13 end
24 14
25 def self.amloc_hash 15 def self.amloc_hash
plugins/mezuro/test/unit/kalibro/base_tool_test.rb 0 → 100644
@@ -0,0 +1,36 @@ @@ -0,0 +1,36 @@
  1 +require "test_helper"
  2 +
  3 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures"
  4 +
  5 +class BaseToolTest < ActiveSupport::TestCase
  6 +
  7 + def setup
  8 + @hash = BaseToolFixtures.base_tool_hash
  9 + @base_tool = BaseToolFixtures.base_tool
  10 + end
  11 +
  12 + should 'create base tool from hash' do
  13 + assert_equal @base_tool.name, Kalibro::BaseTool.new(@hash).name
  14 + end
  15 +
  16 + should 'convert base tool to hash' do
  17 + assert_equal @hash, @base_tool.to_hash
  18 + end
  19 +
  20 + should 'get base tool names' do
  21 + names = ['Analizo', 'Checkstyle']
  22 + Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool_names).returns({:base_tool_name => names})
  23 + assert_equal names, Kalibro::BaseTool.all_names
  24 + end
  25 +
  26 + should 'get base tool by name' do
  27 + request_body = {:base_tool_name => @base_tool.name}
  28 + Kalibro::BaseTool.expects(:request).with("BaseTool", :get_base_tool, request_body).returns({:base_tool => @hash})
  29 + assert_equal @base_tool.name, Kalibro::BaseTool.find_by_name(@base_tool.name).name
  30 + end
  31 +
  32 + should 'get base tool metrics' do
  33 + assert_equal @base_tool.supported_metrics[0].name, @base_tool.metric('Total Coupling Factor').name
  34 + end
  35 +
  36 +end
plugins/mezuro/test/unit/kalibro/client/base_tool_client_test.rb
@@ -1,37 +0,0 @@ @@ -1,37 +0,0 @@
1 -require "test_helper"  
2 -  
3 -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures"  
4 -  
5 -class BaseToolClientTest < ActiveSupport::TestCase  
6 -  
7 - def setup  
8 - @port = mock  
9 - Kalibro::Client::Port.expects(:new).with('BaseTool').returns(@port)  
10 - @client = Kalibro::Client::BaseToolClient.new  
11 - end  
12 -  
13 - should 'get base tool names (zero)' do  
14 - @port.expects(:request).with(:get_base_tool_names).returns({})  
15 - assert_equal [], @client.base_tool_names  
16 - end  
17 -  
18 - should 'get base tool names (one)' do  
19 - name = 'Analizo'  
20 - @port.expects(:request).with(:get_base_tool_names).returns({:base_tool_name => name})  
21 - assert_equal [name], @client.base_tool_names  
22 - end  
23 -  
24 - should 'get base tool names' do  
25 - names = ['Analizo', 'Checkstyle']  
26 - @port.expects(:request).with(:get_base_tool_names).returns({:base_tool_name => names})  
27 - assert_equal names, @client.base_tool_names  
28 - end  
29 -  
30 - should 'get base tool by name' do  
31 - analizo = BaseToolFixtures.analizo  
32 - request_body = {:base_tool_name => 'Analizo'}  
33 - @port.expects(:request).with(:get_base_tool, request_body).returns({:base_tool => analizo.to_hash})  
34 - assert_equal analizo, @client.base_tool('Analizo')  
35 - end  
36 -  
37 -end  
38 \ No newline at end of file 0 \ No newline at end of file
plugins/mezuro/test/unit/kalibro/entities/base_tool_test.rb
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -require "test_helper"  
2 -  
3 -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/base_tool_fixtures"  
4 -  
5 -class BaseToolTest < ActiveSupport::TestCase  
6 -  
7 - def setup  
8 - @hash = BaseToolFixtures.analizo_hash  
9 - @base_tool = BaseToolFixtures.analizo  
10 - end  
11 -  
12 - should 'create base tool from hash' do  
13 - assert_equal @base_tool, Kalibro::Entities::BaseTool.from_hash(@hash)  
14 - end  
15 -  
16 - should 'convert base tool to hash' do  
17 - assert_equal @hash, @base_tool.to_hash  
18 - end  
19 -  
20 -end  
21 \ No newline at end of file 0 \ No newline at end of file
plugins/mezuro/test/unit/kalibro/entities/metric_test.rb
@@ -1,24 +0,0 @@ @@ -1,24 +0,0 @@
1 -require "test_helper"  
2 -  
3 -class MetricTest < ActiveSupport::TestCase  
4 -  
5 - def setup  
6 - name = 'MetricTest metric'  
7 - scope = 'METHOD'  
8 - description = 'Metric created for testing'  
9 - @hash = {:name => name, :scope => scope, :description => description}  
10 - @metric = Kalibro::Entities::Metric.new  
11 - @metric.name = name  
12 - @metric.scope = scope  
13 - @metric.description = description  
14 - end  
15 -  
16 - should 'create metric from hash' do  
17 - assert_equal @metric, Kalibro::Entities::Metric.from_hash(@hash)  
18 - end  
19 -  
20 - should 'convert metric to hash' do  
21 - assert_equal @hash, @metric.to_hash  
22 - end  
23 -  
24 -end  
25 \ No newline at end of file 0 \ No newline at end of file
plugins/mezuro/test/unit/kalibro/entities/native_metric_test.rb
@@ -1,20 +0,0 @@ @@ -1,20 +0,0 @@
1 -require "test_helper"  
2 -  
3 -require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures"  
4 -  
5 -class NativeMetricTest < ActiveSupport::TestCase  
6 -  
7 - def setup  
8 - @hash = NativeMetricFixtures.amloc_hash  
9 - @metric = NativeMetricFixtures.amloc  
10 - end  
11 -  
12 - should 'create native metric from hash' do  
13 - assert_equal @metric, Kalibro::Entities::NativeMetric.from_hash(@hash)  
14 - end  
15 -  
16 - should 'convert native metric to hash' do  
17 - assert_equal @hash, @metric.to_hash  
18 - end  
19 -  
20 -end  
21 \ No newline at end of file 0 \ No newline at end of file
plugins/mezuro/test/unit/kalibro/native_metric_test.rb 0 → 100644
@@ -0,0 +1,20 @@ @@ -0,0 +1,20 @@
  1 +require "test_helper"
  2 +
  3 +require "#{RAILS_ROOT}/plugins/mezuro/test/fixtures/native_metric_fixtures"
  4 +
  5 +class NativeMetricTest < ActiveSupport::TestCase
  6 +
  7 + def setup
  8 + @hash = NativeMetricFixtures.amloc_hash
  9 + @metric = NativeMetricFixtures.amloc
  10 + end
  11 +
  12 + should 'create native metric from hash' do
  13 + assert_equal @hash[:name], Kalibro::NativeMetric.new(@hash).name
  14 + end
  15 +
  16 + should 'convert native metric to hash' do
  17 + assert_equal @hash, @metric.to_hash
  18 + end
  19 +
  20 +end