예제 #1
0
        //public override RuleParameterSet GetEmptyParameterSet() {
        //  return new RuleParameterSet(new RuleParameter[] {
        //    new RuleStringParameter("LeftValueFieldName"),
        //    new RuleComparisonOperatorParameter("ComparisonOperator", RuleComparisonOperatorParameter.Operator.Equal),
        //    new RuleDecimalParameter("RightValueNumerical", 0),
        //    new RuleInvariantDateTimeParameter("RightValueDateTime", DateTime.Now),
        //    new RuleStringParameter("RightValueFieldName"),
        //    new RuleBoolParameter("RightValueUseDateTime", false),
        //    new RuleBoolParameter("RightValueUseFieldName", false)
        //    });
        //}

        public override bool IsCompatibleParameterSet(RuleParameterSet parameterSet)
        {
            RuleStringParameter             leftValueFieldName = parameterSet["LeftValueFieldName"] as RuleStringParameter;
            RuleComparisonOperatorParameter comparisonOperator = parameterSet["ComparisonOperator"] as RuleComparisonOperatorParameter;

            if (leftValueFieldName == null || String.IsNullOrEmpty(leftValueFieldName.Value))
            {
                return(false);
            }

            if (comparisonOperator == null || comparisonOperator.Value == RuleComparisonOperatorParameter.Operator.Unknown)
            {
                return(false);
            }

            var rightValueParameter         = parameterSet["RightValue"];
            var rightValueFieldParameter    = parameterSet["RightValueFieldName"] as RuleStringParameter;
            var extractionClassParameter    = parameterSet["ExtractionFunctionClass"] as RuleStringParameter;
            var extractionFunctionParameter = parameterSet["ExtractionFunctionName"] as RuleStringParameter;

            // everything's fine if we have either a right value OR a right value field name,
            // we can't have both.
            // plus, if we have an extraction function class, we also need a function name
            return(((rightValueParameter != null) ^
                    (rightValueFieldParameter != null && (!String.IsNullOrEmpty(rightValueFieldParameter.Value)))) &&
                   ((extractionClassParameter == null && extractionFunctionParameter == null) ||
                    (extractionClassParameter != null && extractionFunctionParameter != null &&
                     !String.IsNullOrEmpty(extractionClassParameter.Value) &&
                     !String.IsNullOrEmpty(extractionFunctionParameter.Value))));
        }
예제 #2
0
        private Result CreateResult(Rule rule, ResultStatus status, FailureReason reason,
                                    object left, RuleComparisonOperatorParameter.Operator op, object right,
                                    params ResultDetail[] details)
        {
            Result result = new Result(this, rule, status, reason,
                                       String.Format(CultureInfo.CurrentCulture, rule.ErrorInfoTemplate, left,
                                                     RuleComparisonOperatorParameter.StringForOperator(op), right));

            foreach (ResultDetail detail in details)
            {
                result.Details.Add(detail);
            }
            return(result);
        }