package com.revolsys.record;
import java.util.AbstractMap;
import java.util.Set;
import com.revolsys.record.schema.RecordDefinition;
import com.revolsys.util.JavaBeanUtil;
public class DelegatingRecord extends AbstractMap<String, Object> implements Record {
private final Record record;
public DelegatingRecord(final Record record) {
this.record = record;
}
@Override
public Record clone() {
final Record clone = JavaBeanUtil.clone(this.record);
return new DelegatingRecord(clone);
}
@Override
public int compareTo(final Record o) {
return this.record.compareTo(o);
}
@Override
public Set<java.util.Map.Entry<String, Object>> entrySet() {
return this.record.entrySet();
}
public Record getRecord() {
return this.record;
}
@Override
public RecordDefinition getRecordDefinition() {
return this.record.getRecordDefinition();
}
@Override
public RecordFactory getRecordFactory() {
return this.record.getRecordFactory();
}
@Override
public RecordState getState() {
return this.record.getState();
}
@Override
public <T extends Object> T getValue(final int index) {
return this.record.getValue(index);
}
@Override
public int hashCode() {
return this.record.hashCode();
}
@Override
public boolean isState(final RecordState state) {
return this.record.isState(state);
}
@Override
public RecordState setState(final RecordState state) {
return this.record.setState(state);
}
@Override
public boolean setValue(final int index, final Object value) {
return this.record.setValue(index, value);
}
@Override
public void setValues(final Iterable<? extends Object> values) {
this.record.setValues(values);
}
@Override
public void setValues(final Object... values) {
this.record.setValues(values);
}
/**
* Return a String representation of the record. There is no guarantee as to
* the format of this string.
*
* @return The string value.
*/
@Override
public String toString() {
final StringBuilder s = new StringBuilder();
s.append(this.getRecordDefinition().getPath()).append("(\n");
for (int i = 0; i < this.getRecordDefinition().getFieldCount(); i++) {
final Object value = getValue(i);
if (value != null) {
s.append(this.getRecordDefinition().getFieldName(i)).append('=').append(value).append('\n');
}
}
s.append(')');
return s.toString();
}
}