コード例 #1
0
        private static IEnumerator <EventBean> DistinctEnumeration(IEnumerator <EventBean> source, EventType eventType)
        {
            EventBeanReader eventBeanReader = null;

            if (eventType is EventTypeSPI)
            {
                eventBeanReader = ((EventTypeSPI)eventType).GetReader();
            }
            if (eventBeanReader == null)
            {
                eventBeanReader = new EventBeanReaderDefaultImpl(eventType);
            }

            if (source != null)
            {
                var events = new LinkedList <EventBean>();
                while (source.MoveNext())
                {
                    events.AddLast(source.Current);
                }

                if (events.Count <= 1)
                {
                    return(events.GetEnumerator());
                }

                IList <EventBean> result = EventBeanUtility.GetDistinctByProp(events, eventBeanReader);
                return(result.GetEnumerator());
            }

            return(EnumerationHelper <EventBean> .CreateEmptyEnumerator());
        }
コード例 #2
0
 public static NamedWindowOnExprFactory Make(
     EventType namedWindowEventType,
     string namedWindowName,
     string namedWindowAlias,
     OnTriggerDesc onTriggerDesc,
     EventType filterEventType,
     string filterStreamName,
     bool addToFront,
     InternalEventRouter internalEventRouter,
     EventType outputEventType,
     StatementContext statementContext,
     StatementMetricHandle createNamedWindowMetricsHandle,
     bool isDistinct,
     StreamSelector?optionalStreamSelector,
     string optionalInsertIntoTableName)
 {
     if (onTriggerDesc.OnTriggerType == OnTriggerType.ON_DELETE)
     {
         return(new NamedWindowOnDeleteViewFactory(namedWindowEventType, statementContext.StatementResultService));
     }
     else if (onTriggerDesc.OnTriggerType == OnTriggerType.ON_SELECT)
     {
         EventBeanReader eventBeanReader = null;
         if (isDistinct)
         {
             if (outputEventType is EventTypeSPI)
             {
                 eventBeanReader = ((EventTypeSPI)outputEventType).GetReader();
             }
             if (eventBeanReader == null)
             {
                 eventBeanReader = new EventBeanReaderDefaultImpl(outputEventType);
             }
         }
         var windowDesc = (OnTriggerWindowDesc)onTriggerDesc;
         return(new NamedWindowOnSelectViewFactory(
                    namedWindowEventType, internalEventRouter, addToFront,
                    statementContext.EpStatementHandle, eventBeanReader, isDistinct, statementContext.StatementResultService,
                    statementContext.InternalEventEngineRouteDest, windowDesc.IsDeleteAndSelect, optionalStreamSelector,
                    optionalInsertIntoTableName));
     }
     else if (onTriggerDesc.OnTriggerType == OnTriggerType.ON_UPDATE)
     {
         var updateDesc   = (OnTriggerWindowUpdateDesc)onTriggerDesc;
         var updateHelper = EventBeanUpdateHelperFactory.Make(
             namedWindowName, (EventTypeSPI)namedWindowEventType, updateDesc.Assignments, namedWindowAlias,
             filterEventType, true);
         return(new NamedWindowOnUpdateViewFactory(
                    namedWindowEventType, statementContext.StatementResultService, updateHelper));
     }
     else if (onTriggerDesc.OnTriggerType == OnTriggerType.ON_MERGE)
     {
         var onMergeTriggerDesc = (OnTriggerMergeDesc)onTriggerDesc;
         var onMergeHelper      = new NamedWindowOnMergeHelper(
             statementContext, onMergeTriggerDesc, filterEventType, filterStreamName, internalEventRouter,
             namedWindowName, (EventTypeSPI)namedWindowEventType);
         return(new NamedWindowOnMergeViewFactory(
                    namedWindowEventType, onMergeHelper, statementContext.StatementResultService,
                    createNamedWindowMetricsHandle, statementContext.MetricReportingService));
     }
     else
     {
         throw new IllegalStateException("Unknown trigger type " + onTriggerDesc.OnTriggerType);
     }
 }