From 0e66005147360b69365c34d6a278c752d36565f7 Mon Sep 17 00:00:00 2001 From: John Woodlock Date: Mon, 17 Sep 2012 20:07:53 +1000 Subject: [PATCH] WIP data tables --- .../ReadWriteNonCoreDataServiceImpl.java | 80 +++++++++++++------ 1 file changed, 57 insertions(+), 23 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java index b80173a4a..850d682e2 100644 --- a/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java +++ b/mifosng-provider/src/main/java/org/mifosng/platform/noncore/ReadWriteNonCoreDataServiceImpl.java @@ -489,7 +489,8 @@ public class ReadWriteNonCoreDataServiceImpl implements List columnHeaders = getDatatableResultsetColumnHeaders(datatable); - String sql = getAddSql(columnHeaders, datatable, getFKField(applicationTableName), id, queryParams); + String sql = getAddSql(columnHeaders, datatable, + getFKField(applicationTableName), id, queryParams); String sqlErrorMsg = "SQL: " + sql; genericDataService.updateSQL(sql, sqlErrorMsg); @@ -817,25 +818,11 @@ public class ReadWriteNonCoreDataServiceImpl implements } private String getAddSql(List columnHeaders, - String datatable, String FKField, Long id, Map queryParams) { + String datatable, String FKField, Long id, + Map queryParams) { - Set keys = queryParams.keySet(); - - String underscore = "_"; - String space = " "; - String pValue = null; - String keyUpdated = null; - - Map updatedColumns = new HashMap(); - - for (String key : keys) { - if (!(key.equalsIgnoreCase("id"))) { - //keyUpdated = genericDataService.replace(key, underscore, space); - keyUpdated = key; - pValue = queryParams.get(key); - updatedColumns.put(keyUpdated, pValue); - } - } + Map affectedColumns = getAffectedColumns(columnHeaders, + queryParams); String pValueWrite = ""; String saveSql = ""; @@ -844,8 +831,9 @@ public class ReadWriteNonCoreDataServiceImpl implements String insertColumns = ""; String selectColumns = ""; String columnName = ""; - for (String key : updatedColumns.keySet()) { - pValue = updatedColumns.get(key); + String pValue = null; + for (String key : affectedColumns.keySet()) { + pValue = affectedColumns.get(key); if (StringUtils.isEmpty(pValue)) { pValueWrite = "null"; @@ -859,10 +847,56 @@ public class ReadWriteNonCoreDataServiceImpl implements selectColumns += "," + pValueWrite + " as " + columnName; } - saveSql = "insert into `" + datatable + "` (" + FKField + insertColumns + ")" - + " select " + id + " as id" + selectColumns; + saveSql = "insert into `" + datatable + "` (`" + FKField + "` " + + insertColumns + ")" + " select " + id + " as id" + + selectColumns; return saveSql; } + private Map getAffectedColumns( + List columnHeaders, + Map queryParams) { + + String underscore = "_"; + String space = " "; + String pValue = null; + String queryParamColumnUnderscored; + String columnHeaderUnderscored; + boolean notFound; + + Map affectedColumns = new HashMap(); + Set keys = queryParams.keySet(); + for (String key : keys) { + // ignore any id field and matches incoming fields with and without + // underscores (spaces and underscores considered the same) + if (!(key.equalsIgnoreCase("id"))) { + notFound = true; + queryParamColumnUnderscored = genericDataService.replace(key, + space, underscore); + for (ResultsetColumnHeader columnHeader : columnHeaders) { + if (notFound) { + columnHeaderUnderscored = genericDataService + .replace(columnHeader.getColumnName(), space, + underscore); + if (queryParamColumnUnderscored + .equalsIgnoreCase(columnHeaderUnderscored)) { + pValue = queryParams.get(key); + affectedColumns.put(columnHeader.getColumnName(), + pValue); + notFound = false; + } + } + + } + if (notFound) { + throw new PlatformDataIntegrityException( + "error.msg.column.not.found", "Column: " + key + + " Not Found"); + } + } + } + return affectedColumns; + } + } \ No newline at end of file