private FilterValueSetParam[][] ComputePathsWithNegate(EventBean[] eventsPerStream,
            FilterSpecPlan plan,
            MatchedEventMap matchedEvents,
            ExprEvaluatorContext exprEvaluatorContext,
            StatementContextFilterEvalEnv filterEvalEnv)
        {
            var paths = plan.Paths;
            IList<FilterValueSetParam[]> pathList = new List<FilterValueSetParam[]>(paths.Length);
            foreach (var path in paths) {
                var controlResult = path.PathNegate?.Evaluate(eventsPerStream, true, exprEvaluatorContext);
                if (controlResult != null && false.Equals(controlResult)) {
                    continue;
                }

                var triplets = path.Triplets;
                var valueList = new FilterValueSetParam[triplets.Length];
                PopulateValueSet(valueList, matchedEvents, path.Triplets, exprEvaluatorContext, filterEvalEnv);
                pathList.Add(valueList);
            }

            if (pathList.IsEmpty()) {
                return null; // all path negated
            }

            return pathList.ToArray();
        }
Exemple #2
0
 public FilterValueSetParam[][] Compute(
     FilterSpecPlan plan,
     MatchedEventMap matchedEvents,
     ExprEvaluatorContext exprEvaluatorContext,
     StatementContextFilterEvalEnv filterEvalEnv)
 {
     return ComputeFixedLength(plan.Paths, matchedEvents, exprEvaluatorContext, filterEvalEnv);
 }
Exemple #3
0
 public FilterValueSetParam[][] Compute(
     FilterSpecPlan plan,
     MatchedEventMap matchedEvents,
     ExprEvaluatorContext exprEvaluatorContext,
     StatementContextFilterEvalEnv filterEvalEnv)
 {
     EventBean[] eventsPerStream = plan.Convertor.Invoke(matchedEvents);
     return Compute(eventsPerStream, plan, matchedEvents, exprEvaluatorContext, filterEvalEnv);
 }
        protected override FilterValueSetParam[][] Compute(EventBean[] eventsPerStream,
            FilterSpecPlan plan,
            MatchedEventMap matchedEvents,
            ExprEvaluatorContext exprEvaluatorContext,
            StatementContextFilterEvalEnv filterEvalEnv)
        {
            if (plan.FilterNegate != null) {
                var controlResult = plan.FilterNegate.Evaluate(eventsPerStream, true, exprEvaluatorContext);
                if (controlResult != null && false.Equals(controlResult)) {
                    return null;
                }
            }

            if (plan.FilterConfirm != null) {
                var controlResult = plan.FilterConfirm.Evaluate(eventsPerStream, true, exprEvaluatorContext);
                if (controlResult != null && true.Equals(controlResult)) {
                    return FilterValueSetParamConstants.EMPTY;
                }
            }

            return ComputePathsWithNegate(eventsPerStream, plan, matchedEvents, exprEvaluatorContext, filterEvalEnv);
        }
Exemple #5
0
 protected abstract FilterValueSetParam[][] Compute(EventBean[] eventsPerStream,
     FilterSpecPlan plan,
     MatchedEventMap matchedEvents,
     ExprEvaluatorContext exprEvaluatorContext,
     StatementContextFilterEvalEnv filterEvalEnv);
Exemple #6
0
 static FilterSpecPlan()
 {
     EMPTY_PLAN = new FilterSpecPlan(FilterSpecPlanPath.EMPTY_ARRAY, null, null);
     EMPTY_PLAN.Initialize();
 }