Пример #1
0
        // 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.MultirowMessage);
                return(null);
            }

            EventBean[] 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);
        }
        // No filter and with select clause
        public virtual EventBean EvaluateGetEventBean(EventBean[] eventsPerStream, bool newData, ICollection <EventBean> matchingEvents, ExprEvaluatorContext context, ExprSubselectRowNode parent)
        {
            var events = EventBeanUtility.AllocatePerStreamShift(eventsPerStream);

            events[0] = EventBeanUtility.GetNonemptyFirstEvent(matchingEvents);
            var row = parent.EvaluateRow(events, true, context);

            return(parent.SubselectMultirowType.EventAdapterService.AdapterForTypedMap(row, parent.SubselectMultirowType.EventType));
        }
        // No filter and with select clause
        public Object[] TypableEvaluate(EventBean[] eventsPerStream, bool isNewData, ICollection <EventBean> matchingEvents, ExprEvaluatorContext exprEvaluatorContext, ExprSubselectRowNode parent)
        {
            // take the first match only
            var events         = EventBeanUtility.AllocatePerStreamShift(eventsPerStream);
            var evaluateParams = new EvaluateParams(events, isNewData, exprEvaluatorContext);

            events[0] = EventBeanUtility.GetNonemptyFirstEvent(matchingEvents);
            var results = new Object[parent.SelectClauseEvaluator.Length];

            for (var i = 0; i < results.Length; i++)
            {
                results[i] = parent.SelectClauseEvaluator[i].Evaluate(evaluateParams);
            }
            return(results);
        }
Пример #4
0
        public override object Evaluate(
            EventBean[] eventsPerStream,
            bool newData,
            ICollection <EventBean> matchingEvents,
            ExprEvaluatorContext exprEvaluatorContext,
            ExprSubselectRowNode parent)
        {
            if (matchingEvents.Count > 1)
            {
                Log.Warn(parent.MultirowMessage);
                return(null);
            }
            EventBean @event = EventBeanUtility.GetNonemptyFirstEvent(matchingEvents);

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