Beispiel #1
0
  public TaskStatus taskStatus(Number160 taskId) {
    TaskStatus statusResult = new TaskStatus();
    String exception;
    synchronized (lock) {
      exception = exceptions.get(taskId);
    }
    if (exception != null) {
      statusResult.setFaildeReason(exception);
      statusResult.setStatus(TaskStatus.Status.FAILED);
      if (logger.isDebugEnabled()) {
        logger.debug("finished task failed for task with ID " + taskId);
      }
      return statusResult;
    }

    int pos = 0;
    Task taskFound = null;
    for (Runnable runnable : executor.getQueue()) {
      Task task = (Task) runnable;
      if (task.taskId.equals(taskId)) {
        taskFound = task;
        break;
      }
      pos++;
    }
    if (taskFound != null) {
      statusResult.setQueuePosition(pos);
      statusResult.setStatus(TaskStatus.Status.QUEUE);
      if (logger.isDebugEnabled()) {
        logger.debug("finished task queue for task with ID " + taskId);
      }
      return statusResult;
    }
    synchronized (lock) {
      statusResult.setStatus(status.get(taskId));
    }
    if (logger.isDebugEnabled()) {
      logger.debug("finished task status for task with ID " + taskId);
    }
    return statusResult;
  }