class Aio::Warning::WarningSummarize
Attributes
device_warning[R]
设备的警告信息 device_warning
= { device_name => device_warning_klass }
summary[R]
按结构保存警告信息 summary = { :serious =>
{ :crc => { device_name => { :klass =>device_klass] , :detail => device_klass.warning }} }
Public Class Methods
new(device_manager)
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 17 def initialize(device_manager) @device_manager = device_manager @description = Description.new(device_manager.module_manager) clear end
Public Instance Methods
append_issue(warning_info, level, device, klass)
click to toggle source
增加警告信息
# File lib/aio/core/warning/warning_summarize.rb, line 65 def append_issue(warning_info, level, device, klass) warning_info.each_pair do |issue, detail| # 如果没有, 则加入Hash unless summary[level].has_key?(issue) summary[level][issue] = {} end summary[level][issue][device] = { :klass => klass, :detail => detail } end end
append_issue_compare(warning_info, device, klass)
click to toggle source
针对compare添加警告信息 为了跟其他种类的警告信息一致,重复两次:compare
# File lib/aio/core/warning/warning_summarize.rb, line 78 def append_issue_compare(warning_info, device, klass) summary[:compare][:compare] = {} summary[:compare][:compare][device] = { klass: klass, detail: warning_info } end
compare_info()
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 214 def compare_info summary[:compare] end
compare_number()
click to toggle source
比较差异警告条数
# File lib/aio/core/warning/warning_summarize.rb, line 97 def compare_number number(summary[:compare]) end
device_ordinary_sort()
click to toggle source
按照设备分类取到的一般警告数
# File lib/aio/core/warning/warning_summarize.rb, line 159 def device_ordinary_sort st = [] @device_warning.each_pair do |name, klass| st << [name, klass.ordinary_number] end st.sort! do |x, y| y[1] <=> x[1] end st.delete_if do |x| x[0].empty? or x[1] == 0 end end
device_serious_sort()
click to toggle source
按照设备分类取到的严重警告数
# File lib/aio/core/warning/warning_summarize.rb, line 143 def device_serious_sort st = [] @device_warning.each_pair do |name, klass| st << [name, klass.serious_number] end st.sort! do |x, y| y[1] <=> x[1] end st.delete_if do |x| x[0].empty? or x[1] == 0 end end
device_warning_sort()
click to toggle source
按照权重,对 device_warning
排序
# File lib/aio/core/warning/warning_summarize.rb, line 129 def device_warning_sort arr = device_warning.to_a arr.sort! do |x, y| x1 = x[1] y1 = y[1] x_wgt = (x1.serious_number*5) + (x1.ordinary_number) + (x1.compare_number*3) y_wgt = (y1.serious_number*5) + (y1.ordinary_number) + (y1.compare_number*3) y_wgt <=> x_wgt end return arr end
get_desc(sym)
click to toggle source
通过case获取描述模块的实例
# File lib/aio/core/warning/warning_summarize.rb, line 24 def get_desc(sym) @description.get_desc(sym) end
has_compare?()
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 124 def has_compare? compare_number > 0 ? true : false end
has_ordinary?()
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 120 def has_ordinary? ordinary_number > 0 ? true : false end
has_serious?()
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 116 def has_serious? serious_number > 0 ? true : false end
inspect()
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 28 def inspect "#<Aio::Warning::WarningSummarize @summary, @device_warning>" end
number(hash)
click to toggle source
统计警告条目数
# File lib/aio/core/warning/warning_summarize.rb, line 107 def number(hash) num = 0 hash.each_value do |v| num += v.size end return num end
ordinary_info()
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 210 def ordinary_info summary[:ordinary] end
ordinary_number()
click to toggle source
一般警告信息条数
# File lib/aio/core/warning/warning_summarize.rb, line 92 def ordinary_number number(summary[:ordinary]) end
problem_frequency()
click to toggle source
发生频率高的问题
# File lib/aio/core/warning/warning_summarize.rb, line 175 def problem_frequency tmp = [] summary.each_value do |info| info.each_pair do |prb, dvs| tmp << [prb, dvs.size] end end # 反向排序 tmp.sort { |x, y| x[1] <=> y[1] }.reverse end
serious_description()
click to toggle source
取得严重信息的描述列表 返回结构:
:crc => { :description => CRC描述类, :devices => [[dev1, klass1], ...] }
# File lib/aio/core/warning/warning_summarize.rb, line 191 def serious_description res = {} serious_info.each_pair do |prb, dvs_info| res[prb] = { :description => @descripion.get(prb) } tmp = [] dvs_info.each_pair do |device_name, info| tmp << [device_name, info[:klass]] end res[prb][:devices] = tmp end return res end
serious_info()
click to toggle source
严重信息
# File lib/aio/core/warning/warning_summarize.rb, line 206 def serious_info summary[:serious] end
serious_number()
click to toggle source
严重警告条数
# File lib/aio/core/warning/warning_summarize.rb, line 87 def serious_number number(summary[:serious]) end
tidy_warning()
click to toggle source
整理警告信息 改变结构变成
# File lib/aio/core/warning/warning_summarize.rb, line 34 def tidy_warning # 清除原先 summary clear devices.each_pair do |device, klass| warning_klass = klass.warning_klass @device_warning[device] = klass.warning_klass # 当有严重警告的时候 if warning_klass.has_warning_serious? append_issue(warning_klass.warning_info_serious, :serious, device, klass) end # 当有一般信息的时候 if warning_klass.has_warning_ordinary? append_issue(warning_klass.warning_info_ordinary, :ordinary, device, klass) end # 当有比较误差信息的时候 # NOTE 这个比较暂时去掉 if warning_klass.has_warning_compare? # append_issue(warning_klass.warning_info_compare, :compare, device, klass) append_issue_compare(warning_klass.warning_info_compare, device, klass) end end @summary end
total_number()
click to toggle source
全部警告条数
# File lib/aio/core/warning/warning_summarize.rb, line 102 def total_number serious_number + ordinary_number + compare_number end
Private Instance Methods
clear()
click to toggle source
清零变量
# File lib/aio/core/warning/warning_summarize.rb, line 221 def clear clear_summary clear_device_warning end
clear_device_warning()
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 234 def clear_device_warning @device_warning = {} end
clear_summary()
click to toggle source
# File lib/aio/core/warning/warning_summarize.rb, line 226 def clear_summary @summary = { :serious => {}, :ordinary => {}, :compare => {} } end
device_manager()
click to toggle source
方便使用
# File lib/aio/core/warning/warning_summarize.rb, line 239 def device_manager @device_manager end
devices()
click to toggle source
方便使用 devices
# File lib/aio/core/warning/warning_summarize.rb, line 244 def devices device_manager.devices end