Exemple #1
0
        /// <summary>
        /// Apply a filter expression.
        /// </summary>
        /// <param name="filter">expression</param>
        /// <param name="streamZeroEvent">the event that represents stream zero</param>
        /// <param name="streamOneEvents">all events thate are stream one events</param>
        /// <param name="exprEvaluatorContext">context for expression evaluation</param>
        /// <returns>filtered stream one events</returns>
        public static EventBean[] ApplyFilterExpression(
            ExprEvaluator filter,
            EventBean streamZeroEvent,
            EventBean[] streamOneEvents,
            ExprEvaluatorContext exprEvaluatorContext)
        {
            EventBean[] eventsPerStream = new EventBean[2];
            eventsPerStream[0] = streamZeroEvent;

            EventBean[] filtered = new EventBean[streamOneEvents.Length];
            int countPass = 0;

            foreach (EventBean eventBean in streamOneEvents) {
                eventsPerStream[1] = eventBean;

                var result = filter.Evaluate(eventsPerStream, true, exprEvaluatorContext);
                if ((result != null) && true.Equals(result)) {
                    filtered[countPass] = eventBean;
                    countPass++;
                }
            }

            if (countPass == streamOneEvents.Length) {
                return streamOneEvents;
            }

            return EventBeanUtility.ResizeArray(filtered, countPass);
        }