AbstractRecord(RowImpl fields) { this.fields = fields; this.values = new Value<?>[fields.size()]; for (int i = 0; i < values.length; i++) { values[i] = new Value<Object>(null); } }
@Override public final void fromArray(Object[] array, Field<?>... f) { Fields accept = new Fields(f); int size = fields.size(); for (int i = 0; i < size && i < array.length; i++) { Field field = fields.field(i); if (accept.field(field) != null) { Utils.setValue(this, field, array[i]); } } }
@Override public final Map<String, Object> intoMap() { Map<String, Object> map = new LinkedHashMap<String, Object>(); int size = fields.size(); for (int i = 0; i < size; i++) { Field<?> field = fields.field(i); if (map.put(field.getName(), getValue(i)) != null) { throw new InvalidResultException( "Field " + field.getName() + " is not unique in Record : " + this); } } return map; }
@Override public final int size() { return fields.size(); }
@Override public final Field<?> field(int index) { return index >= 0 && index < fields.size() ? fields.field(index) : null; }