Example #1
0
        private void SetRuleValues(WonkaBizRule poTargetRule, string psRuleExpression)
        {
            char[] acRuleValuesDelim = new char[1] {
                ','
            };

            int nValueStartIdx = psRuleExpression.LastIndexOf(CONST_RULE_TOKEN_START_DELIM);

            if (nValueStartIdx >= 0)
            {
                int nValueEndIdx =
                    psRuleExpression.IndexOf(CONST_RULE_TOKEN_END_DELIM, nValueStartIdx + 1);

                if (nValueEndIdx > 0)
                {
                    string sValues =
                        psRuleExpression.Substring(nValueStartIdx + 1, (nValueEndIdx - nValueStartIdx - 1));

                    string[] asValueSet = sValues.Split(acRuleValuesDelim);

                    if (poTargetRule.RuleType == RULE_TYPE.RT_DOMAIN)
                    {
                        DomainRule Rule = (DomainRule)poTargetRule;

                        Rule.SetDomain(asValueSet);
                    }
                    else if (poTargetRule.RuleType == RULE_TYPE.RT_ARITHMETIC)
                    {
                        ArithmeticRule Rule = (ArithmeticRule)poTargetRule;

                        Rule.SetDomain(asValueSet);
                    }
                    else if (poTargetRule.RuleType == RULE_TYPE.RT_ARITH_LIMIT)
                    {
                        ArithmeticLimitRule Rule = (ArithmeticLimitRule)poTargetRule;

                        Rule.SetMinAndMax(psRuleExpression, asValueSet);
                    }
                    else if (poTargetRule.RuleType == RULE_TYPE.RT_ASSIGNMENT)
                    {
                        AssignmentRule Rule = (AssignmentRule)poTargetRule;

                        Rule.SetAssignValue(asValueSet);
                    }
                    else if (poTargetRule.RuleType == RULE_TYPE.RT_DATE_LIMIT)
                    {
                        DateLimitRule Rule = (DateLimitRule)poTargetRule;

                        Rule.SetMinAndMax(psRuleExpression, asValueSet);
                    }
                    else if (poTargetRule.RuleType == RULE_TYPE.RT_CUSTOM_OP)
                    {
                        CustomOperatorRule Rule = (CustomOperatorRule)poTargetRule;

                        string sCustomOpKey = CustomOpSources.Keys.Where(s => psRuleExpression.Contains(s)).FirstOrDefault();

                        if (!string.IsNullOrEmpty(sCustomOpKey))
                        {
                            Rule.SetDomain(asValueSet);

                            Rule.CustomOpName   = sCustomOpKey;
                            Rule.CustomOpSource = CustomOpSources[sCustomOpKey];
                        }
                    }
                }
            }
        }