/** * Ctor. * * @param statementStopService for indicating a statement was stopped or destroyed for cleanup * @param lookupStrategy for handling trigger events to determine deleted events * @param rootView the named window root view * @param internalEventRouter for insert-into behavior * @param resultSetProcessor for processing aggregation, having and ordering * @param statementHandle required for routing events * @param statementResultService for coordinating on whether insert and remove stream events * should be posted * @param statementContext statement services * @param isDistinct is true for distinct output */ public NamedWindowOnSelectView( StatementStopService statementStopService, NamedWindowLookupStrategy lookupStrategy, NamedWindowRootView rootView, InternalEventRouter internalEventRouter, boolean addToFront, ResultSetProcessor resultSetProcessor, EPStatementHandle statementHandle, StatementResultService statementResultService, StatementContext statementContext, boolean isDistinct) { super(statementStopService, lookupStrategy, rootView, statementContext); this.internalEventRouter = internalEventRouter; this.addToFront = addToFront; this.resultSetProcessor = resultSetProcessor; this.statementHandle = statementHandle; this.statementResultService = statementResultService; this.statementContext = statementContext; this.isDistinct = isDistinct; if (isDistinct) { if (resultSetProcessor.getResultEventType() instanceof EventTypeSPI) { eventBeanReader = ((EventTypeSPI) resultSetProcessor.getResultEventType()).getReader(); } if (eventBeanReader == null) { eventBeanReader = new EventBeanReaderDefaultImpl(resultSetProcessor.getResultEventType()); } } }
public EventType getEventType() { if (resultSetProcessor != null) { return resultSetProcessor.getResultEventType(); } else { return namedWindowEventType; } }
public static Iterator<EventBean> getIterator( JoinExecutionStrategy joinExecutionStrategy, ResultSetProcessor resultSetProcessor, Viewable parentView, boolean distinct) { Iterator<EventBean> iterator; EventType eventType; if (joinExecutionStrategy != null) { Set<MultiKey<EventBean>> joinSet = joinExecutionStrategy.staticJoin(); iterator = resultSetProcessor.getIterator(joinSet); eventType = resultSetProcessor.getResultEventType(); } else if (resultSetProcessor != null) { iterator = resultSetProcessor.getIterator(parentView); eventType = resultSetProcessor.getResultEventType(); } else { iterator = parentView.iterator(); eventType = parentView.getEventType(); } if (!distinct) { return iterator; } return new EventDistinctIterator(iterator, eventType); }