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; }