code: public void generateJobTable(JspWriter out, String label, List<JobInProgress> jobs)
        throws IOException {
      if (jobs.size() > 0) {
        for (JobInProgress job : jobs) {
          JobProfile profile = job.getProfile();
          JobStatus status = job.getStatus();
          JobID jobid = profile.getJobID();
  
          int desiredMaps = job.desiredMaps();
          int desiredReduces = job.desiredReduces();
          int completedMaps = job.finishedMaps();
          int completedReduces = job.finishedReduces();
          String name = profile.getJobName();
  
          out.print("<" + label + "_job jobid=\"" + jobid + "\">\n");
          out.print("  <jobid>" + jobid + "</jobid>\n");
          out.print("  <user>" + profile.getUser() + "</user>\n");
          out.print("  <name>" + ("".equals(name) ? "&nbsp;" : name) + "</name>\n");
          out.print("  <map_complete>" + StringUtils.formatPercent(status.mapProgress(), 2) + "</map_complete>\n");
          out.print("  <map_total>" + desiredMaps + "</map_total>\n");
          out.print("  <maps_completed>" + completedMaps + "</maps_completed>\n");
          out.print("  <reduce_complete>" + StringUtils.formatPercent(status.reduceProgress(), 2) + "</reduce_complete>\n");
          out.print("  <reduce_total>" + desiredReduces + "</reduce_total>\n");
          out.print("  <reduces_completed>" + completedReduces + "</reduces_completed>\n");
          out.print("</" + label + "_job>\n");
        }
      }
    }
docs: Returns an XML-formatted table of the jobs in the list.
  This is called repeatedly for different lists of jobs (e.g., running, completed, failed).