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    }