public SqlIOConfig(String systemName, String streamName, List<String> sourceParts,
Config systemConfig, TableDescriptor tableDescriptor) {
HashMap<String, String> streamConfigs = new HashMap<>(systemConfig);
this.systemName = systemName;
this.streamName = streamName;
this.source = getSourceFromSourceParts(sourceParts);
this.sourceParts = sourceParts;
this.systemStream = new SystemStream(systemName, streamName);
this.tableDescriptor = Optional.ofNullable(tableDescriptor);
samzaRelConverterName = streamConfigs.get(CFG_SAMZA_REL_CONVERTER);
Validate.notEmpty(samzaRelConverterName,
String.format("%s is not set or empty for system %s", CFG_SAMZA_REL_CONVERTER, systemName));
relSchemaProviderName = streamConfigs.get(CFG_REL_SCHEMA_PROVIDER);
streamConfigs.remove(CFG_SAMZA_REL_CONVERTER);
streamConfigs.remove(CFG_REL_SCHEMA_PROVIDER);
if (tableDescriptor != null) {
streamConfigs.put(String.format(StreamConfig.BOOTSTRAP_FOR_STREAM_ID(), streamName), "true");
streamConfigs.put(String.format(StreamConfig.CONSUMER_OFFSET_DEFAULT_FOR_STREAM_ID(), streamName), "oldest");
}
config = new MapConfig(streamConfigs);
}