package info.opencards.ui.table;

import javax.swing.*;
import javax.swing.table.TableRowSorter;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;


class CardTableRowSorter extends TableRowSorter<CardTableModel> {


    public CardTableRowSorter(CardTableModel model) {
        super(model);

        // define the different column comparators

        // skip the name row because the default sorter does a great job here
        setComparator(1, new Comparator<StringifiedScheduleDate>() {
            public int compare(StringifiedScheduleDate o1, StringifiedScheduleDate o2) {
                return o1.compareTo(o2);
            }
        });

        setComparator(2, new IntegerComparator());
        setComparator(3, new IntegerComparator());

        // apply the default sorting

        List<SortKey> sortKeys = new ArrayList<SortKey>();
        sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
        setSortKeys(sortKeys);
        sort();
    }


    private static class IntegerComparator implements Comparator<Integer> {


        public int compare(Integer o1, Integer o2) {
            return o1.compareTo(o2);
        }
    }
}