From efb2799167301e9ed02080888751afc65063ad8e Mon Sep 17 00:00:00 2001 From: Par Winzell Date: Wed, 28 Jan 2009 18:32:42 +0000 Subject: [PATCH] Let's accept ColumnExp's or Strings for field identifiers and handle SQLExpression field values too. --- .../com/samskivert/depot/DepotRepository.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/java/com/samskivert/depot/DepotRepository.java b/src/java/com/samskivert/depot/DepotRepository.java index fd6f109..8ca7bb0 100644 --- a/src/java/com/samskivert/depot/DepotRepository.java +++ b/src/java/com/samskivert/depot/DepotRepository.java @@ -711,8 +711,22 @@ public abstract class DepotRepository final String[] fields = new String[fieldsValues.length/2]; final SQLExpression[] values = new SQLExpression[fields.length]; for (int ii = 0, idx = 0; ii < fields.length; ii++) { - fields[ii] = ((ColumnExp)fieldsValues[idx++]).name; - values[ii] = new ValueExp(fieldsValues[idx++]); + if (fieldsValues[idx] instanceof ColumnExp) { + fields[ii] = ((ColumnExp) fieldsValues[idx]).name; + } else if (fieldsValues[idx] instanceof String) { + fields[ii] = (String) fieldsValues[idx]; + } else { + throw new IllegalArgumentException( + "Field identifier #" + (ii+1) + " is neither String nor ColumnExp"); + } + idx ++; + + if (fieldsValues[idx] instanceof SQLExpression) { + values[ii] = (SQLExpression) fieldsValues[idx]; + } else { + values[ii] = new ValueExp(fieldsValues[idx]); + } + idx ++; } UpdateClause update = new UpdateClause(type, key, fields, values); final SQLBuilder builder = _ctx.getSQLBuilder(DepotTypes.getDepotTypes(_ctx, update));