Esempio n. 1
0
        private Rule DeserializeSwitchCase(EventSlot slot, XElement element)
        {
            var paramName = element.Attribute("parameter").Value;
            var param     = ParameterProviders.GetParameter(slot.EventType, paramName);

            if (param == null)
            {
                return(null);
            }

            var rule = new SwitchCaseRule(param);

            // Cases
            foreach (var caseElement in element.Elements("case"))
            {
                var value     = Convert.ChangeType(caseElement.Attribute("value").Value, param.ValueType);
                var caseRules = new List <Rule>();

                foreach (var caseRuleElement in caseElement.Elements())
                {
                    var caseRule = DeserializeRule(slot, caseRuleElement);
                    if (caseRule != null)
                    {
                        caseRules.Add(caseRule);
                    }
                }

                rule.Cases.Add(value, caseRules);
            }

            // Default
            var defaultElement = element.Element("default");

            if (defaultElement != null)
            {
                foreach (var defaultRuleElement in defaultElement.Elements())
                {
                    var defaultRule = DeserializeRule(slot, defaultRuleElement);
                    if (defaultRule != null)
                    {
                        rule.Default.Add(defaultRule);
                    }
                }
            }

            return(rule);
        }
Esempio n. 2
0
        public override Rule ToRule(EventSlot slot)
        {
            var param = RuleParameterProviders.Providers.GetParameter(slot.EventType, Parameter);
            var rule  = new SwitchCaseRule(param);

            foreach (var caze in Cases)
            {
                var value = Convert.ChangeType(caze.Value, param.ValueType);
                rule.Cases.Add(value, caze.Rules.Select(r => r.ToRule(slot)).ToList());
            }

            foreach (var defaultRule in Default)
            {
                rule.Default.Add(defaultRule.ToRule(slot));
            }

            return(rule);
        }
Esempio n. 3
0
        public static SwitchCaseRuleModel FromRule(SwitchCaseRule rule)
        {
            var model = new SwitchCaseRuleModel
            {
                Parameter = rule.Parameter.Name
            };

            foreach (var caze in rule.Cases)
            {
                model.Cases.Add(new CaseModel
                {
                    Value = caze.Key.ToString(),
                    Rules = caze.Value.Select(r => RuleModelBase.FromRule(r)).ToList()
                });
            }

            foreach (var defaultRule in rule.Default)
            {
                model.Default.Add(RuleModelBase.FromRule(defaultRule));
            }

            return(model);
        }
Esempio n. 4
0
        private Rule DeserializeSwitchCase(EventSlot slot, XElement element)
        {
            var paramName = element.Attribute("parameter").Value;
            var param = ParameterProviders.GetParameter(slot.EventType, paramName);
            if (param == null)
            {
                return null;
            }

            var rule = new SwitchCaseRule(param);

            // Cases
            foreach (var caseElement in element.Elements("case"))
            {
                var value = Convert.ChangeType(caseElement.Attribute("value").Value, param.ValueType);
                var caseRules = new List<Rule>();

                foreach (var caseRuleElement in caseElement.Elements())
                {
                    var caseRule = DeserializeRule(slot, caseRuleElement);
                    if (caseRule != null)
                    {
                        caseRules.Add(caseRule);
                    }
                }

                rule.Cases.Add(value, caseRules);
            }

            // Default
            var defaultElement = element.Element("default");
            if (defaultElement != null)
            {
                foreach (var defaultRuleElement in defaultElement.Elements())
                {
                    var defaultRule = DeserializeRule(slot, defaultRuleElement);
                    if (defaultRule != null)
                    {
                        rule.Default.Add(defaultRule);
                    }
                }
            }

            return rule;
        }