protected NBiConstraint InstantiateConstraint() { RowCountConstraint ctr; var childConstraint = BuildChildConstraint(ConstraintXml.Comparer); IResultSetFilter filter = null; if (ConstraintXml.Filter != null) { var filterXml = ConstraintXml.Filter; var expressions = new List <IColumnExpression>(); if (filterXml.Expression != null) { expressions.Add(filterXml.Expression); } var value = EvaluatePotentialVariable(ConstraintXml.Comparer.Value.Replace(" ", "")); var factory = new ResultSetFilterFactory(Variables); if (filterXml.Predication != null) { filter = factory.Instantiate ( filterXml.Aliases , expressions , filterXml.Predication ); } else if (filterXml.Combination != null) { filter = factory.Instantiate ( filterXml.Aliases , expressions , filterXml.Combination.Operator , filterXml.Combination.Predicates ); } if ((value is string& (value as string).EndsWith("%"))) { ctr = new RowCountFilterPercentageConstraint(childConstraint, filter); } else { ctr = new RowCountFilterConstraint(childConstraint, filter); } } else { ctr = new RowCountConstraint(childConstraint); } return(ctr); }
protected NBiConstraint InstantiateConstraint() { RowCountConstraint ctr; var childConstraint = BuildChildConstraint(ConstraintXml.Comparer); IResultSetFilter filter = null; if (ConstraintXml.Filter != null) { var filterXml = ConstraintXml.Filter; var expressions = new List <IColumnExpression>(); if (filterXml.Expression != null) { expressions.Add(filterXml.Expression); } var factory = new PredicateFilterFactory(); filter = factory.Instantiate ( filterXml.Aliases , expressions , filterXml.Predicate ); if (ConstraintXml.Comparer.Value.Replace(" ", "").EndsWith("%")) { ctr = new RowCountFilterPercentageConstraint(childConstraint, filter); } else { ctr = new RowCountFilterConstraint(childConstraint, filter); } } else { ctr = new RowCountConstraint(childConstraint); } return(ctr); }
protected NBiConstraint InstantiateConstraint() { RowCountConstraint ctr; var comparer = ConstraintXml.Comparer as ScalarReferencePredicateXml; var childConstraint = BuildChildConstraint(comparer); IResultSetFilter filter = null; if (ConstraintXml.Filter != null) { var filterXml = ConstraintXml.Filter; var expressions = new List <IColumnExpression>(); if (filterXml.Expression != null) { expressions.Add(filterXml.Expression); } var value = EvaluatePotentialVariable(comparer.Reference.ToString().Replace(" ", "")); var context = new Context(Variables, filterXml.Aliases, expressions); var factory = new ResultSetFilterFactory(ServiceLocator); if (filterXml.Predication != null) { var helper = new PredicateArgsBuilder(ServiceLocator, context); var args = helper.Execute(filterXml.Predication.ColumnType, filterXml.Predication.Predicate); filter = factory.Instantiate ( new PredicationArgs(filterXml.Predication.Operand, args) , context ); } else if (filterXml.Combination != null) { var helper = new PredicateArgsBuilder(ServiceLocator, context); var predicationArgs = new List <PredicationArgs>(); foreach (var predication in filterXml.Combination.Predications) { var args = helper.Execute(predication.ColumnType, predication.Predicate); predicationArgs.Add(new PredicationArgs(predication.Operand, args)); } filter = factory.Instantiate ( filterXml.Combination.Operator , predicationArgs , context ); } if ((value is string& (value as string).EndsWith("%"))) { ctr = new RowCountFilterPercentageConstraint(childConstraint, filter); } else { ctr = new RowCountFilterConstraint(childConstraint, filter); } } else { ctr = new RowCountConstraint(childConstraint); } return(ctr); }