DispatcherLocal.java

package progen.roles.standalone;

import java.util.List;

import progen.roles.Dispatcher;
import progen.roles.ProGenFactory;
import progen.roles.Task;
import progen.roles.Worker;
import progen.userprogram.UserProgram;

/**
 * Implementación del rol de Dispatcher para que funcione en la misma máquina
 * virutal que el Client y el Worker. En este caso no hay ningún tipo de
 * comunicación entre los distintos roles, excepto las llamadas a los métodos
 * públicos de cada componente.
 * 
 * @author jirsis
 * @since 2.0
 */
public class DispatcherLocal implements Dispatcher {
  /**
   * Representación del único worker que tiene sentido a la hora de ejecutar en
   * local.
   */
  private Worker worker;
  /** Hilo que se encargará de calcular todas las tareas */
  private CalculateThread thread;

  /**
   * Constructor genérico de la clase.
   */
  public DispatcherLocal() {
    worker = ProGenFactory.makeInstance().makeWorker();
  }

  public void start() {
    // do nothing
  }

  public void addWorker(Worker worker) {
    // do nothing
  }

  public void asignTask(List<Task> tasks, UserProgram userProgram) {
    thread = new CalculateThread(tasks, worker, userProgram);
    thread.run();
    // new Thread(thread).start();
  }

  public List<Task> getResults() {
    return thread.getTasks();
  }

  public void stopTask() {

  }

  public int totalTasksDone() {
    return thread.getCompletedTasks();
  }

}