// 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); }
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)); }