/// <summary> /// Adds a row importance rule to the table definition /// </summary> /// <param name="columnName">The column name</param> /// <param name="matchValue">The data match value</param> /// <param name="compareOperator">The match compare operator</param> /// <param name="importanceOnMatch">The importance flag for matches</param> public void AddRowImportanceRule ( string columnName, object matchValue, DataCompareOperator compareOperator, DataImportance importanceOnMatch ) { var ruleFound = this.RowImportanceRules.Any ( r => r.ColumnName.Equals(columnName, StringComparison.OrdinalIgnoreCase) && r.MatchValue == matchValue && r.CompareOperator == compareOperator ); if (ruleFound) { throw new ArgumentException ( "A rule with matching column, value and comparer has been defined." ); } var rule = new TableRowImportanceRule ( columnName, matchValue, compareOperator, importanceOnMatch ); this.RowImportanceRules.Add(rule); }
/// <summary> /// Constructs the rule with the rule configuration /// </summary> /// <param name="columnName">The column name</param> /// <param name="matchValue">The data match value</param> /// <param name="compareOperator">The match compare operator</param> /// <param name="importanceOnMatch">The importance flag for matches</param> public TableRowImportanceRule ( string columnName, object matchValue, DataCompareOperator compareOperator, DataImportance importanceOnMatch ) { Validate.IsNotEmpty(columnName); this.ColumnName = columnName; this.MatchValue = matchValue; this.CompareOperator = compareOperator; this.ImportanceOnMatch = importanceOnMatch; }
public bool IsMatch(string candidateValue, string targetValue, DataCompareOperator compareOperator) { if (String.IsNullOrEmpty(candidateValue) || String.IsNullOrEmpty(targetValue)) { return(false); } switch (compareOperator) { case DataCompareOperator.Equals: return(_comparer.Equals(candidateValue, targetValue)); case DataCompareOperator.NotEqual: return(false == _comparer.Equals(candidateValue, targetValue)); case DataCompareOperator.GreaterThan: case DataCompareOperator.GreaterThanEqual: case DataCompareOperator.LessThan: case DataCompareOperator.LessThanEqual: if (candidateValue.IsNumeric() && targetValue.IsNumeric()) { var candidateNumber = Double.Parse(candidateValue); var targetNumber = Double.Parse(targetValue); switch (compareOperator) { case DataCompareOperator.GreaterThan: return(candidateNumber > targetNumber); case DataCompareOperator.GreaterThanEqual: return(candidateNumber >= targetNumber); case DataCompareOperator.LessThan: return(candidateNumber < targetNumber); case DataCompareOperator.LessThanEqual: return(candidateNumber <= targetNumber); default: return(false); } } else { return(false); } case DataCompareOperator.Contains: return(candidateValue.Contains(targetValue)); case DataCompareOperator.DoesNotContain: return(false == candidateValue.Contains(targetValue)); case DataCompareOperator.BeginsWith: return(candidateValue.StartsWith(targetValue)); case DataCompareOperator.DoesNotBeginWith: return(false == candidateValue.StartsWith(targetValue)); case DataCompareOperator.EndsWith: return(candidateValue.EndsWith(targetValue)); case DataCompareOperator.DoesNotEndWith: return(false == candidateValue.EndsWith(targetValue)); default: return(false); } }