package comeon.ui.media.metadata;
import java.text.CollationKey;
import java.text.Collator;
import java.util.Collections;
import java.util.List;
abstract class SimpleMetadataTableModel<T> extends AbstractMetadataTableModel {
private static final long serialVersionUID = 1L;
private final List<Entry> values;
public SimpleMetadataTableModel(final T content) {
List<Entry> values = this.getValues(content);
Collections.sort(values);
this.values = values;
}
protected abstract List<Entry> getValues(final T content);
@Override
public int getRowCount() {
return values.size();
}
@Override
public Object getValueAt(final int rowIndex, final int columnIndex) {
final Entry entry = values.get(rowIndex);
final String value;
switch (columnIndex) {
case 0:
value = entry.getKey();
break;
case 1:
value = entry.getValue();
break;
default:
throw new IllegalArgumentException();
}
return value;
}
static final class Entry implements Comparable<Entry> {
private static final Collator collator = Collator.getInstance();
private final String key;
private final String value;
private final CollationKey collationKey;
public Entry(final String key, final String value) {
this.key = key;
this.value = value;
this.collationKey = collator.getCollationKey(key);
}
public String getKey() {
return key;
}
public String getValue() {
return value;
}
@Override
public int compareTo(final Entry o) {
return collationKey.compareTo(o.collationKey);
}
}
}