// ----------------------------------------------------------------------------------------------------
  protected synchronized void taskDone(ParserTask task) {

    // Solo hace algo si la tarea finalizada era del trabajo en curso y no una antigua
    if (task.jobID.equals(getCurrentJobID())) {

      // Crea el status
      ParserWorkerStatus pws = new ParserWorkerStatus();
      pws.hotelDataList = task.hotelDataList;

      // Decrementa el numero de tareas en ejecucion
      m_numTasksForJob--;

      // Actua dependiendo de lo que quede
      if (m_numTasksForJob > 0) {

        // **** AVISAR DE QUE SE HA TERMINADO CON UNA DE LAS PAGINAS
        pws.type = PWStatusType.PageEnded;
        m_monitor.processingEnded(false, pws);

      } else if (m_numTasksForJob == 0) {

        // **** AVISAR DE QUE SE HA TERMINADO CON TODAS LAS PAGINAS
        Tracer._info("***** All parsing tasks have ended *********************************");
        pws.type = PWStatusType.AllPagesEnded;
        m_monitor.processingEnded(false, pws);

      } else {
        // No debería salir una cuenta negativa
        String MSG = "Task count for job decremented below zero";
        Tracer._error(MSG);
        m_monitor.processingEnded(true, MSG);
      }
    }
  }
  // ----------------------------------------------------------------------------------------------------
  protected synchronized void nextPageUrl(String nextPageUrl) {

    // Incrementa el numero de tareas que tiene este trabajo
    m_numTasksForJob++;

    // *** AVISA PARA QUE SE PARSEE LA SIGUIENTE PAGINA DEL TRABAJO
    ParserWorkerStatus pws = new ParserWorkerStatus();
    pws.type = PWStatusType.ParseNextPage;
    pws.nextPageUrl = nextPageUrl;
    m_monitor.processingEnded(false, pws);
  }