@Override final Fields<Record> fields0() { return new Fields<Record>(); } }
@Override public final DataType<?> dataType(String fieldName) { return fields.dataType(fieldName); }
@Override public final DataType<?>[] dataTypes() { return fields.dataTypes(); }
private final int[] internIndexes(Field<?>[] fields) { if (internIndexes != null) { return internIndexes; } else if (internFields != null) { return new Fields<Record>(fields).indexesOf(internFields); } else if (internNames != null) { return new Fields<Record>(fields).indexesOf(internNames); } return null; }
@Override public final Field<?>[] fields(Field<?>... f) { return fields.fields(f); }
private final Object prepareArrayForUnmap(Object source, Fields f) { if (source instanceof Object[]) { Object[] array = (Object[]) source; if (array.length != f.size()) { Object[] result = new Object[f.size()]; for (int i = 0; i < result.length; i++) { int index = fields.indexOf(f.field(i)); result[i] = index >= 0 && index < array.length ? array[index] : null; } return result; } else return source; } else return source; }
@Override public final Field<?>[] fields(int... f) { Field<?>[] result = new Field[f.length]; for (int i = 0; i < result.length; i++) result[i] = field(f[i]); return result; }
/** * Set all changed values of this record to a store query */ final void addChangedValues(Field<?>[] storeFields, StoreQuery<R> query) { Fields<Record> f = new Fields<Record>(storeFields); for (Field<?> field : fields.fields.fields) { if (changed(field) && f.field(field) != null) { addValue(query, field); } } }
private final void toSQLMySQLOnDuplicateKeyUpdate(Context<?> ctx) { Fields<?> fields = new Fields<Record>(getUpsertFields()); Map<Field<?>, Field<?>> map = new LinkedHashMap<Field<?>, Field<?>>(); for (Field<?> field : fields.fields) map.put(field, getUpsertValues().get(fields.indexOf(field))); if (upsertSelect != null) { ctx.sql("[ merge with select is not supported in MySQL / MariaDB ]"); } else { ctx.visit(insertInto(table, getUpsertFields()) .values(getUpsertValues()) .onDuplicateKeyUpdate() .set(map)); } }
@Override public final Result<R> intern(Field<?>... f) { return intern(fields.indexesOf(f)); }
@Override public final int indexOf(String fieldName) { return fields.indexOf(fieldName); }
UDTFieldImpl(Name name, DataType<T> type, UDT<R> udt, Comment comment, Binding<?, T> binding) { super(name, type, comment, binding); this.udt = udt; // [#1199] The public API of UDT returns immutable field lists if (udt instanceof UDTImpl) { ((UDTImpl<?>) udt).fields0().add(this); } }
@Override public final int size() { return fields.size(); }
@Override public String toString() { return fields.toString(); } }
@Override public final Field<?>[] fields(Name... fieldNames) { return fields.fields(fieldNames); }
@Override public final Field<?>[] fields(Field<?>... f) { Field<?>[] result = new Field[f.length]; for (int i = 0; i < result.length; i++) result[i] = field(f[i]); return result; }