@Override public final boolean changed(Record record) { return record.changed(this); }
/** * This method was implemented with [#799]. It may be useful to make it * public for broader use...? */ protected final void from(Record source) { for (Field<?> field : fields.fields.fields) { Field<?> sourceField = source.field(field); if (sourceField != null && source.changed(sourceField)) Tools.setValue(this, field, source, sourceField); } }
/** * Turn a {@link Record} into a {@link Map} */ static final Map<Field<?>, Object> mapOfChangedValues(Record record) { Map<Field<?>, Object> result = new LinkedHashMap<Field<?>, Object>(); int size = record.size(); for (int i = 0; i < size; i++) if (record.changed(i)) result.put(record.field(i), record.get(i)); return result; }
Record resultRecord = classes.get(i).newInstance(); resultRecord.fromMap(map); resultRecord.changed(false); result.add(resultRecord); } else {
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public final void setRecord(R record) { for (int i = 0; i < record.size(); i++) if (record.changed(i)) addValue((Field) record.field(i), record.get(i)); }
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override public final void setRecord(R record) { for (int i = 0; i < record.size(); i++) { if (record.changed(i)) { addValue((Field) record.field(i), record.getValue(i)); } } }
/** * [#2700] [#3582] If a POJO attribute is NULL, but the column is NOT NULL * then we should let the database apply DEFAULT values */ static final void resetChangedOnNotNull(Record record) { int size = record.size(); for (int i = 0; i < size; i++) if (record.get(i) == null) if (!record.field(i).getDataType().nullable()) record.changed(i, false); }
/** * [#2700] [#3582] If a POJO attribute is NULL, but the column is NOT NULL * then we should let the database apply DEFAULT values */ private static final void resetChangedOnNotNull(Record record) { int size = record.size(); for (int i = 0; i < size; i++) if (record.get(i) == null) if (!record.field(i).getDataType().nullable()) record.changed(i, false); } }
@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; }
/** * [#2591] Type-safely copy a value from one record to another, preserving flags. */ static final <T> void copyValue(AbstractRecord target, Field<T> targetField, Record source, Field<?> sourceField) { DataType<T> targetType = targetField.getDataType(); int targetIndex = indexOrFail(target.fieldsRow(), targetField); int sourceIndex = indexOrFail(source.fieldsRow(), sourceField); target.values[targetIndex] = targetType.convert(source.get(sourceIndex)); target.originals[targetIndex] = targetType.convert(source.original(sourceIndex)); target.changed.set(targetIndex, source.changed(sourceIndex)); }
decimalPlacesList.add(decimalPlaces(format0(record.get(index), record.changed(index), true))); String value = format0(record.get(index), record.changed(index), true); StringUtils.replace( StringUtils.replace( format0(record.get(index), record.changed(index), true), "\n", "{lf}" ), "\r", "{cr}" ), "\t", "{tab}"
/** * [#2591] Type-safely copy a value from one record to another, preserving flags. */ static final <T> void copyValue(AbstractRecord target, Field<T> targetField, Record source, Field<?> sourceField) { Value<T> value = new Value<T>( targetField.getDataType().convert(source.getValue(sourceField)), targetField.getDataType().convert(source.original(sourceField)), source.changed(sourceField) ); target.setValue(targetField, value); }