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 }