Newer
Older
ultramine_bukkit / src / main / java / org / bukkit / help / HelpTopicComparator.java
@vlad20012 vlad20012 on 24 Feb 2017 1 KB initial
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);
			}
		}
	}
}