You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

quality_model.rb 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #
  2. # Sonar, entreprise quality control tool.
  3. # Copyright (C) 2009 SonarSource SA
  4. # mailto:contact AT sonarsource DOT com
  5. #
  6. # Sonar is free software; you can redistribute it and/or
  7. # modify it under the terms of the GNU Lesser General Public
  8. # License as published by the Free Software Foundation; either
  9. # version 3 of the License, or (at your option) any later version.
  10. #
  11. # Sonar is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  14. # Lesser General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU Lesser General Public
  17. # License along with Sonar; if not, write to the Free Software
  18. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
  19. #
  20. class QualityModel < ActiveRecord::Base
  21. validates_length_of :name, :within => 1..100
  22. validates_uniqueness_of :name
  23. has_many :characteristics, :dependent => :delete_all
  24. def root_characteristics(only_enabled=true)
  25. @roots ||=
  26. begin
  27. characteristics.select do |c|
  28. c.parents.empty? && (!only_enabled || c.enabled)
  29. end
  30. end
  31. end
  32. def characteristics_with_rule(only_enabled=true)
  33. @characteristics_with_rule ||=
  34. begin
  35. characteristics.select do |c|
  36. (!c.rule_id.nil?) && (!only_enabled || c.enabled)
  37. end
  38. end
  39. end
  40. def characteristics_without_rule(only_enabled=true)
  41. @characteristics_without_rule ||=
  42. begin
  43. characteristics.select do |c|
  44. c.rule_id.nil? && (!only_enabled || c.enabled)
  45. end
  46. end
  47. end
  48. # be careful, can return disabled characteristic
  49. def characteristic(id)
  50. @characteristics_by_id ||=
  51. begin
  52. hash={}
  53. characteristics.each {|c| hash[c.id]=c}
  54. hash
  55. end
  56. @characteristics_by_id[id]
  57. end
  58. end