diff --git a/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_help.java b/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_help.java index 0cfd9628..d5bbc94a 100644 --- a/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_help.java +++ b/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_help.java @@ -1,10 +1,18 @@ package me.StevenLawson.TotalFreedomMod.HTTPD; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; -import org.apache.commons.lang.StringEscapeUtils; -import org.bukkit.Bukkit; -import org.bukkit.plugin.Plugin; +import me.StevenLawson.TotalFreedomMod.Commands.TFM_CommandLoader; +import org.bukkit.command.Command; +import org.bukkit.command.CommandMap; +import org.bukkit.command.PluginIdentifiableCommand; + +import static me.StevenLawson.TotalFreedomMod.HTTPD.HTMLGenerationTools.*; public class Module_help extends TFM_HTTPD_Module { @@ -16,47 +24,73 @@ public class Module_help extends TFM_HTTPD_Module @Override public String getBody() { - final StringBuilder body = new StringBuilder(); + StringBuilder responseBody = new StringBuilder(); - Plugin[] plugins = Bukkit.getPluginManager().getPlugins(); - for (Plugin plugin : plugins) + CommandMap commandMap; + HashMap knownCommands; + if ((commandMap = TFM_CommandLoader.getInstance().getCommandMap()) == null + || (knownCommands = TFM_CommandLoader.getInstance().getKnownCommands(commandMap)) == null) { - Map> commands = plugin.getDescription().getCommands(); - if (commands != null) + return paragraph("Error loading commands."); + } + + final Map> commandsByPlugin = new HashMap>(); + + final Iterator> itKnownCommands = knownCommands.entrySet().iterator(); + while (itKnownCommands.hasNext()) + { + final Map.Entry entry = itKnownCommands.next(); + final String name = entry.getKey(); + final Command command = entry.getValue(); + if (name.equalsIgnoreCase(command.getName())) { - Iterator>> it1 = commands.entrySet().iterator(); - while (it1.hasNext()) + String pluginName = "Bukkit"; + if (command instanceof PluginIdentifiableCommand) { - Map.Entry> next1 = it1.next(); - String key1 = next1.getKey(); - Map value1 = next1.getValue(); - - Iterator> it2 = value1.entrySet().iterator(); - while (it2.hasNext()) - { - Map.Entry next2 = it2.next(); - String key2 = next2.getKey(); - Object value2 = next2.getValue(); - - body - .append("

") - .append(StringEscapeUtils.escapeHtml(key1)) - .append(".") - .append(StringEscapeUtils.escapeHtml(key2)) - .append(" = ") - .append(StringEscapeUtils.escapeHtml(value2.toString())) - .append("

\r\n"); - } + pluginName = ((PluginIdentifiableCommand) command).getPlugin().getName(); } + List pluginCommands = commandsByPlugin.get(pluginName); + if (pluginCommands == null) + { + commandsByPlugin.put(pluginName, pluginCommands = new ArrayList()); + } + pluginCommands.add(command); } } - return body.toString(); + final Iterator>> itCommandsByPlugin = commandsByPlugin.entrySet().iterator(); + while (itCommandsByPlugin.hasNext()) + { + final Map.Entry> entry = itCommandsByPlugin.next(); + final String pluginName = entry.getKey(); + final List commands = entry.getValue(); + + Collections.sort(commands, new Comparator() + { + @Override + public int compare(Command a, Command b) + { + return a.getName().compareTo(b.getName()); + } + }); + + List descriptions = new ArrayList(); + for (Command command : commands) + { + descriptions.add(command.getName() + " (" + command.getUsage().replace("", command.getName()).trim() + "): " + command.getDescription()); + } + + responseBody + .append(paragraph(pluginName)) + .append(list(descriptions)); + } + + return responseBody.toString(); } @Override public String getTitle() { - return "Module_help"; + return "TotalFreedomMod :: WebHelp"; } } diff --git a/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_helpNew.java b/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_helpNew.java deleted file mode 100644 index c17d38b0..00000000 --- a/src/me/StevenLawson/TotalFreedomMod/HTTPD/Module_helpNew.java +++ /dev/null @@ -1,96 +0,0 @@ -package me.StevenLawson.TotalFreedomMod.HTTPD; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import me.StevenLawson.TotalFreedomMod.Commands.TFM_CommandLoader; -import org.bukkit.command.Command; -import org.bukkit.command.CommandMap; -import org.bukkit.command.PluginIdentifiableCommand; - -import static me.StevenLawson.TotalFreedomMod.HTTPD.HTMLGenerationTools.*; - -public class Module_helpNew extends TFM_HTTPD_Module -{ - public Module_helpNew(String uri, NanoHTTPD.Method method, Map headers, Map params, Map files) - { - super(uri, method, headers, params, files); - } - - @Override - public String getBody() - { - StringBuilder responseBody = new StringBuilder(); - - CommandMap commandMap; - HashMap knownCommands; - if ((commandMap = TFM_CommandLoader.getInstance().getCommandMap()) == null - || (knownCommands = TFM_CommandLoader.getInstance().getKnownCommands(commandMap)) == null) - { - return paragraph("Error loading commands."); - } - - final Map> commandsByPlugin = new HashMap>(); - - final Iterator> itKnownCommands = knownCommands.entrySet().iterator(); - while (itKnownCommands.hasNext()) - { - final Map.Entry entry = itKnownCommands.next(); - final String name = entry.getKey(); - final Command command = entry.getValue(); - if (name.equalsIgnoreCase(command.getName())) - { - String pluginName = "Bukkit"; - if (command instanceof PluginIdentifiableCommand) - { - pluginName = ((PluginIdentifiableCommand) command).getPlugin().getName(); - } - List pluginCommands = commandsByPlugin.get(pluginName); - if (pluginCommands == null) - { - commandsByPlugin.put(pluginName, pluginCommands = new ArrayList()); - } - pluginCommands.add(command); - } - } - - final Iterator>> itCommandsByPlugin = commandsByPlugin.entrySet().iterator(); - while (itCommandsByPlugin.hasNext()) - { - final Map.Entry> entry = itCommandsByPlugin.next(); - final String pluginName = entry.getKey(); - final List commands = entry.getValue(); - - Collections.sort(commands, new Comparator() - { - @Override - public int compare(Command a, Command b) - { - return a.getName().compareTo(b.getName()); - } - }); - - List descriptions = new ArrayList(); - for (Command command : commands) - { - descriptions.add(command.getName() + " (" + command.getUsage().replace("", command.getName()).trim() + "): " + command.getDescription()); - } - - responseBody - .append(paragraph(pluginName)) - .append(list(descriptions)); - } - - return responseBody.toString(); - } - - @Override - public String getTitle() - { - return "TotalFreedomMod :: WebHelp"; - } -} diff --git a/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_Manager.java b/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_Manager.java index 2834a472..cc05fafd 100644 --- a/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_Manager.java +++ b/src/me/StevenLawson/TotalFreedomMod/HTTPD/TFM_HTTPD_Manager.java @@ -82,7 +82,7 @@ public class TFM_HTTPD_Manager } else if ("help".equalsIgnoreCase(args[0])) { - return new Module_helpNew(uri, method, headers, params, files).getResponse(); + return new Module_help(uri, method, headers, params, files).getResponse(); } return null; }