Example #1
0
  /** Returns a StringRepresentation with the status of the running threads in the thread pool. */
  private void handleProgress(Request req, Response resp, ArrayList<GWCTaskStatus> taskList)
      throws RestletException {

    Object[] tasks = taskList.toArray();

    StringBuilder strBld = new StringBuilder();
    strBld.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
    strBld.append("<Tasks>");

    XStream xs = new XStream();
    xs.omitField(GWCTask.class, "parsedType");
    xs.omitField(GWCTask.class, "state");
    xs.omitField(GWCTask.class, "sharedThreadCount");
    xs.omitField(GWCTask.class, "groupStartTime");
    xs.omitField(GWCTask.class, "storageBroker");

    xs.alias("GWCTaskStatus", GWCTaskStatus.class);

    for (int i = 0; i < tasks.length; i++) {
      GWCTaskStatus taskStatus = (GWCTaskStatus) tasks[i];
      Iterator<Entry<Long, GWCTask>> iter = seeder.getRunningTasksIterator();

      while (iter.hasNext()) {
        Entry<Long, GWCTask> entry = iter.next();
        GWCTask task = entry.getValue();
        if (task.getDbId() == taskStatus.getDbId()) {
          taskStatus.setTaskId(task.getTaskId());
          taskStatus.setThreadRunning(true);
          taskStatus.setTilesDone(task.getTilesDone());
          taskStatus.setTilesTotal(task.getTilesTotal());
          taskStatus.setTimeSpent(task.getTimeSpent());
          taskStatus.setTimeRemaing(task.getTimeRemaining());
        }
      }
      String task_xml = xs.toXML(taskStatus);
      strBld.append(task_xml);
    }

    strBld.append("</Tasks>");
    resp.setEntity(strBld.toString(), MediaType.TEXT_XML);
  }