Esempio n. 1
0
        private static StreamTypeService GetStreamTypeService(
            string engineURI,
            int statementId,
            EventAdapterService eventAdapterService,
            IDictionary <string, Pair <EventType, string> > taggedEventTypes,
            IDictionary <string, Pair <EventType, string> > arrayEventTypes,
            IEnumerable <int> subexpressionIdStack,
            string objectType,
            StatementContext statementContext)
        {
            var filterTypes = new LinkedHashMap <string, Pair <EventType, string> >();

            filterTypes.PutAll(taggedEventTypes);

            // handle array tags (match-until clause)
            if (arrayEventTypes != null)
            {
                var patternSubexEventType      = GetPatternSubexEventType(statementId, objectType, subexpressionIdStack);
                var arrayTagCompositeEventType = eventAdapterService.CreateSemiAnonymousMapType(
                    patternSubexEventType, new Dictionary <string, Pair <EventType, string> >(), arrayEventTypes, false);
                statementContext.StatementSemiAnonymousTypeRegistry.Register(arrayTagCompositeEventType);
                foreach (var entry in arrayEventTypes)
                {
                    var tag = entry.Key;
                    if (!filterTypes.ContainsKey(tag))
                    {
                        var pair = new Pair <EventType, string>(arrayTagCompositeEventType, tag);
                        filterTypes.Put(tag, pair);
                    }
                }
            }

            return(new StreamTypeServiceImpl(filterTypes, engineURI, true, false));
        }