configuration_content.rb
3.21 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
class MezuroPlugin::ConfigurationContent < Article
validate_on_create :validate_configuration_name
settings_items :configuration_id
before_save :send_configuration_to_service
after_destroy :remove_configuration_from_service
def self.short_description
'Mezuro configuration'
end
def self.description
'Set of metric configurations to interpret a Kalibro project'
end
include ActionView::Helpers::TagHelper
def to_html(options = {})
lambda do
render :file => 'content_viewer/show_configuration.rhtml'
end
end
def kalibro_configuration #Can't be just "configuration", method name exists somewhere in noosfero
begin
@configuration ||= Kalibro::Configuration.find(self.configuration_id)
rescue Exception => exception
errors.add_to_base(exception.message)
end
@configuration
end
def configuration_names_and_ids
all_names_and_ids = {}
begin
all_configurations = Kalibro::Configuration.all
if(!all_configurations.empty?)
all_configurations.each do |configuration|
all_names_and_ids[configuration.id] = configuration.name
end
end
rescue Exception => exception
errors.add_to_base(exception.message)
end
all_names_and_ids[-1] = "None"
all_names_and_ids
end
def description=(value)
@description=value
end
def description
begin
@description ||= kalibro_configuration.description
rescue
@description = ""
end
@description
end
def metric_configurations
begin
@metric_configurations ||= Kalibro::MetricConfiguration.metric_configurations_of(configuration_id)
rescue Exception => error
errors.add_to_base(error.message)
@metric_configurations = []
end
@metric_configurations
end
def metric_configurations=(value)
@metric_configurations = value.kind_of?(Array) ? value : [value]
@metric_configurations = @metric_configurations.map { |element| to_metric_configuration(element) }
end
private
def self.to_metric_configuration value
value.kind_of?(Hash) ? Kalibro::MetricConfiguration.new(value) : value
end
def validate_configuration_name
existing = configuration_names_and_ids.values.map { |a| a.downcase}
if existing.include?(name.downcase)
errors.add_to_base("Configuration name already exists in Kalibro")
end
end
def send_configuration_to_service
attributes = {:id => configuration_id, :name => name, :description => description}
# if cloning_configuration?
# attributes[:metric_configuration] = configuration_to_clone.metric_configurations_hash
# end
created_configuration = Kalibro::Configuration.create attributes
self.configuration_id = created_configuration.id
end
def remove_configuration_from_service
puts "aqui tem #{@configuration.inspect}"
kalibro_configuration.destroy unless kalibro_configuration.nil?
end
=begin
def configuration_to_clone
@configuration_to_clone ||= find_configuration_to_clone
end
def find_configuration_to_clone
(configuration_to_clone_name == "None") ? nil : Kalibro::Configuration.find_by_name(configuration_to_clone_name)
end
def cloning_configuration?
configuration_to_clone.present?
end
=end
end