public bool Evaluate(Record r, SubRecord sr, Element se) { if (se == null) { return(false); } var value = sr.GetCompareValue(se); int diff = ValueComparer.Compare(value, this.Value); switch (this.Type) { case BatchCondElementType.Set: break; case BatchCondElementType.Add: break; case BatchCondElementType.Subtract: break; case BatchCondElementType.Multiply: break; case BatchCondElementType.Divide: break; case BatchCondElementType.Clear: break; default: throw new ArgumentOutOfRangeException(); } return(false); }
public override bool Match(Record r, SubRecord sr, Element se) { if (this.Type == SearchCondElementType.Exists && se != null) { return(true); } if (this.Type == SearchCondElementType.Missing && se == null) { return(true); } if (se == null) { return(false); } var value = sr.GetCompareValue(se); int diff = ValueComparer.Compare(value, this.Value); switch (this.Type) { case SearchCondElementType.Equal: return(diff == 0); case SearchCondElementType.Not: return(diff != 0); case SearchCondElementType.Greater: return(diff > 0); case SearchCondElementType.Less: return(diff < 0); case SearchCondElementType.GreaterEqual: return(diff >= 0); case SearchCondElementType.LessEqual: return(diff <= 0); case SearchCondElementType.StartsWith: if (diff == 0) { return(true); } if (value != null && this.Value != null) { return(value.ToString().StartsWith(this.Value.ToString(), StringComparison.CurrentCultureIgnoreCase)); } break; case SearchCondElementType.EndsWith: if (diff == 0) { return(true); } if (value != null && this.Value != null) { return(value.ToString().EndsWith(this.Value.ToString(), StringComparison.CurrentCultureIgnoreCase)); } break; case SearchCondElementType.Contains: if (diff == 0) { return(true); } if (value != null && this.Value != null) { return(value.ToString().IndexOf(this.Value.ToString(), StringComparison.CurrentCultureIgnoreCase) >= 0); } break; } return(false); }