Added 'scrubbing' of values being used in query filters. removed unused param from scrubValue method

This commit is contained in:
2023-10-16 08:31:25 -05:00
parent 14d0d18045
commit af852b0612
3 changed files with 13 additions and 7 deletions

View File

@ -149,7 +149,7 @@ public abstract class AbstractRDBMSAction implements QActionInterface
** and type conversions that we can do "better" than jdbc... ** and type conversions that we can do "better" than jdbc...
** **
*******************************************************************************/ *******************************************************************************/
protected Serializable scrubValue(QFieldMetaData field, Serializable value, boolean isInsert) protected Serializable scrubValue(QFieldMetaData field, Serializable value)
{ {
if("".equals(value)) if("".equals(value))
{ {
@ -724,9 +724,10 @@ public abstract class AbstractRDBMSAction implements QActionInterface
throw new IllegalArgumentException("Incorrect number of values given for criteria [" + field.getName() + "]"); throw new IllegalArgumentException("Incorrect number of values given for criteria [" + field.getName() + "]");
} }
////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// replace any expression-type values with their evaluation // // replace any expression-type values with their evaluation //
////////////////////////////////////////////////////////////// // also, "scrub" non-expression values, which type-converts them (e.g., strings in various supported date formats become LocalDate) //
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
ListIterator<Serializable> valueListIterator = values.listIterator(); ListIterator<Serializable> valueListIterator = values.listIterator();
while(valueListIterator.hasNext()) while(valueListIterator.hasNext())
{ {
@ -735,6 +736,11 @@ public abstract class AbstractRDBMSAction implements QActionInterface
{ {
valueListIterator.set(expression.evaluate()); valueListIterator.set(expression.evaluate());
} }
else
{
Serializable scrubbedValue = scrubValue(field, value);
valueListIterator.set(scrubbedValue);
}
} }
} }

View File

@ -135,7 +135,7 @@ public class RDBMSInsertAction extends AbstractRDBMSAction implements InsertInte
for(QFieldMetaData field : insertableFields) for(QFieldMetaData field : insertableFields)
{ {
Serializable value = record.getValue(field.getName()); Serializable value = record.getValue(field.getName());
value = scrubValue(field, value, true); value = scrubValue(field, value);
params.add(value); params.add(value);
} }
} }

View File

@ -214,7 +214,7 @@ public class RDBMSUpdateAction extends AbstractRDBMSAction implements UpdateInte
for(String fieldName : fieldsBeingUpdated) for(String fieldName : fieldsBeingUpdated)
{ {
Serializable value = record.getValue(fieldName); Serializable value = record.getValue(fieldName);
value = scrubValue(table.getField(fieldName), value, false); value = scrubValue(table.getField(fieldName), value);
rowValues.add(value); rowValues.add(value);
} }
rowValues.add(record.getValue(table.getPrimaryKeyField())); rowValues.add(record.getValue(table.getPrimaryKeyField()));
@ -286,7 +286,7 @@ public class RDBMSUpdateAction extends AbstractRDBMSAction implements UpdateInte
for(String fieldName : fieldsBeingUpdated) for(String fieldName : fieldsBeingUpdated)
{ {
Serializable value = record0.getValue(fieldName); Serializable value = record0.getValue(fieldName);
value = scrubValue(table.getField(fieldName), value, false); value = scrubValue(table.getField(fieldName), value);
params.add(value); params.add(value);
} }