WIP data tables

This commit is contained in:
John Woodlock
2012-09-17 20:07:53 +10:00
parent b5e1ec051f
commit 0e66005147
@@ -489,7 +489,8 @@ public class ReadWriteNonCoreDataServiceImpl implements
List<ResultsetColumnHeader> columnHeaders = getDatatableResultsetColumnHeaders(datatable); List<ResultsetColumnHeader> 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; String sqlErrorMsg = "SQL: " + sql;
genericDataService.updateSQL(sql, sqlErrorMsg); genericDataService.updateSQL(sql, sqlErrorMsg);
@@ -817,25 +818,11 @@ public class ReadWriteNonCoreDataServiceImpl implements
} }
private String getAddSql(List<ResultsetColumnHeader> columnHeaders, private String getAddSql(List<ResultsetColumnHeader> columnHeaders,
String datatable, String FKField, Long id, Map<String, String> queryParams) { String datatable, String FKField, Long id,
Map<String, String> queryParams) {
Set<String> keys = queryParams.keySet(); Map<String, String> affectedColumns = getAffectedColumns(columnHeaders,
queryParams);
String underscore = "_";
String space = " ";
String pValue = null;
String keyUpdated = null;
Map<String, String> updatedColumns = new HashMap<String, String>();
for (String key : keys) {
if (!(key.equalsIgnoreCase("id"))) {
//keyUpdated = genericDataService.replace(key, underscore, space);
keyUpdated = key;
pValue = queryParams.get(key);
updatedColumns.put(keyUpdated, pValue);
}
}
String pValueWrite = ""; String pValueWrite = "";
String saveSql = ""; String saveSql = "";
@@ -844,8 +831,9 @@ public class ReadWriteNonCoreDataServiceImpl implements
String insertColumns = ""; String insertColumns = "";
String selectColumns = ""; String selectColumns = "";
String columnName = ""; String columnName = "";
for (String key : updatedColumns.keySet()) { String pValue = null;
pValue = updatedColumns.get(key); for (String key : affectedColumns.keySet()) {
pValue = affectedColumns.get(key);
if (StringUtils.isEmpty(pValue)) { if (StringUtils.isEmpty(pValue)) {
pValueWrite = "null"; pValueWrite = "null";
@@ -859,10 +847,56 @@ public class ReadWriteNonCoreDataServiceImpl implements
selectColumns += "," + pValueWrite + " as " + columnName; selectColumns += "," + pValueWrite + " as " + columnName;
} }
saveSql = "insert into `" + datatable + "` (" + FKField + insertColumns + ")" saveSql = "insert into `" + datatable + "` (`" + FKField + "` "
+ " select " + id + " as id" + selectColumns; + insertColumns + ")" + " select " + id + " as id"
+ selectColumns;
return saveSql; return saveSql;
} }
private Map<String, String> getAffectedColumns(
List<ResultsetColumnHeader> columnHeaders,
Map<String, String> queryParams) {
String underscore = "_";
String space = " ";
String pValue = null;
String queryParamColumnUnderscored;
String columnHeaderUnderscored;
boolean notFound;
Map<String, String> affectedColumns = new HashMap<String, String>();
Set<String> 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;
}
} }