package org.jabref.gui.util.comparator; import java.util.Comparator; import java.util.List; import java.util.Optional; import org.jabref.model.entry.BibEntry; /** * Comparator that handles icon columns. */ public class IconComparator implements Comparator<BibEntry> { private final List<String> fields; public IconComparator(List<String> fields) { this.fields = fields; } @Override public int compare(BibEntry e1, BibEntry e2) { for (String field : fields) { Optional<String> val1 = e1.getField(field); Optional<String> val2 = e2.getField(field); if (val1.isPresent()) { if (val2.isPresent()) { // val1 is not null AND val2 is not null int compareToRes = val1.get().compareTo(val2.get()); if (compareToRes == 0) { // continue loop as current two values are equal } else { return compareToRes; } } else { return -1; } } else { if (val2.isPresent()) { return 1; } else { // continue loop and check for next field } } } return 0; } }