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}