Exemplo n.º 1
0
            public GroupRule(
                RouterGroupConfiguration configuration,
                IExpressionParser expressionParser)
            {
                if (configuration.Disabled)
                {
                    return;
                }

                ConditionLogic = configuration.ConditionLogic;
                var rules = new List <Rule>();

                if (configuration.Conditions != null)
                {
                    rules.AddRange(configuration.Conditions
                                   .Where(c => !c.Disabled)
                                   .Select(c => CreateConditionRule(c, expressionParser)));
                }

                if (configuration.Groups != null)
                {
                    rules.AddRange(
                        configuration.Groups
                        .Where(g => !g.Disabled)
                        .Select(g => new GroupRule(g, expressionParser)));
                }

                Rules = rules.ToArray();
            }
Exemplo n.º 2
0
            public GroupDrawing(
                DrawingElement drawing,
                RouterGroupConfiguration groupConfiguration)
                : base(drawing, "router_group", groupConfiguration.Disabled)
            {
                if ((groupConfiguration.Conditions == null || groupConfiguration.Conditions.Length == 0) &&
                    (groupConfiguration.Groups == null || groupConfiguration.Groups.Length == 0))
                {
                    AddDetails(new List <string> {
                        "Always"
                    }, null, groupConfiguration.Disabled ? "disabled" : string.Empty);
                    return;
                }

                var details = new List <string>
                {
                    "If " + groupConfiguration.ConditionLogic.ToString().ToLower() + " of"
                };

                if (groupConfiguration.Conditions != null && groupConfiguration.Conditions.Length > 0)
                {
                    foreach (var rule in groupConfiguration.Conditions)
                    {
                        if (!rule.Disabled)
                        {
                            if (rule.Negate)
                            {
                                details.Add("Not " + rule.Condition);
                            }
                            else
                            {
                                details.Add(rule.Condition);
                            }
                        }
                    }
                }

                AddDetails(details, null, groupConfiguration.Disabled ? "disabled" : string.Empty);

                if (groupConfiguration.Groups != null && groupConfiguration.Groups.Length > 0)
                {
                    foreach (var group in groupConfiguration.Groups)
                    {
                        AddChild(new GroupDrawing(drawing, group));
                    }
                }
            }