Refactored some reusable code

This commit is contained in:
Lukas Eder 2013-05-11 10:30:46 +02:00
parent 2df2a478a6
commit 7032af7c79
2 changed files with 9 additions and 13 deletions

View File

@ -337,6 +337,12 @@ abstract class AbstractRecord extends AbstractStore implements Record {
setValue(field, converter.to(value));
}
final void setValues(Field<?>[] fields, AbstractRecord record) {
for (Field<?> field : fields) {
setValue(field, record.getValue0(field));
}
}
final void setValue(Field<?> field, Value<?> value) {
setValue(fieldsRow().indexOf(field), value);
}
@ -712,10 +718,7 @@ abstract class AbstractRecord extends AbstractStore implements Record {
// the best way to fetch a record
rs.absolute(rsIndex - 1);
AbstractRecord record = (AbstractRecord) create().fetchLazy(rs).fetchOne();
for (Field<?> field : f) {
setValue(field, record.getValue0(field));
}
setValues(f, record);
}
catch (SQLException e) {
throw translate("Cannot refresh record", e);

View File

@ -87,11 +87,7 @@ public class UpdatableRecordImpl<R extends UpdatableRecord<R>> extends TableReco
@SuppressWarnings({ "rawtypes", "unchecked" })
public Record key() {
RecordImpl result = new RecordImpl(getPrimaryKey().getFields());
for (Field<?> field : result.fields.fields) {
result.setValue(field, getValue0(field));
}
result.setValues(result.fields.fields.fields, this);
return result;
}
@ -347,10 +343,7 @@ public class UpdatableRecordImpl<R extends UpdatableRecord<R>> extends TableReco
if (select.execute() == 1) {
AbstractRecord record = (AbstractRecord) select.getResult().get(0);
for (Field<?> field : f) {
setValue(field, record.getValue0(field));
}
setValues(f, record);
}
else {
throw new InvalidResultException("Exactly one row expected for refresh. Record does not exist in database.");