private JSONArray scrapAccommodationRatings(
      String accommodationIdBooking, String countryCode, Logger logger, DatabaseLogger dbLogger) {
    logger.log("RATINGS --> Accommodation ID: " + accommodationIdBooking);

    // Por seguir el mismo formato (devolver de un JSONArray), utilizamos un Array y un JSONObject
    JSONArray jsonAccommodationRatings = new JSONArray();
    JSONObject jsonRatings = new JSONObject();

    try {
      jsonRatings =
          bookingFacade.getAccommodationRatings(
              accommodationIdBooking, countryCode, logger, dbLogger);
      jsonAccommodationRatings.put(jsonRatings);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    return jsonAccommodationRatings;
  }
  private JSONArray scrapAccommodationReviews(
      String accommodationIdBooking,
      String countryCode,
      Date limitDate,
      Logger logger,
      DatabaseLogger dbLogger) {
    logger.log("REVIEWS --> Accommodation ID: " + accommodationIdBooking);

    JSONArray jsonReviewsArray = new JSONArray();
    JSONObject jsonAccommodationReviews = new JSONObject();

    try {
      jsonAccommodationReviews =
          bookingFacade.getAccommodationReviews(
              accommodationIdBooking, countryCode, limitDate, logger, dbLogger);
      jsonReviewsArray.put(jsonAccommodationReviews);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }

    return jsonReviewsArray;
  }
  private JSONArray scrapRegionHDEPrices(
      int regionId, String accommodationType, String task, Logger logger, DatabaseLogger dbLogger) {
    logger.log("REGION HDE PRICES --> Region ID: " + regionId);

    //		// Por seguir el mismo formato (devolver de un JSONArray), utilizamos un Array y un
    // JSONObject
    //		JSONArray jsonRegionHDEPrices= new JSONArray();
    //		JSONObject jsonHDEPrices = new JSONObject();
    //
    //		jsonHDEPrices = bookingFacade.getRegionHDEPrices(regionId, logger);
    //
    //		jsonRegionHDEPrices.put(jsonHDEPrices);
    //		return jsonRegionHDEPrices;

    int i = 0, ttlAccommodationPrices = 0;
    String checkin = null;
    String checkout = null;
    JSONArray jsonRegonHDEPrices = new JSONArray();
    JSONObject jsonDayHDEPrices = null;

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Calendar calCheckin, calCheckout;

    // 0. Creamos el ThreadManager
    //		threadmanager = new ThreadManager(new
    // Integer(configClass.getProperty(Constants.THREAD_COUNT)));
    threadmanager =
        new ThreadManager(new Integer(customConfig.getProperty(Constants.THREAD_COUNT)));

    // 1. Se obtienen las fechas y duración
    //		String propDates = configClass.getProperty(Constants.SCR_DATES);
    String propDates = customConfig.getProperty(Constants.SCR_DATES);
    String[] arrayDates = propDates.split(",");
    //		int lengthOfStay = new Integer(configClass.getProperty(Constants.SCR_LENGTH_OF_STAY));
    int lengthOfStay = new Integer(customConfig.getProperty(Constants.SCR_LENGTH_OF_STAY));

    logger.log(
        "REGION HDE PRICES --> Region ID: "
            + regionId
            + " || arrayDates: "
            + Arrays.toString(arrayDates)
            + " || lengthOfStay: "
            + lengthOfStay);

    // 2. Se itera por los días
    for (i = 0; i < arrayDates.length || ttlAccommodationPrices < arrayDates.length; i++) {
      if (i < arrayDates.length) {
        // Calcula las fechas de entrada (checkin) y salida (checkout)
        int days = new Integer(arrayDates[i]).intValue();
        calCheckin = Calendar.getInstance();
        calCheckout = Calendar.getInstance();
        calCheckin.add(Calendar.DAY_OF_YEAR, days);
        calCheckout.add(Calendar.DAY_OF_YEAR, days + lengthOfStay);
        checkin = sdf.format(calCheckin.getTime());
        checkout = sdf.format(calCheckout.getTime());
        // Pon el hilo en marcha para que empiece a sacar los precios
        jsonDayHDEPrices =
            threadmanager
                .getThread()
                .scrapPrices(
                    "", regionId, accommodationType, "", checkin, checkout, task, logger, dbLogger);
      } else {
        // Ya hemos mandado peticiones para todas las fechas, así que sólo nos queda recoger las que
        // están pendientes de procesar
        BookingCrawlerThread thread = threadmanager.getThread();
        jsonDayHDEPrices = thread.getLastPrice();
        thread.setDie(
            true); // Ya hemos terminado con este hilo, así que lo matamos para que no volvamos a
                   // coger el mismo valor
      }

      if (jsonDayHDEPrices != null) {
        // Mete los precios obtenidos en el array JSON para devolvérselo al cliente
        jsonRegonHDEPrices.put(jsonDayHDEPrices);
        ttlAccommodationPrices++;
      }

      checkin = null;
      checkout = null;
      jsonDayHDEPrices = null;
    }

    threadmanager.killThreads(); // Matamos todos los hilos, por si quedase alguno vivo
    logger.log("Total accommodation prices: " + ttlAccommodationPrices);
    return jsonRegonHDEPrices;
  }