public QueryStatus query(String query, SvcLogicContext ctx) {
ArrayList<String> arguments = new ArrayList<>();
query = CtxParameterizedResolver.resolveCtxVars(query, ctx, arguments);
- return query(query, ctx, arguments);
+ return performQuery(query, ctx, null, arguments);
+ }
+
+ public QueryStatus query(String query, String prefix, SvcLogicContext ctx) {
+ ArrayList<String> arguments = new ArrayList<>();
+ query = CtxParameterizedResolver.resolveCtxVars(query, ctx, arguments);
+ return performQuery(query, ctx, prefix, arguments);
}
public QueryStatus query(String query, SvcLogicContext ctx, ArrayList<String> arguments) {
+ return performQuery(query, ctx, null, valueOfArrayList(arguments));
+ }
+ public QueryStatus query(String query, SvcLogicContext ctx, String prefix, ArrayList<String> arguments) {
+ return performQuery(query, ctx, prefix, valueOfArrayList(arguments));
+ }
+
+ private QueryStatus performQuery(String query, SvcLogicContext ctx, String prefix, ArrayList<String> arguments) {
CachedRowSet result = null;
try {
log.debug("No data found");
return QueryStatus.NOT_FOUND;
} else {
- CtxParameterizedResolver.saveCachedRowSetToCtx(result, ctx, null, dbLibService);
+ CtxParameterizedResolver.saveCachedRowSetToCtx(result, ctx, prefix, dbLibService);
}
} catch (SQLException e) {
log.error("Exception in query()",e);
public QueryStatus save(String query, SvcLogicContext ctx) {
ArrayList<String> arguments = new ArrayList<>();
query = CtxParameterizedResolver.resolveCtxVars(query, ctx, arguments);
- return save(query,ctx,arguments);
+ return performSave(query, arguments);
}
public QueryStatus save(String query, SvcLogicContext ctx, ArrayList<String> arguments) {
+ return performSave(query, valueOfArrayList(arguments));
+ }
+
+ private QueryStatus performSave(String query, ArrayList<String> arguments) {
boolean success = false;
try {
success = dbLibService.writeData(query, arguments, null);
}
return dbLibService;
}
+
+ //By using String.valueOf on the array list items, we can store any null values as
+ //Strings with the value "null". This mirrors the way queries worked prior to the
+ //prepared statements.
+ private ArrayList<String> valueOfArrayList(ArrayList<String> original) {
+ ArrayList<String> valueOfList = new ArrayList<>();
+ for(String s : original) {
+ valueOfList.add(String.valueOf(s));
+ }
+ return valueOfList;
+ }
}