package org.jfox.mx.http;
import java.util.Properties;
import java.util.Iterator;
import java.util.Map;
import java.util.HashMap;
import java.util.List;
import java.util.ArrayList;
import org.jfox.mx.MxServer;
import org.jfox.mx.ObjectName;
public class AgentCommand implements Command {
public String doGet(MxServer mx, Properties queryMap) throws Exception {
StringBuffer sb = new StringBuffer();
sb.append(PageUtil.head("agent view",mx.getDomains()));
sb.append(PageUtil.banner("Agent View"));
sb.append(table1(mx));
String domainFilter = "*";
if(queryMap.containsKey("domain")) {
domainFilter = queryMap.getProperty("domain");
}
sb.append(table2(mx,domainFilter));
sb.append(PageUtil.foot());
return sb.toString();
}
public static String table1(MxServer mx){
StringBuffer sb = new StringBuffer();
sb.append("<table width=\"780\" align=\"center\">");
sb.append("<tr>");
sb.append("<td>found <b>");
sb.append(mx.getMxCount());
String defaultDomain = mx.getDefaultDomain();
sb.append("</b> mx bean in <b>")
.append(mx.getDomains().length)
.append("</b> domains, default domain is <a href=\"?action=Agent&domain=")
.append(defaultDomain).append("\">")
.append(defaultDomain)
.append("</a> . </td>");
sb.append("</tr>");
sb.append("</table>");
return sb.toString();
}
public static String table2(MxServer mx,String domainFilter){
Iterator it = mx.queryMX(domainFilter);
Map domainsMap = new HashMap();
while(it.hasNext()){
ObjectName on = (ObjectName)it.next();
String domain = on.getDomain();
if(domain.equals("")) {
domain = mx.getDefaultDomain();
}
if(!domainsMap.containsKey(domain)) {
List objectNames = new ArrayList();
objectNames.add(on);
domainsMap.put(domain,objectNames);
}
else {
List objectNames = (List)domainsMap.get(domain);
objectNames.add(on);
}
}
StringBuffer sb = new StringBuffer();
sb.append("<table width=\"780\" align=\"center\">\n" +
" <tr>\n" +
" <td>\n" +
" <ul>\n");
for(Iterator iter = domainsMap.entrySet().iterator();iter.hasNext();){
Map.Entry entry = (Map.Entry)iter.next();
String domain = (String)entry.getKey();
List objectNames = (List)entry.getValue();
sb.append("<li> <a href=\"?action=Agent&domain=").append(domain).append("\" class=\"head\">").append(domain).append("</a> <a href=\"?action=CreateMX&domain=")
.append(domain)
.append("\"><font size=\"-2\" face=\"verdana\" color=\"#666666\">Create MX</font></a>\n");
sb.append("<br>\n");
sb.append("<ul>\n");
for(int i=0;i<objectNames.size();i++){
ObjectName on = (ObjectName)objectNames.get(i);
sb.append("<li><a href=\"?action=ViewMX&objectname=")
.append(on).append("\" >")
.append(on.getKeyPropertyListString())
.append("</a> <a href=\"?action=UnregisterMX&objectname=")
.append(on)
.append("&domain=")
.append(domainFilter)
.append("\"><font size=\"-2\" face=\"verdana\" color=\"#666666\">Unregister MX</font></a>\n");
}
sb.append(" </ul>\n");
}
sb.append(
" <p>\n" +
" </ul>\n" +
" </td>\n" +
" </tr>\n" +
"</table>");
return sb.toString();
}
public static void main(String[] args) {
}
}