package org.jabref.gui.search; import java.util.Comparator; import java.util.Objects; import org.jabref.model.entry.BibEntry; import ca.odell.glazedlists.matchers.Matcher; /** * This Comparator compares two objects based on whether none, one of them, or both * match a given Matcher. It is used to "float" group and search hits in the main table. */ public class HitOrMissComparator implements Comparator<BibEntry> { private final Matcher<BibEntry> hitOrMiss; public HitOrMissComparator(Matcher<BibEntry> hitOrMiss) { this.hitOrMiss = Objects.requireNonNull(hitOrMiss); } @Override public int compare(BibEntry o1, BibEntry o2) { if (hitOrMiss == null) { return 0; } return Boolean.compare(hitOrMiss.matches(o2), hitOrMiss.matches(o1)); } }