From: <fg...@us...> - 2007-02-14 00:06:53
|
Revision: 255 http://svn.sourceforge.net/openutils/?rev=255&view=rev Author: fgiust Date: 2007-02-13 16:06:54 -0800 (Tue, 13 Feb 2007) Log Message: ----------- handle nulls Modified Paths: -------------- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java Modified: trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java =================================================================== --- trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java 2007-02-13 21:39:25 UTC (rev 254) +++ trunk/openutils-dbmigration/src/main/java/it/openutils/migration/task/setup/ExcelConfigurationTask.java 2007-02-14 00:06:54 UTC (rev 255) @@ -22,6 +22,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.io.Resource; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.jdbc.BadSqlGrammarException; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; @@ -129,10 +130,10 @@ log.debug("Table: {}, Columns: {}", tableName, columns); - String checkStatement = con.getCheckQuery(); - String insertStatement = con.getInsertQuery(); + String checkStatement = StringUtils.remove(StringUtils.trim(con.getCheckQuery()), "\n"); + String insertStatement = StringUtils.remove(StringUtils.trim(con.getInsertQuery()), "\n"); - processRecords(sheet, columns, checkStatement, insertStatement, dataSource); + processRecords(sheet, columns, checkStatement, insertStatement, dataSource, tableName); } /** @@ -142,16 +143,16 @@ * @param insertStatement */ private void processRecords(HSSFSheet sheet, List<String> columns, String checkStatement, String insertStatement, - DataSource dataSource) + DataSource dataSource, String tableName) { SimpleJdbcTemplate jdbcTemplate = new SimpleJdbcTemplate(dataSource); int checkNum = StringUtils.countMatches(checkStatement, "?"); int insertNum = StringUtils.countMatches(insertStatement, "?"); HSSFRow row; - for (short u = 1; u <= sheet.getLastRowNum(); u++) + for (short rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { - row = sheet.getRow(u); + row = sheet.getRow(rowNum); if (row == null) { return; @@ -191,6 +192,12 @@ { value = StringUtils.EMPTY; } + + if ("<NULL>".equals(value)) + { + value = null; + } + values.add(value); } @@ -220,7 +227,24 @@ Object[] insertParams = ArrayUtils.subarray(values.toArray(), 0, insertNum); log.debug("Missing record with key {}; inserting {}", ArrayUtils.toString(checkParams), ArrayUtils .toString(insertParams)); - jdbcTemplate.update(insertStatement, insertParams); + + try + { + jdbcTemplate.update(insertStatement, insertParams); + } + catch (DataIntegrityViolationException bsge) + { + log + .error( + "Error executing insert, record at {}:{} will be skipped. Query in error: '{}', values: {}. Error message: {}", + new Object[]{ + tableName, + rowNum, + insertStatement, + ArrayUtils.toString(insertParams), + bsge.getMessage() }); + return; + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |