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;
|
2015-12-13 15:17:15 -05:00
|
|
|
|
handler?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
2015-06-04 13:15:54 -04:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|