Esempio n. 1
0
        public override void Evaluate(
            EventBean[] eventsPerStream,
            ICollection <EventBean> matchingEvents,
            ExprEvaluatorContext exprEvaluatorContext)
        {
            AggregationService.ClearResults(exprEvaluatorContext);
            if (matchingEvents == null)
            {
                return;
            }

            var events = new EventBean[eventsPerStream.Length + 1];

            Array.Copy(eventsPerStream, 0, events, 1, eventsPerStream.Length);

            var evaluateParams = new EvaluateParams(events, true, exprEvaluatorContext);

            foreach (EventBean subselectEvent in matchingEvents)
            {
                events[0] = subselectEvent;
                var pass = (bool?)FilterExpr.Evaluate(evaluateParams);
                if (pass ?? false)
                {
                    AggregationService.ApplyEnter(events, null, exprEvaluatorContext);
                }
            }
        }
Esempio n. 2
0
        public override Object Evaluate(EventBean[] eventsPerStream, bool isNewData, ICollection <EventBean> matchingEvents, ExprEvaluatorContext exprEvaluatorContext)
        {
            if (matchingEvents == null)
            {
                return(false);
            }
            if (matchingEvents.Count == 0)
            {
                return(false);
            }

            if (FilterExpr == null)
            {
                return(true);
            }

            // Evaluate filter
            var events         = new EventBean[eventsPerStream.Length + 1];
            var evaluateParams = new EvaluateParams(events, true, exprEvaluatorContext);

            Array.Copy(eventsPerStream, 0, events, 1, eventsPerStream.Length);

            foreach (var subselectEvent in matchingEvents)
            {
                // Prepare filter expression event list
                events[0] = subselectEvent;

                var pass = (bool?)FilterExpr.Evaluate(evaluateParams);
                if ((pass != null) && (pass.Value))
                {
                    return(true);
                }
            }

            return(false);
        }