From 7a825ff38c4cc0e3703b8e73637a4ca678ea28c3 Mon Sep 17 00:00:00 2001 From: Caio Salgado + Diego Araújo Date: Tue, 10 Jul 2012 17:05:12 -0300 Subject: [PATCH] [Mezuro] Created Kalibro::ModuleResult from module_result client and entity, but not fully working --- plugins/mezuro/lib/kalibro/module_result.rb | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+), 0 deletions(-) create mode 100644 plugins/mezuro/lib/kalibro/module_result.rb diff --git a/plugins/mezuro/lib/kalibro/module_result.rb b/plugins/mezuro/lib/kalibro/module_result.rb new file mode 100644 index 0000000..cb7ba22 --- /dev/null +++ b/plugins/mezuro/lib/kalibro/module_result.rb @@ -0,0 +1,54 @@ +class Kalibro::ModuleResult < Kalibro::Model + + attr_accessor :module, :date, :grade, :metric_result, :compound_metric_with_error + + def self.find_module_result(project_name, module_name, date) + result = module_result.request( + :get_module_result, + { + :project_name => project_name, + :module_name => module_name, + :date => date_with_milliseconds(date) + })[:module_result] + new result + end + + #FIXME change Kalibro::Entities::Module + def module=(value) + @module = value.kind_of?(Hash) ? Kalibro::Entities::Module.from_hash(value) : value + end + + def date=(value) + @date = value.is_a?(String) ? DateTime.parse(value) : value + end + + def grade=(value) + @grade = value.to_f + end + + #FIXME change Kalibro::Entities::MetricResult + def metric_result=(value) + array = value.kind_of?(Array) ? value : [value] + @metric_result = array.each.collect { |element| element.kind_of?(Hash) ? Kalibro::Entities::MetricResult.from_hash(element) : element } + end + + private + + def self.module_result + endpoint = "ModuleResult" + service_address = YAML.load_file("#{RAILS_ROOT}/plugins/mezuro/service.yaml") + Savon::Client.new("#{service_address}#{endpoint}Endpoint/?wsdl") + end + + def self.request(action, request_body = nil) + response = module_result.request(:kalibro, action) { soap.body = request_body } + response.to_hash["#{action}_response".to_sym] + end + + def self.date_with_milliseconds(date) + milliseconds = "." + (date.sec_fraction * 60 * 60 * 24 * 1000).to_s + date.to_s[0..18] + milliseconds + date.to_s[19..-1] + end + + +end -- libgit2 0.21.2