private void addGroupingStrategy(Map<String, List<StreamRepartitionMetadata>> streamsMap, String stream,
StreamDefinition schema, String topicName, String datasourceName, StreamRepartitionStrategy gs) {
List<StreamRepartitionMetadata> dsStreamMeta;
if (streamsMap.containsKey(topicName)) {
dsStreamMeta = streamsMap.get(topicName);
} else {
dsStreamMeta = new ArrayList<StreamRepartitionMetadata>();
streamsMap.put(topicName, dsStreamMeta);
}
StreamRepartitionMetadata targetSm = null;
for (StreamRepartitionMetadata sm : dsStreamMeta) {
if (stream.equalsIgnoreCase(sm.getStreamId())) {
targetSm = sm;
break;
}
}
if (targetSm == null) {
targetSm = new StreamRepartitionMetadata(topicName, schema.getStreamId());
dsStreamMeta.add(targetSm);
}
if (!targetSm.groupingStrategies.contains(gs)) {
targetSm.addGroupStrategy(gs);
}
}