protected void startNewCursor(final TriggerHistory triggerHistory,
final TriggerRouter triggerRouter, String overrideSelectSql) {
final int expectedCommaCount = triggerHistory.getParsedColumnNames().length - 1;
String initialLoadSql = symmetricDialect.createInitialLoadSqlFor(
this.currentInitialLoadEvent.getNode(), triggerRouter, sourceTable,
triggerHistory,
configurationService.getChannel(triggerRouter.getTrigger().getChannelId()),
overrideSelectSql);
this.cursor = sqlTemplate.queryForCursor(initialLoadSql, new ISqlRowMapper<Data>() {
public Data mapRow(Row rs) {
String csvRow = rs.stringValue();
int commaCount = StringUtils.countMatches(csvRow, ",");
if (expectedCommaCount <= commaCount) {
Data data = new Data(0, null, csvRow, DataEventType.INSERT, triggerHistory
.getSourceTableName(), null, triggerHistory, batch.getChannelId(),
null, null);
data.putAttribute(Data.ATTRIBUTE_ROUTER_ID, triggerRouter.getRouter()
.getRouterId());
return data;
} else {
throw new SymmetricException(
"The extracted row data did not have the expected (%d) number of columns: %s",
expectedCommaCount, csvRow);
}
}
});
}