Esempio n. 1
0
        //public override RuleParameterSet GetEmptyParameterSet() {
        //  return new RuleParameterSet(new RuleParameter[] {
        //    new RuleStringParameter("FieldName"),
        //    new RuleStringParameter("RegExp")});
        //}

        public override bool IsCompatibleParameterSet(RuleParameterSet parameterSet)
        {
            RuleStringParameter param1 = parameterSet["FieldName"] as RuleStringParameter;
            RuleStringParameter param2 = parameterSet["RegExp"] as RuleStringParameter;

            return(param1 != null && param2 != null && param1.Value.Length > 0 && param2.Value.Length > 0);
        }
Esempio n. 2
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))));
        }
Esempio n. 3
0
        public static IEnumerable <Rule> Load(TextReader reader)
        {
            var doc = XDocument.Load(reader);

            foreach (var ruleNode in doc.Element("rules").Elements("rule"))
            {
                var rule = new Rule {
                    RuleChecker       = BizRulezChecker.RuleCheckers.FromCheckerId(ruleNode.Element("checkerId").Value),
                    ObjectTypeId      = ruleNode.Element("objectTypeId").Value,
                    ViewName          = ruleNode.Element("viewName").Value,
                    Key               = ruleNode.Element("key").Value,
                    TechnicalComment  = ruleNode.Element("technicalComment").Value,
                    ErrorInfoTemplate = ruleNode.Element("errorInfoTemplate").Value,
                    Parameters        = new RuleParameterSet(
                        from paramNode in ruleNode.Element("parameters").Elements("parameter")
                        select RuleParameterSet.CreateParameter(
                            paramNode.Attribute("typeId").Value,
                            paramNode.Attribute("name").Value,
                            paramNode.Value))
                };
                if (rule.RuleChecker == null)
                {
                    throw new InvalidRuleCheckerException(String.Format("Unknown rule checker id {0} found", ruleNode.Element("checkerId").Value));
                }

                var contextAttribute = ruleNode.Attribute("context");
                if (contextAttribute != null)
                {
                    rule.Contexts = new List <string> {
                        contextAttribute.Value
                    };
                }
                else
                {
                    var contexts = ruleNode.Element("contexts");
                    if (contexts != null)
                    {
                        rule.Contexts = new List <string>(
                            from contextNode in contexts.Elements("context")
                            select contextNode.Value);
                    }
                }

                var affectedFieldNames = ruleNode.Element("affectedFieldNames");
                if (affectedFieldNames != null)
                {
                    rule.AffectedFieldNames = new List <string>(
                        from fieldNameNode in affectedFieldNames.Elements("fieldName")
                        select fieldNameNode.Value);
                }

                yield return(rule);
            }
        }
Esempio n. 4
0
        ///// <summary>
        ///// Return an empty set of parameters as needed by this rule checker.
        ///// </summary>
        ///// <returns></returns>
        //public abstract RuleParameterSet GetEmptyParameterSet();

        /// <summary>
        /// Find out if the given parameter set can be used with this rule
        /// checker to actually check a rule. All needed parameters must be
        /// available and of the correct type and must contain usable
        /// values.
        /// </summary>
        /// <param name="parameterSet">The parameter set to check.</param>
        /// <returns>true if the parameter set is compatible</returns>
        public abstract bool IsCompatibleParameterSet(RuleParameterSet parameterSet);