On 12/03/2010 09:25 AM, [email protected] wrote:
...
> +  def self.check_hwp_property(p1, p2)
> +    if p1.kind == 'range'
> +      calculate_range_match(p1, p2)
> +    elsif p2.kind == 'range'
> +      calculate_range_match(p2, p1)
> +    else
> +      return !(create_array_from_property(p1)&  
> create_array_from_property(p2)).empty?
> +    end
> +  end
> +
> +  def self.calculate_range_match(p1, p2)
> +    case p2.kind
> +    when 'range'
> +      return !(p1.range_first.to_f>  p2.range_last.to_f || 
> p1.range_last.to_f<  p2.range_first.to_f)
> +
> +    when 'enum'
> +      p2.property_enum_entries.each do |enum|
> +        if (p1.range_first.to_f..p1.range_last.to_f) === enum.value.to_f
> +          return true
> +        end
> +      end
> +      return false
> +
> +    when 'fixed'
> +     return (p1.range_first.to_f..p1.range_last.to_f) === p2.value.to_f
> +
> +    end
> +  end
> +
> +  def self.create_array_from_property(p)
> +    case p.kind
> +    when 'fixed'
> +      return [p.value.to_f]
> +
> +    when 'enum'
> +      return p.property_enum_entries.map { |enum| enum.value.to_f }
> +    end
> +  end
>   end

Hi, just a minor note: above methods could be instance methods of 
HardwareProfileProperty model. So for example:

check_hwp_property(p1, p2)

could be called:

p1.matches?(p2) (or whatever else method name...)

Jan
_______________________________________________
deltacloud-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/deltacloud-devel

Reply via email to