//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)))); }
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); }