Class: Katello::Util::PackageFilter
- Inherits:
-
Object
- Object
- Katello::Util::PackageFilter
- Defined in:
- app/lib/katello/util/package_filter.rb
Constant Summary collapse
- LESS_THAN =
"<"
- GREATER_THAN =
">"
- EQUAL =
"="
- OPERATORS =
[LESS_THAN, GREATER_THAN, EQUAL]
Instance Attribute Summary collapse
-
#epoch ⇒ Object
Returns the value of attribute epoch.
-
#operator ⇒ Object
Returns the value of attribute operator.
-
#relation ⇒ Object
Returns the value of attribute relation.
-
#release ⇒ Object
Returns the value of attribute release.
-
#version ⇒ Object
Returns the value of attribute version.
Instance Method Summary collapse
- #convert(name = '?') ⇒ Object
- #extract_epoch_version_release(evr) ⇒ Object
-
#initialize(relation, evr, operator = nil) ⇒ PackageFilter
constructor
A new instance of PackageFilter.
- #results ⇒ Object
Constructor Details
#initialize(relation, evr, operator = nil) ⇒ PackageFilter
Returns a new instance of PackageFilter.
11 12 13 14 15 |
# File 'app/lib/katello/util/package_filter.rb', line 11 def initialize(relation, evr, operator = nil) extract_epoch_version_release(evr) self.operator = operator self.relation = relation end |
Instance Attribute Details
#epoch ⇒ Object
Returns the value of attribute epoch.
9 10 11 |
# File 'app/lib/katello/util/package_filter.rb', line 9 def epoch @epoch end |
#operator ⇒ Object
Returns the value of attribute operator.
9 10 11 |
# File 'app/lib/katello/util/package_filter.rb', line 9 def operator @operator end |
#relation ⇒ Object
Returns the value of attribute relation.
9 10 11 |
# File 'app/lib/katello/util/package_filter.rb', line 9 def relation @relation end |
#release ⇒ Object
Returns the value of attribute release.
9 10 11 |
# File 'app/lib/katello/util/package_filter.rb', line 9 def release @release end |
#version ⇒ Object
Returns the value of attribute version.
9 10 11 |
# File 'app/lib/katello/util/package_filter.rb', line 9 def version @version end |
Instance Method Details
#convert(name = '?') ⇒ Object
44 45 46 |
# File 'app/lib/katello/util/package_filter.rb', line 44 def convert(name = '?') "convert_to(#{name}, 'SQL_ASCII')" end |
#extract_epoch_version_release(evr) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'app/lib/katello/util/package_filter.rb', line 17 def extract_epoch_version_release(evr) match = case evr when /\A(\d+):(.*)-(.*)\z/ evr.match(/\A(?<epoch>\d+):(?<version>.*)-(?<release>.*)\z/) when /\A(\d+):(.*)\z/ evr.match(/\A(?<epoch>\d+):(?<version>.*)\z/) when /\A(.*)-(.*)\z/ evr.match(/\A(?<version>.*)-(?<release>.*)\z/) else evr.match(/\A(?<version>.*)\z/) end self.version = Package.sortable_version(match[:version]) self.epoch = match[:epoch] rescue nil self.release = (match[:release] rescue nil) ? Package.sortable_version(match[:release]) : nil end |
#results ⇒ Object
33 34 35 36 37 38 39 40 41 42 |
# File 'app/lib/katello/util/package_filter.rb', line 33 def results epoch_clause = "epoch #{operator} :epoch OR (epoch = :epoch AND (%s))" version_clause = "#{convert(:version_sortable)} #{operator} #{convert(':version')}" release_clause = "(#{convert(:version_sortable)} = #{convert(':version')} AND " \ "#{convert(:release_sortable)} #{operator} #{convert(':release')})" version_clause = "#{version_clause} OR #{release_clause}" unless release.blank? version_clause = epoch_clause % version_clause unless epoch.blank? self.relation.where(version_clause, :version => version, :release => release, :epoch => epoch) end |