Skip to content

Commit

Permalink
0002147: Add validation and better error message if the parsed tokens…
Browse files Browse the repository at this point in the history
… doesn't match the column count of the last parsed table
  • Loading branch information
chenson42 committed Jan 20, 2015
1 parent b7a4e6d commit 9e15a92
Showing 1 changed file with 10 additions and 3 deletions.
Expand Up @@ -34,6 +34,7 @@
import java.util.Map;
import java.util.Set;

import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.jumpmind.db.model.Column;
import org.jumpmind.db.model.Table;
Expand Down Expand Up @@ -168,11 +169,17 @@ public Object readNext() {
CsvData data = new CsvData();
data.setNoBinaryOldData(noBinaryOldData);
data.setDataEventType(DataEventType.UPDATE);
// TODO check for invalid range and print results
int columnCount = context.getLastParsedTable().getColumnCount();
if (tokens.length <= columnCount) {
String msg = String.format("Invalid state while parsing row data. "
+ "The number of columns reported for table '%s' don't match up with the token data: {}",
context.getLastParsedTable().getFullyQualifiedTableName(), ArrayUtils.toString(tokens));
throw new IllegalStateException(msg);
}
data.putParsedData(CsvData.ROW_DATA,
CollectionUtils.copyOfRange(tokens, 1, context.getLastParsedTable().getColumnCount() + 1));
CollectionUtils.copyOfRange(tokens, 1, columnCount + 1));
data.putParsedData(CsvData.PK_DATA, CollectionUtils.copyOfRange(tokens,
context.getLastParsedTable().getColumnCount() + 1, tokens.length));
columnCount + 1, tokens.length));
data.putParsedData(CsvData.OLD_DATA, parsedOldData);
tokens = null;
return data;
Expand Down

0 comments on commit 9e15a92

Please sign in to comment.