check allowed code values on insert/update

This commit is contained in:
John Woodlock
2012-09-01 16:16:33 +10:00
parent a13d725ec4
commit db7c961587
@@ -268,9 +268,11 @@ public class ReadWriteNonCoreDataServiceImpl implements
String saveSql = getSaveSql(readResultset, fullDatasetName, id, String saveSql = getSaveSql(readResultset, fullDatasetName, id,
transType, queryParams); transType, queryParams);
String sqlErrorMsg = "Additional Fields Type: " + type + " Set: " if (saveSql != null) {
+ set + " Id: " + id; String sqlErrorMsg = "Additional Fields Type: " + type + " Set: "
genericDataService.updateSQL(saveSql, sqlErrorMsg); + set + " Id: " + id;
genericDataService.updateSQL(saveSql, sqlErrorMsg);
}
long elapsed = System.currentTimeMillis() - startTime; long elapsed = System.currentTimeMillis() - startTime;
logger.info("FINISHING updateExtraData: Elapsed Time: " + elapsed logger.info("FINISHING updateExtraData: Elapsed Time: " + elapsed
@@ -286,7 +288,6 @@ public class ReadWriteNonCoreDataServiceImpl implements
String underscore = "_"; String underscore = "_";
String space = " "; String space = " ";
String pValue = null; String pValue = null;
String currValue = null;
String keyUpdated = null; String keyUpdated = null;
List<ResultsetColumnHeader> columnHeaders = readResultset List<ResultsetColumnHeader> columnHeaders = readResultset
.getColumnHeaders(); .getColumnHeaders();
@@ -297,16 +298,12 @@ public class ReadWriteNonCoreDataServiceImpl implements
for (String key : keys) { for (String key : keys) {
if (!(key.equalsIgnoreCase("id"))) { if (!(key.equalsIgnoreCase("id"))) {
keyUpdated = genericDataService.replace(key, underscore, space); keyUpdated = genericDataService.replace(key, underscore, space);
currValue = getCurrentColumnValue(keyUpdated, columnHeaders,
columnValues);
pValue = queryParams.get(key); pValue = queryParams.get(key);
if (notTheSame(currValue, pValue)) { if (newValueValidAndChanged(keyUpdated, columnHeaders,
logger.info("Difference - Column: " + keyUpdated columnValues, pValue))
+ "- Current Value: " + currValue
+ " New Value: " + pValue);
updatedColumns.put(keyUpdated, pValue); updatedColumns.put(keyUpdated, pValue);
}
} }
} }
@@ -317,10 +314,8 @@ public class ReadWriteNonCoreDataServiceImpl implements
// completeness but its okay to take this risk with additional fields // completeness but its okay to take this risk with additional fields
// data // data
for (String key : updatedColumns.keySet()) { if (updatedColumns.size() == 0)
logger.info("Update Column: " + key + " - Value: " return null;
+ updatedColumns.get(key));
}
String pValueWrite = ""; String pValueWrite = "";
String saveSql = ""; String saveSql = "";
@@ -391,12 +386,36 @@ public class ReadWriteNonCoreDataServiceImpl implements
return true; return true;
} }
private String getCurrentColumnValue(String key, private boolean newValueValidAndChanged(String key,
List<ResultsetColumnHeader> columnHeaders, List<String> columnValues) { List<ResultsetColumnHeader> columnHeaders,
List<String> columnValues, String newValue) {
String columnValue = null;
for (int i = 0; i < columnHeaders.size(); i++) { for (int i = 0; i < columnHeaders.size(); i++) {
if (columnHeaders.get(i).getColumnName().equalsIgnoreCase(key)) if (columnHeaders.get(i).getColumnName().equalsIgnoreCase(key)) {
return columnValues.get(i); columnValue = columnValues.get(i);
if ((!StringUtils.isEmpty(newValue))
&& columnHeaders.get(i).getColumnValues().size() > 0) {
if (!(columnHeaders.get(i).getColumnValues()
.contains(newValue))) {
throw new PlatformDataIntegrityException(
"error.msg.invalid.columnValue",
"Parameter Column Name: " + key + " - Value '"
+ newValue
+ "' not found in Allowed Value list");
}
}
if (notTheSame(columnValue, newValue)) {
logger.info("Difference - Column: " + key
+ "- Current Value: " + columnValue
+ " New Value: " + newValue);
return true;
}
return false;
}
} }
throw new PlatformDataIntegrityException( throw new PlatformDataIntegrityException(