Пример #1
0
        private FilterExpressionOrOperatorNode CreateFilterExpressionForGroup(int startIndex, int endIndex)
        {
            Debug.Assert(this.filterRulePanelItems.Count > 0, "greater than 0");
            Debug.Assert(startIndex >= 0, "greater than or equal to 0");
            Debug.Assert(this.filterRulePanelItems.Count >= endIndex, "greater than or equal to endIndex");

            FilterExpressionOrOperatorNode groupNode = new FilterExpressionOrOperatorNode();

            for (int i = startIndex; i < endIndex; i++)
            {
                FilterRule rule = this.filterRulePanelItems[i].Rule;
                if (rule.IsValid)
                {
                    groupNode.Children.Add(new FilterExpressionOperandNode(rule.DeepCopy()));
                }
            }

            return(groupNode);
        }
Пример #2
0
        private FilterExpressionNode CreateFilterExpression()
        {
            List <FilterExpressionNode> groupNodes = new List <FilterExpressionNode>();

            for (int i = 0; i < this.filterRulePanelItems.Count;)
            {
                int endIndex = this.GetExclusiveEndIndexForGroupStartingAt(i);

                FilterExpressionOrOperatorNode operatorOrNode = this.CreateFilterExpressionForGroup(i, endIndex);
                if (operatorOrNode.Children.Count > 0)
                {
                    groupNodes.Add(operatorOrNode);
                }

                i = endIndex;
            }

            if (groupNodes.Count == 0)
            {
                return(null);
            }

            return(new FilterExpressionAndOperatorNode(groupNodes));
        }
Пример #3
0
        private FilterExpressionOrOperatorNode CreateFilterExpressionForGroup(int startIndex, int endIndex)
        {
            Debug.Assert(this.filterRulePanelItems.Count > 0);
            Debug.Assert(startIndex >= 0);
            Debug.Assert(this.filterRulePanelItems.Count >= endIndex);

            FilterExpressionOrOperatorNode groupNode = new FilterExpressionOrOperatorNode();
            for (int i = startIndex; i < endIndex; i++)
            {
                FilterRule rule = this.filterRulePanelItems[i].Rule;
                if (rule.IsValid)
                {
                    groupNode.Children.Add(new FilterExpressionOperandNode(rule.DeepCopy()));
                }
            }

            return groupNode;
        }