Пример #1
0
  /**
   * 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());
      }
    }
  }
Пример #2
0
 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);
  }