package com.revolsys.swing.map.layer.record.table.model; import java.util.Arrays; import java.util.List; import com.revolsys.datatype.DataType; import com.revolsys.record.schema.FieldDefinition; import com.revolsys.record.schema.RecordDefinition; import com.revolsys.swing.table.AbstractTableModel; import com.revolsys.swing.table.BaseJTable; public class RecordDefinitionTableModel extends AbstractTableModel { private static final List<Class<?>> COLUMN_CLASSES = Arrays.<Class<?>> asList(Integer.class, String.class, DataType.class, Integer.class, Integer.class, Object.class, Object.class, Boolean.class, String.class); private static final List<String> COLUMN_NAMES = Arrays.asList("#", "Field", "Type", "Length", "Scale", "Min", "Max", "Required", "Description"); private static final long serialVersionUID = 1L; public static BaseJTable newTable(final RecordDefinition recordDefinition) { if (recordDefinition == null) { return null; } else { final RecordDefinitionTableModel model = new RecordDefinitionTableModel(recordDefinition); final BaseJTable table = new BaseJTable(model); table.resizeColumnsToContent(); return table; } } private final RecordDefinition recordDefinition; public RecordDefinitionTableModel(final RecordDefinition recordDefinition) { this.recordDefinition = recordDefinition; } @Override public Class<?> getColumnClass(final int columnIndex) { return COLUMN_CLASSES.get(columnIndex); } @Override public int getColumnCount() { return 9; } @Override public String getColumnName(final int column) { return COLUMN_NAMES.get(column); } @Override public int getRowCount() { return this.recordDefinition.getFieldCount(); } @Override public Object getValueAt(final int rowIndex, final int columnIndex) { final FieldDefinition attribute = this.recordDefinition.getField(rowIndex); if (attribute == null) { return "..."; } else { switch (columnIndex) { case 0: return rowIndex; case 1: return attribute.getName(); case 2: return attribute.getDataType(); case 3: return attribute.getLength(); case 4: return attribute.getScale(); case 5: return attribute.getMinValue(); case 6: return attribute.getMaxValue(); case 7: return attribute.isRequired(); case 8: return attribute.getDescription(); default: return "..."; } } } }