package org.kisst.gft.admin;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.kisst.gft.GftContainer;
import org.kisst.gft.GftWrapper;
import org.kisst.gft.poller.Poller;
import org.kisst.gft.poller.PollerJob;
import org.kisst.props4j.MultiProps;
import org.kisst.props4j.Props;
import org.kisst.props4j.SimpleProps;
public class PollerServlet extends BaseServlet {
public PollerServlet(GftWrapper wrapper) { super(wrapper); }
public void handle(HttpServletRequest request, HttpServletResponse response)
throws IOException {
if (getUser(request, response) == null)
return;
response.setContentType("text/html;charset=utf-8");
//response.setStatus(HttpServletResponse.SC_OK);
String url = request.getRequestURI();
String name = url.substring("/poller/".length());
int pos=name.indexOf('/');
PrintWriter out = response.getWriter();
if (pos>0) {
String polljob = name.substring(pos + 1);
name=name.substring(0,pos);
handlePollerJob(out, wrapper.getCurrentGft().pollers.get(name),polljob);
}
else
handlePoller(out, wrapper.getCurrentGft().pollers.get(name));
}
public void handlePoller(PrintWriter out, Poller poller) throws IOException {
out.println("<h1>Poller "+poller.getName()+"</h1>");
out.println("Host: "+poller.getFileServer().getName()+"<br>");
out.println("Interval: "+poller.getInterval()+"<br>");
out.println("Paused: "+poller.isPaused()+"<br>");
out.println("Running: "+poller.isRunning()+"<br>");
out.println("<table>");
out.println("<tr>");
out.println("<td>name</td>");
out.println("<td>problems</td>");
out.println("<td>runs</td>");
out.println("<td>Successes</td>");
out.println("<td>Errors</td>");
out.println("<td>TotalCount</td>");
out.println("<td>Directory</td>");
out.println("<td>Move To Directory</td>");
out.println("</tr>");
for (PollerJob job : poller.getJobs()) {
out.println("<tr>");
out.println("<td><a href=\"/poller/"+poller.getName()+"/"+job.getShortName()+"\">"+job.getShortName()+"</a></td>");
out.println("<td>"+job.getNumberOfConsecutiveProblems()+"</td>");
out.println("<td>"+job.getRuns()+"</td>");
out.println("<td>"+job.getSuccesses()+"</td>");
out.println("<td>"+job.getErrors()+"</td>");
out.println("<td>"+job.getTotalCount()+"</td>");
out.println("<td><a href=\"/dir/"+job.getFileServer().getName()+job.getDir()+"\">"+job.getDir()+"</a></td>");
out.println("<td><a href=\"/dir/"+job.getFileServer().getName()+job.getMoveToDir()+"\">"+job.getMoveToDir()+"</a></td>");
out.println("</tr>");
}
out.println("<h2>Directories</h2>");
out.println("<ul>");
out.println("</ul>");
out.println("</table>");
out.println("<h2>Config</h2>");
out.println("<pre>");
Props props = poller.getProps();
if (props instanceof SimpleProps)
out.println(((SimpleProps)props).toIndentedString(""));
else if (props instanceof MultiProps)
out.println(((MultiProps)props).toIndentedString(""));
else
out.println(""+props);
out.println("</pre>");
}
private void handlePollerJob(PrintWriter out, Poller poller, String polljob) {
PollerJob job = findJob(poller, polljob);
if (job==null) {
out.println("<h1>No job with name "+polljob+" in poller "+poller.getName()+"</h1>");
return;
}
out.println("<h1>PollerJob "+poller.getName()+"/"+job.getShortName()+"</h1>");
out.println("<h2>Poller: <a href=\"/poller/"+poller.getName()+"\">"+poller.getName()+"</a></h2>");
out.println("<ul>");
out.println("<li>Host: "+poller.getFileServer().getName()+"</li>");
out.println("<li>Interval: "+poller.getInterval()+"</li>");
out.println("<li>Paused: "+poller.isPaused()+"</li>");
out.println("<li>Running: "+poller.isRunning()+"</li>");
out.println("</ul>");
out.println("<h2>Job Details</h2>");
out.println("<ul>");
out.println("<li>Src: <a href=\"/dir/"+job.getFileServer().getName()+job.getDir()+"\">"+job.getDir()+"</a></li>");
out.println("<li>Dest: <a href=\"/dir/"+job.getFileServer().getName()+job.getMoveToDir()+"\">"+job.getMoveToDir()+"</a></li>");
out.println("<li>Name: "+job.getShortName()+"</li>");
out.println("<li>Problems: "+job.getNumberOfConsecutiveProblems()+"</li>");
out.println("<li>Runs: "+job.getRuns()+"</li>");
out.println("<li>Sucesses: "+job.getSuccesses()+"</li>");
out.println("<li>Errors: "+job.getErrors()+"</li>");
out.println("<li>Total: "+job.getTotalCount()+"</li>");
out.println("</ul>");
job.writeHtml(out);
out.println("<h2>Config</h2>");
out.println("<pre>");
Props props = job.getProps();
if (props instanceof SimpleProps)
out.println(((SimpleProps)props).toIndentedString(""));
else if (props instanceof MultiProps)
out.println(((MultiProps)props).toIndentedString(""));
else
out.println(""+props);
out.println("</pre>"); }
private PollerJob findJob(Poller poller, String polljob) {
for (PollerJob job : poller.getJobs()){
if (polljob.equals(job.getShortName()))
return job;
}
return null;
}
}