Clean up AbstractRecord

This commit is contained in:
Lukas Eder 2012-10-27 20:45:43 +02:00
parent 31d145ea52
commit 3ae9425540

View File

@ -89,9 +89,9 @@ abstract class AbstractRecord extends AbstractStore<Object> implements Record {
this.fields = fields;
}
final FieldProvider getFieldProvider() {
return fields;
}
// ------------------------------------------------------------------------
// XXX: Attachable API
// ------------------------------------------------------------------------
@Override
public final List<Attachable> getAttachables() {
@ -109,6 +109,14 @@ abstract class AbstractRecord extends AbstractStore<Object> implements Record {
return result;
}
// ------------------------------------------------------------------------
// XXX: FieldProvider API
// ------------------------------------------------------------------------
final FieldProvider getFieldProvider() {
return fields;
}
@Override
public final List<Field<?>> getFields() {
return fields.getFields();
@ -129,11 +137,101 @@ abstract class AbstractRecord extends AbstractStore<Object> implements Record {
return fields.getField(index);
}
@Override
public final int getIndex(Field<?> field) {
return fields.getIndex(field);
}
// ------------------------------------------------------------------------
// XXX: Record API
// ------------------------------------------------------------------------
@Override
public final int size() {
return getFields().size();
}
@Override
public final <T> T getValue(Field<T> field) {
return getValue0(field).getValue();
}
@Override
public final <T> T getValue(Field<T> field, T defaultValue) {
return getValue0(field).getValue(defaultValue);
}
@Override
public final <T> T getValue(Field<?> field, Class<? extends T> type) {
return Convert.convert(getValue(field), type);
}
@Override
public final <T> T getValue(Field<?> field, Class<? extends T> type, T defaultValue) {
final T result = getValue(field, type);
return result == null ? defaultValue : result;
}
@Override
public final <T, U> U getValue(Field<T> field, Converter<? super T, U> converter) {
return converter.from(getValue(field));
}
@Override
public final <T, U> U getValue(Field<T> field, Converter<? super T, U> converter, U defaultValue) {
final U result = getValue(field, converter);
return result == null ? defaultValue : result;
}
@Override
public final Object getValue(int index) {
return getValue0(index).getValue();
}
@Override
public final <U> U getValue(int index, Converter<?, U> converter) {
return Convert.convert(getValue(index), converter);
}
@Override
public final <U> U getValue(int index, Converter<?, U> converter, U defaultValue) {
final U result = getValue(index, converter);
return result == null ? defaultValue : result;
}
@Override
public final Object getValue(String fieldName) {
return getValue(getField(fieldName));
}
@SuppressWarnings("unchecked")
@Override
public final Object getValue(String fieldName, Object defaultValue) {
return getValue((Field<Object>) getField(fieldName), defaultValue);
}
@Override
public final <T> T getValue(String fieldName, Class<? extends T> type) {
return Convert.convert(getValue(fieldName), type);
}
@Override
public final <Z> Z getValue(String fieldName, Class<? extends Z> type, Z defaultValue) {
final Z result = getValue(fieldName, type);
return result == null ? defaultValue : result;
}
@Override
public final <U> U getValue(String fieldName, Converter<?, U> converter) {
return Convert.convert(getValue(fieldName), converter);
}
@Override
public final <U> U getValue(String fieldName, Converter<?, U> converter, U defaultValue) {
final U result = getValue(fieldName, converter);
return result == null ? defaultValue : result;
}
@SuppressWarnings("unchecked")
final <T> Value<T> getValue0(int index) {
Value<?>[] v = getValues();
@ -152,35 +250,16 @@ abstract class AbstractRecord extends AbstractStore<Object> implements Record {
final Value<?>[] getValues() {
if (values == null) {
init();
values = new Value<?>[fields.getFields().size()];
for (int i = 0; i < values.length; i++) {
values[i] = new Value<Object>(null);
}
}
return values;
}
@Override
public final int getIndex(Field<?> field) {
return fields.getIndex(field);
}
private final void init() {
values = new Value<?>[fields.getFields().size()];
for (int i = 0; i < values.length; i++) {
values[i] = new Value<Object>(null);
}
}
@Override
public final <T> T getValue(Field<T> field) {
return getValue0(field).getValue();
}
@Override
public final <T> T getValue(Field<T> field, T defaultValue) {
return getValue0(field).getValue(defaultValue);
}
@Override
public final <T> void setValue(Field<T> field, T value) {
UniqueKey<?> mainKey = getMainKey();
@ -239,84 +318,6 @@ abstract class AbstractRecord extends AbstractStore<Object> implements Record {
}
}
@Override
public String toString() {
Result<AbstractRecord> result = new ResultImpl<AbstractRecord>(getConfiguration(), fields);
result.add(this);
return result.toString();
}
@Override
public final Object getValue(int index) {
return getValue0(index).getValue();
}
@Override
public final Object getValue(String fieldName) {
return getValue(getField(fieldName));
}
@SuppressWarnings("unchecked")
@Override
public final Object getValue(String fieldName, Object defaultValue) {
return getValue((Field<Object>) getField(fieldName), defaultValue);
}
@Override
public final <T> T getValue(Field<?> field, Class<? extends T> type) {
return Convert.convert(getValue(field), type);
}
@Override
public final <T> T getValue(Field<?> field, Class<? extends T> type, T defaultValue) {
final T result = getValue(field, type);
return result == null ? defaultValue : result;
}
@Override
public final <T> T getValue(String fieldName, Class<? extends T> type) {
return Convert.convert(getValue(fieldName), type);
}
@Override
public final <Z> Z getValue(String fieldName, Class<? extends Z> type, Z defaultValue) {
final Z result = getValue(fieldName, type);
return result == null ? defaultValue : result;
}
@Override
public final <T, U> U getValue(Field<T> field, Converter<? super T, U> converter) {
return converter.from(getValue(field));
}
@Override
public final <T, U> U getValue(Field<T> field, Converter<? super T, U> converter, U defaultValue) {
final U result = getValue(field, converter);
return result == null ? defaultValue : result;
}
@Override
public final <U> U getValue(int index, Converter<?, U> converter) {
return Convert.convert(getValue(index), converter);
}
@Override
public final <U> U getValue(int index, Converter<?, U> converter, U defaultValue) {
final U result = getValue(index, converter);
return result == null ? defaultValue : result;
}
@Override
public final <U> U getValue(String fieldName, Converter<?, U> converter) {
return Convert.convert(getValue(fieldName), converter);
}
@Override
public final <U> U getValue(String fieldName, Converter<?, U> converter, U defaultValue) {
final U result = getValue(fieldName, converter);
return result == null ? defaultValue : result;
}
/*
* This method is overridden covariantly by TableRecordImpl
*/
@ -773,4 +774,15 @@ abstract class AbstractRecord extends AbstractStore<Object> implements Record {
Utils.setValue(this, field, member.get(source));
}
}
// ------------------------------------------------------------------------
// XXX: Object API
// ------------------------------------------------------------------------
@Override
public String toString() {
Result<AbstractRecord> result = new ResultImpl<AbstractRecord>(getConfiguration(), fields);
result.add(this);
return result.toString();
}
}