private <K> void copyValueIntoRecord(T outputRecord, Record inputRecord, Field<K> field, int idx) { outputRecord.setValue(field, inputRecord.getValue(idx, field.getConverter())); }
/** * Extracted method to ensure generic type safety. */ private final <T> void setValue(Record record, Field<T> field) { record.setValue(field, getValue(field)); } });
BigInteger expected = BigInteger.valueOf(1234567); DSLContext ctx = DSL.using(new MockConnection(c -> { Field<BigInteger> id = DSL.field("last_insert_id()", BigInteger.class); Record record = DSL.using(MYSQL).newRecord(id); record.setValue(id, expected); return new MockResult[] { new MockResult(record) }; }), SQLDialect.MYSQL); assertEquals(expected, ctx.lastID());
/** * Type-safely set a value to a record */ static final <T> void setValue(Record target, Field<T> targetField, Object value) { target.setValue(targetField, targetField.getDataType().convert(value)); }
private <K> void copyValueIntoRecord(T outputRecord, Record inputRecord, Field<K> field, int idx) { outputRecord.setValue(field, inputRecord.getValue(idx, field.getConverter())); }
@SuppressWarnings({ "rawtypes", "unchecked" }) private Record record(Configuration configuration, Routine<?> routine) { Record result = null; List<Field<?>> fields = new ArrayList<Field<?>>(1 + routine.getOutParameters().size()); Parameter<?> returnParam = routine.getReturnParameter(); if (returnParam != null) fields.add(field(name(returnParam.getName()), returnParam.getDataType())); for (Parameter<?> param : routine.getOutParameters()) fields.add(field(name(param.getName()), param.getDataType())); if (fields.size() > 0) { result = DSL.using(configuration).newRecord(fields.toArray(new Field[0])); int i = 0; if (returnParam != null) result.setValue((Field) fields.get(i++), routine.getValue(returnParam)); for (Parameter<?> param : routine.getOutParameters()) result.setValue((Field) fields.get(i++), routine.getValue(param)); result.changed(false); } return result; }