// No filter and with select clause
        public virtual Object Evaluate(
            EventBean[] eventsPerStream,
            bool newData,
            ICollection <EventBean> matchingEvents,
            ExprEvaluatorContext exprEvaluatorContext,
            ExprSubselectRowNode parent)
        {
            if (matchingEvents.Count > 1)
            {
                Log.Warn(parent.GetMultirowMessage());
                return(null);
            }

            var events = EventBeanUtility.AllocatePerStreamShift(eventsPerStream);

            events[0] = EventBeanUtility.GetNonemptyFirstEvent(matchingEvents);

            Object result;

            if (parent.SelectClauseEvaluator.Length == 1)
            {
                result = parent.SelectClauseEvaluator[0].Evaluate(new EvaluateParams(events, true, exprEvaluatorContext));
            }
            else
            {
                // we are returning a Map here, not object-array, preferring the self-describing structure
                result = parent.EvaluateRow(events, true, exprEvaluatorContext);
            }
            return(result);
        }
Esempio n. 2
0
        public static EventBean EvaluateFilterExpectSingleMatch(
            EventBean[] eventsZeroSubselect,
            bool newData,
            ICollection <EventBean> matchingEvents,
            ExprEvaluatorContext exprEvaluatorContext,
            ExprSubselectRowNode parent)
        {
            var evaluateParams = new EvaluateParams(eventsZeroSubselect, newData, exprEvaluatorContext);

            EventBean subSelectResult = null;

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

                var pass = parent.FilterExpr.Evaluate(evaluateParams);
                if ((pass != null) && true.Equals(pass))
                {
                    if (subSelectResult != null)
                    {
                        Log.Warn(parent.GetMultirowMessage());
                        return(null);
                    }
                    subSelectResult = subselectEvent;
                }
            }

            return(subSelectResult);
        }
Esempio n. 3
0
 // No filter and no select-clause: return underlying event
 public virtual Object Evaluate(
     EventBean[] eventsPerStream,
     bool newData,
     ICollection <EventBean> matchingEvents,
     ExprEvaluatorContext exprEvaluatorContext,
     ExprSubselectRowNode parent)
 {
     if (matchingEvents.Count > 1)
     {
         Log.Warn(parent.GetMultirowMessage());
         return(null);
     }
     return(EventBeanUtility.GetNonemptyFirstEventUnderlying(matchingEvents));
 }
        public override Object Evaluate(
            EventBean[] eventsPerStream,
            bool newData,
            ICollection <EventBean> matchingEvents,
            ExprEvaluatorContext exprEvaluatorContext,
            ExprSubselectRowNode parent)
        {
            if (matchingEvents.Count > 1)
            {
                Log.Warn(parent.GetMultirowMessage());
                return(null);
            }
            var @event = EventBeanUtility.GetNonemptyFirstEvent(matchingEvents);

            return(_tableMetadata.EventToPublic.ConvertToUnd(@event, new EvaluateParams(eventsPerStream, newData, exprEvaluatorContext)));
        }