public EvalFilterNode( PatternAgentInstanceContext context, EvalFilterFactoryNode factoryNode) : base(context) { this.factoryNode = factoryNode; FilterValueSetParam[][] addendum = null; if (context.AgentInstanceContext.AgentInstanceFilterProxy != null) { addendum = context.AgentInstanceContext.AgentInstanceFilterProxy.GetAddendumFilters( factoryNode.FilterSpec, context.AgentInstanceContext); } var contextPathAddendum = context.GetFilterAddendumForContextPath(factoryNode.FilterSpec); if (contextPathAddendum != null) { if (addendum == null) { addendum = contextPathAddendum; } else { addendum = FilterAddendumUtil.MultiplyAddendum(addendum, contextPathAddendum); } } AddendumFilters = addendum; }
private static FilterValueSetParam[][] ComputeAddendum( object[] parentPartitionKeys, FilterSpecActivatable filterCallback, bool forStatement, ContextControllerStatementDesc optionalStatementDesc, ContextControllerFactory[] controllerFactories, IDictionary<int, ContextControllerStatementDesc> statements, AgentInstanceContext agentInstanceContextCreate) { var result = new FilterValueSetParam[0][]; for (var i = 0; i < parentPartitionKeys.Length; i++) { var addendumForController = controllerFactories[i] .PopulateFilterAddendum( filterCallback, forStatement, i + 1, parentPartitionKeys[i], optionalStatementDesc, statements, agentInstanceContextCreate); result = FilterAddendumUtil.MultiplyAddendum(result, addendumForController); } return result; }