package com.revolsys.swing.table.record.model;
import java.util.Map;
import com.revolsys.record.schema.RecordDefinition;
import com.revolsys.swing.table.BaseJTable;
public class RecordMapTableModel extends AbstractSingleRecordTableModel {
private static final long serialVersionUID = 1L;
public static BaseJTable newTable(final RecordDefinition recordDefinition,
final Map<String, Object> values, final boolean editable) {
final RecordMapTableModel model = new RecordMapTableModel(recordDefinition, values, editable);
return newTable(model);
}
private Map<String, Object> values;
public RecordMapTableModel(final RecordDefinition recordDefinition,
final Map<String, Object> values, final boolean editable) {
super(recordDefinition, editable);
this.values = values;
}
@SuppressWarnings("unchecked")
@Override
public <V extends Map<String, Object>> V getMap(final int columnIndex) {
if (columnIndex == 2) {
return (V)this.values;
} else {
return null;
}
}
@Override
public Object getObjectValue(final int attributeIndex, final int columnIndex) {
final String name = getColumnFieldName(attributeIndex);
return this.values.get(name);
}
public Map<String, ? extends Object> getValues() {
return this.values;
}
@Override
protected Object setObjectValue(final String fieldName, final Object value) {
final Object oldValue = this.values.get(fieldName);
this.values.put(fieldName, value);
return oldValue;
}
public void setValue(final String fieldName, final Object fieldValue) {
this.values.put(fieldName, fieldValue);
fireTableDataChanged();
}
public void setValues(final Map<String, Object> values) {
if (values != this.values) {
this.values = values;
}
fireTableDataChanged();
}
}