Exemplo n.º 1
0
  private static StreamTypeService getStreamTypeService(
      String engineURI,
      String statementId,
      EventAdapterService eventAdapterService,
      Map<String, Pair<EventType, String>> taggedEventTypes,
      Map<String, Pair<EventType, String>> arrayEventTypes,
      Deque<Integer> subexpressionIdStack,
      String objectType) {
    LinkedHashMap<String, Pair<EventType, String>> filterTypes =
        new LinkedHashMap<String, Pair<EventType, String>>();
    filterTypes.putAll(taggedEventTypes);

    // handle array tags (match-until clause)
    if (arrayEventTypes != null) {
      String patternSubexEventType =
          getPatternSubexEventType(statementId, objectType, subexpressionIdStack);
      EventType arrayTagCompositeEventType =
          eventAdapterService.createSemiAnonymousMapType(
              patternSubexEventType, new HashMap(), arrayEventTypes, false);
      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, engineURI, true, false);
  }