use of io.siddhi.core.stream.output.sink.PartitionedGroupDeterminer in project siddhi by wso2.
the class DefinitionParserHelper method constructOutputGroupDeterminer.
private static OutputGroupDeterminer constructOutputGroupDeterminer(OptionHolder transportOptHolder, OptionHolder distributedOptHolder, StreamDefinition streamDef, int destinationCount) {
OutputGroupDeterminer groupDeterminer = null;
if (distributedOptHolder != null) {
String strategy = distributedOptHolder.validateAndGetStaticValue(SiddhiConstants.DISTRIBUTION_STRATEGY_KEY);
if (strategy.equalsIgnoreCase(SiddhiConstants.DISTRIBUTION_STRATEGY_PARTITIONED)) {
String partitionKeyField = distributedOptHolder.validateAndGetStaticValue(SiddhiConstants.PARTITION_KEY_FIELD_KEY);
int partitioningFieldIndex = streamDef.getAttributePosition(partitionKeyField);
groupDeterminer = new PartitionedGroupDeterminer(partitioningFieldIndex, destinationCount);
}
}
if (groupDeterminer == null) {
List<Option> dynamicTransportOptions = new ArrayList<Option>(transportOptHolder.getDynamicOptionsKeys().size());
for (String option : transportOptHolder.getDynamicOptionsKeys()) {
dynamicTransportOptions.add(transportOptHolder.validateAndGetOption(option));
}
if (dynamicTransportOptions.size() > 0) {
groupDeterminer = new DynamicOptionGroupDeterminer(dynamicTransportOptions);
}
}
return groupDeterminer;
}
Aggregations