001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.dialogs.changeset;
003
004import static java.util.Comparator.comparing;
005import static java.util.Comparator.comparingInt;
006import static java.util.Comparator.naturalOrder;
007import static java.util.Comparator.nullsLast;
008
009import javax.swing.table.TableRowSorter;
010
011import org.openstreetmap.josm.data.osm.Changeset;
012import org.openstreetmap.josm.data.osm.User;
013import org.openstreetmap.josm.tools.AlphanumComparator;
014
015/**
016 * The row sorter for the changeset table
017 * @since 16826
018 */
019class ChangesetCacheTableRowSorter extends TableRowSorter<ChangesetCacheManagerModel> {
020
021    ChangesetCacheTableRowSorter(ChangesetCacheManagerModel model) {
022        super(model);
023
024        // column 0 - Id
025        setComparator(0, comparingInt(Changeset::getId));
026
027        // column 1 - Upload comment
028        setComparator(1, comparing(Changeset::getComment, AlphanumComparator.getInstance()));
029
030        // column 2 - Open
031        setComparator(2, comparing(Changeset::isOpen));
032
033        // column 3 - User
034        setComparator(3, comparing(Changeset::getUser, comparing(User::getName)));
035
036        // column 4 - Created at
037        setComparator(4, comparing(Changeset::getCreatedAt));
038
039        // column 5 - Closed at
040        setComparator(5, comparing(Changeset::getClosedAt, nullsLast(naturalOrder())));
041
042        // column 6 - Changes
043        setComparator(6, comparingInt(Changeset::getChangesCount));
044
045        // column 7 - Discussions
046        setComparator(7, comparingInt(Changeset::getCommentsCount));
047    }
048}