package org.bukkit.help; import java.util.Comparator; /** * Used to impose a custom total ordering on help topics. * <p> * All topics are listed in alphabetic order, but topics that start with a * slash come after topics that don't. */ public class HelpTopicComparator implements Comparator<HelpTopic> { // Singleton implementations private static final TopicNameComparator tnc = new TopicNameComparator(); public static TopicNameComparator topicNameComparatorInstance() { return tnc; } private static final HelpTopicComparator htc = new HelpTopicComparator(); public static HelpTopicComparator helpTopicComparatorInstance() { return htc; } private HelpTopicComparator() { } public int compare(HelpTopic lhs, HelpTopic rhs) { return tnc.compare(lhs.getName(), rhs.getName()); } public static class TopicNameComparator implements Comparator<String> { private TopicNameComparator() { } public int compare(String lhs, String rhs) { boolean lhsStartSlash = lhs.startsWith("/"); boolean rhsStartSlash = rhs.startsWith("/"); if(lhsStartSlash && !rhsStartSlash) { return 1; } else if(!lhsStartSlash && rhsStartSlash) { return -1; } else { return lhs.compareToIgnoreCase(rhs); } } } }