001 package org.shiftone.jrat.core.command;
002
003 import org.shiftone.jrat.core.spi.Commandlet;
004 import org.shiftone.jrat.util.log.Logger;
005
006 import java.io.OutputStream;
007 import java.io.PrintWriter;
008 import java.util.Iterator;
009 import java.util.Map;
010
011 /**
012 * This is a "special" commandlet that lists other commandlets.
013 *
014 * @author jeff@shiftone.org (Jeff Drost)
015 */
016 public class ListRegistryCommandlet implements Commandlet {
017 private static final Logger LOG = Logger.getLogger(ListRegistryCommandlet.class);
018
019 private CommandletRegistry registry;
020
021 public ListRegistryCommandlet(CommandletRegistry registry) {
022 this.registry = registry;
023 }
024
025 public void execute(OutputStream output) {
026
027 LOG.info("execute");
028 PrintWriter out = new PrintWriter(output);
029 Map commandlets = registry.getCommandlets();
030 Iterator keys = commandlets.keySet().iterator();
031
032 out.println("<html>");
033 out.println("<font size='+2'>");
034 out.println("<a href='http://wiki.shiftone.org/index.php/Java_Runtime_Analysis_Toolkit'>Java Runtime Analysis Toolkit</a><br>");
035 out.println("<a href='http://wiki.shiftone.org/index.php/Tiny_Web_Server'>Tiny Web Server</a></font>");
036 out.println("<br><br><table width='100%' border='1' cellpadding='3' cellspacing='0'>");
037 int i = 0;
038 String[] colors = {"eeeeee", "ffffff"};
039 while (keys.hasNext()) {
040 out.print("<tr bgcolor='#");
041 out.print(colors[i % colors.length]);
042 out.println("'>");
043 String key = (String) keys.next();
044 Commandlet commandlet = (Commandlet) commandlets.get(key);
045 out.println("<td>" + commandlet.getTitle() + "</td>");
046 out.println("<td>" + commandlet.getContentType() + "</td>");
047 out.println("<td><a href='?commandlet=" + key + "'>run</a></td>");
048 out.println("</tr>");
049 i++;
050 }
051
052 out.println("</table>");
053 out.println("</html>");
054 out.flush();
055 }
056
057 public String getContentType() {
058 return ContentType.HTML;
059 }
060
061 public String getTitle() {
062 return "List Commandlets Commandlet";
063 }
064 }