Filtration/Filtration.ObjectModel/NumericFilterPredicate.cs

92 lines
2.7 KiB
C#
Raw Normal View History

2015-12-20 10:17:26 -05:00
using System;
using System.ComponentModel;
2015-06-04 13:15:54 -04:00
using System.Runtime.CompilerServices;
2015-06-24 14:57:16 -04:00
using Filtration.ObjectModel.Annotations;
using Filtration.ObjectModel.Enums;
using Filtration.ObjectModel.Extensions;
2015-06-04 13:15:54 -04:00
2015-06-24 14:57:16 -04:00
namespace Filtration.ObjectModel
2015-06-04 13:15:54 -04:00
{
2015-06-24 14:57:16 -04:00
public class NumericFilterPredicate : INotifyPropertyChanged
2015-06-04 13:15:54 -04:00
{
private FilterPredicateOperator _predicateOperator;
private int _predicateOperand;
public NumericFilterPredicate(FilterPredicateOperator predicateOperator, int predicateOperand)
{
PredicateOperator = predicateOperator;
PredicateOperand = predicateOperand;
}
public NumericFilterPredicate()
{
}
public FilterPredicateOperator PredicateOperator
{
get { return _predicateOperator; }
set
{
_predicateOperator = value;
OnPropertyChanged();
}
}
public int PredicateOperand
{
get { return _predicateOperand; }
set
{
_predicateOperand = value;
OnPropertyChanged();
}
}
2015-12-20 10:17:26 -05:00
public bool CompareUsing(int target)
{
switch (PredicateOperator)
{
case FilterPredicateOperator.Equal:
{
return target == PredicateOperand;
}
case FilterPredicateOperator.GreaterThan:
{
return target > PredicateOperand;
}
case FilterPredicateOperator.GreaterThanOrEqual:
{
return target >= PredicateOperand;
}
case FilterPredicateOperator.LessThan:
{
return target < PredicateOperand;
}
case FilterPredicateOperator.LessThanOrEqual:
{
return target <= PredicateOperand;
}
default:
{
return false;
}
}
}
2015-06-04 13:15:54 -04:00
public override string ToString()
{
return PredicateOperator.GetAttributeDescription() + " " + PredicateOperand;
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
public virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
var handler = PropertyChanged;
handler?.Invoke(this, new PropertyChangedEventArgs(propertyName));
2015-06-04 13:15:54 -04:00
}
}
}