예제 #1
0
파일: Manager.java 프로젝트: JCortz/SD
  /*
   * Termina a realização da Tarefa.
   * Retorna true se foi terminada com sucesso false caso contrário
   */
  public boolean endTask(String id) throws InterruptedException {
    Map<String, Integer> objectsToSupply;
    String type;
    lock.lock();
    try {
      if (!this.tasksRunning.containsKey(Integer.valueOf(id))) {
        return false;
      } else {
        type = this.tasksRunning.get(Integer.valueOf(id));
        objectsToSupply = this.tasks.get(type).getObjects();
      }
    } finally {
      lock.unlock();
    }

    // Supply de todos os objetos
    for (Map.Entry<String, Integer> entry : objectsToSupply.entrySet()) {
      warehouse.supply(entry.getKey(), entry.getValue());
    }

    lock.lock();
    try {
      this.tasksRunning.remove(Integer.valueOf(id));
      this.tasks.get(type).signalP();
    } finally {
      lock.unlock();
    }

    return true;
  }
예제 #2
0
파일: Manager.java 프로젝트: JCortz/SD
 /* Abastece o armazém com o produto - name, e a quantidade - qtd */
 public boolean supply(String name, String qtd) throws InterruptedException {
   if (name.equals("") || qtd.equals("")) return false;
   try {
     warehouse.supply(name, Integer.parseInt(qtd));
     return true;
   } catch (InterruptedException ie) {
     return false;
   }
 }