protected boolean isVersionNewer(Conflict conflict, DatabaseWriter writer, CsvData data) {
String columnName = conflict.getDetectExpression();
Table targetTable = writer.getTargetTable();
Table sourceTable = writer.getSourceTable();
String[] pkData = data.getPkData(targetTable);
Object[] objectValues = writer.getPlatform().getObjectValues(
writer.getBatch().getBinaryEncoding(), pkData, targetTable.getPrimaryKeyColumns());
DmlStatement stmt = writer.getPlatform().createDmlStatement(DmlType.FROM, targetTable);
String sql = stmt.getColumnsSql(new Column[] { targetTable.getColumnWithName(columnName) });
Long existingVersion = writer.getTransaction()
.queryForObject(sql, Long.class, objectValues);
if (existingVersion == null) {
return true;
} else {
Map<String, String> newData = data.toColumnNameValuePairs(sourceTable.getColumnNames(),
CsvData.ROW_DATA);
Long loadingVersion = Long.valueOf(newData.get(columnName));
return loadingVersion > existingVersion;
}
}