예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
            }
        }