WIP data tables
This commit is contained in:
+57
-23
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user