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