private static StreamTypeService getStreamTypeService(Map<String, Pair<EventType, String>> taggedEventTypes, Map<String, Pair<EventType, String>> arrayEventTypes, EvalForgeNode forge, int streamNum, StatementRawInfo statementRawInfo, StatementCompileTimeServices services) {
LinkedHashMap<String, Pair<EventType, String>> filterTypes = new LinkedHashMap<String, Pair<EventType, String>>();
filterTypes.putAll(taggedEventTypes);
if (arrayEventTypes != null) {
String eventTypeName = services.getEventTypeNameGeneratorStatement().getAnonymousPatternName(streamNum, forge.getFactoryNodeId());
EventTypeMetadata metadata = new EventTypeMetadata(eventTypeName, statementRawInfo.getModuleName(), EventTypeTypeClass.PATTERNDERIVED, EventTypeApplicationType.MAP, NameAccessModifier.TRANSIENT, EventTypeBusModifier.NONBUS, false, EventTypeIdPair.unassigned());
Map<String, Object> mapProperties = getMapProperties(new HashMap(), arrayEventTypes);
MapEventType mapEventType = BaseNestableEventUtil.makeMapTypeCompileTime(metadata, mapProperties, null, null, null, null, services.getBeanEventTypeFactoryPrivate(), services.getEventTypeCompileTimeResolver());
services.getEventTypeCompileTimeRegistry().newType(mapEventType);
EventType arrayTagCompositeEventType = mapEventType;
for (Map.Entry<String, Pair<EventType, String>> entry : arrayEventTypes.entrySet()) {
String tag = entry.getKey();
if (!filterTypes.containsKey(tag)) {
Pair<EventType, String> pair = new Pair<EventType, String>(arrayTagCompositeEventType, tag);
filterTypes.put(tag, pair);
}
}
}
return new StreamTypeServiceImpl(filterTypes, true, false);
}