project_content.rb
3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
class MezuroPlugin::ProjectContent < Article
include ActionView::Helpers::TagHelper
settings_items :project_id
validate_on_create :validate_kalibro_project_name
validate_on_create :validate_repository_url
def self.short_description
'Mezuro project'
end
def self.description
'Software project tracked by Kalibro'
end
def to_html(options = {})
lambda do
render :file => 'content_viewer/show_project.rhtml'
end
end
def project
begin
@project ||= Kalibro::Project.find(project_id)
rescue Exception => error
errors.add_to_base(error.message)
end
@project
end
def repositories
begin
@repositories ||= Kalibro::Repository.repositories_of(project_id)
rescue Exception => error
errors.add_to_base(error.message)
end
@repositories
end
def processing(repository_id)
begin
if Kalibro::Processing.has_ready_processing(repository_id)
@processing ||= Kalibro::Processing.last_ready_processing_of(repository_id)
else
@processing = Kalibro::Processing.last_processing_of(repository_id)
end
rescue Exception => error
errors.add_to_base(error.message)
end
@processing
end
def processing_with_date(repository_id, date)
begin
if Kalibro::Processing.has_processing_after(repository_id, date)
@processing ||= Kalibro::Processing.first_processing_after(repository_id, date)
elsif Kalibro::Processing.has_processing_before(repository_id, date)
@processing ||= Kalibro::Processing.last_processing_before(repository_id, date)
end
rescue Exception => error
errors.add_to_base(error.message)
end
@processing
end
def module_result(repository_id, date = nil)
@processing ||= date.nil? ? processing(repository_id) : processing_with_date(repository_id, date)
begin
@module_result ||= Kalibro::ModuleResult.find(@processing.results_root_id)
rescue Exception => error
errors.add_to_base(error.message)
end
@module_result
end
def result_history(module_result_id)
begin
@result_history ||= Kalibro::MetricResult.history_of(module_result_id)
rescue Exception => error
errors.add_to_base(error.message)
end
end
def description=(value)
@description=value
end
def description
@description
end
def repositories=(value)
@repositories = value.kind_of?(Array) ? value : [value]
@repositories = @repositories.map { |element| to_repository(element) }
end
after_save :send_project_to_service
after_destroy :destroy_project_from_service
private
def self.to_repository value
value.kind_of?(Hash) ? Kalibro::Repository.new(value) : value
end
def validate_repository_url
if(@repositories.nil? || repository_url == "")
errors.add_to_base("Repository URL is mandatory")
end
end
def send_project_to_service
created_project = create_kalibro_project
created_project.process_project(periodicity_in_days)
end
def create_kalibro_project
Kalibro::Project.create(
:name => name,
:license => project_license,
:description => description,
:repository => {
:type => repository_type,
:address => repository_url
},
:configuration_name => configuration_name
)
end
def destroy_project_from_service
project.destroy unless project.nil?
end
end