private GrilleColumnFilter buildColumnFilter(String link, String name, String operation, String value) { GrilleColumn column = this.Grille.GetColumn(name); if (column != null) { GrilleColumnFilter filter = new GrilleColumnFilter(); filter.column = column; filter.filterOperation = link; filter.filterOperator = operation; filter.filterValue = value; return(filter); } return(null); }
private GrilleColumnFilter buildColumnFilters(CriteriaOperator criteria) { GrilleColumnFilter filter = new GrilleColumnFilter(); if (criteria != null) { String link = "And"; if (criteria is FunctionOperator) { FunctionOperator function = (FunctionOperator)criteria; if (function.Operands.Count == 3) { String operation = function.Operands[0].ToString(); String name = ((OperandProperty)function.Operands[1]).PropertyName; String value = ((OperandValue)function.Operands[2]).Value.ToString(); filter = buildColumnFilter(link, name, operation, value); } else if (function.Operands.Count == 2) { String operation = function.OperatorType.ToString(); String name = ((OperandProperty)function.Operands[0]).PropertyName; String value = ((OperandValue)function.Operands[1]).Value.ToString(); filter = buildColumnFilter(link, name, operation, value); } else if (function.Operands.Count == 1) { String operation = function.OperatorType.ToString(); String name = ((OperandProperty)function.Operands[0]).PropertyName; filter = buildColumnFilter(link, name, operation, null); } } if (criteria is UnaryOperator) { UnaryOperator function = (UnaryOperator)criteria; String operation = function.OperatorType.ToString(); String name = null; if (function.Operand is OperandProperty) { name = ((OperandProperty)function.Operand).PropertyName; filter = buildColumnFilter(link, name, operation, null); } else if (function.Operand is FunctionOperator) { FunctionOperator functionOperator = (FunctionOperator)function.Operand; String operation2 = functionOperator.OperatorType.ToString(); filter = buildColumnFilters(functionOperator); filter.filterOperator = operation + filter.filterOperator; } } if (criteria is BinaryOperator) { BinaryOperator function = (BinaryOperator)criteria; String operation = function.OperatorType.ToString(); String name = ((OperandProperty)function.LeftOperand).PropertyName; String value = ((OperandValue)function.RightOperand).Value.ToString(); filter = buildColumnFilter(link, name, operation, value); } if (criteria is GroupOperator) { GroupOperator function = (GroupOperator)criteria; filter.isGroup = true; filter.filterOperation = function.OperatorType.ToString(); foreach (CriteriaOperator op in function.Operands) { GrilleColumnFilter item = buildColumnFilters(op); if (item != null) { filter.items.Add(item); } } } } return(filter); }