public List<Booking> searchDirect(long departureAirportId, Date departureDate, long arrivalAirportId) {
DateFormat dateFormat = new SimpleDateFormat();
List<Booking> searchResults = new ArrayList<Booking>();
Airport departureAirport = airportService.findById(departureAirportId);
double departureLatitude = departureAirport.getLatitude();
double departureLongitude = departureAirport.getLongitude();
LatLng departureLatLong = new LatLng(departureLatitude, departureLongitude);
Airport arrivalAirport = airportService.findById(arrivalAirportId);
double arrivalLatitude = arrivalAirport.getLatitude();
double arrivalLongitude = arrivalAirport.getLongitude();
LatLng arrivalLatLong = new LatLng(arrivalLatitude, arrivalLongitude);
double distanceInKilometers = LatLngTool.distance(departureLatLong, arrivalLatLong, LengthUnit.KILOMETER);
double durationInHours = distanceInKilometers / AVG_SPEED_KM_PER_HOUR;
double priceUSD = distanceInKilometers * PRICE_USD_PER_KM;
Calendar departureCalendar = new GregorianCalendar();
departureCalendar.setTime(departureDate);
departureCalendar.set(Calendar.HOUR_OF_DAY, 6);
Random random = new Random();
while (departureCalendar.get(Calendar.HOUR_OF_DAY) < 18) {
Calendar arrivalCalendar = (Calendar) departureCalendar.clone();
arrivalCalendar.add(Calendar.HOUR_OF_DAY, (int) Math.round(durationInHours));
Booking flight = new Booking();
Date flightDepartureDate = departureCalendar.getTime();
flight.setDepartureDate(flightDepartureDate);
flight.setArrivalId(arrivalAirportId);
Date flightArrivalDate = arrivalCalendar.getTime();
flight.setArrivalDate(flightArrivalDate);
flight.setDistance(distanceInKilometers);
flight.setDuration(durationInHours);
flight.setBookingId(Math.abs(random.nextLong()));
String flightNumber = Integer.toString(Math.abs(random.nextInt()));
flight.setLabel(flightNumber);
StringBuilder description = new StringBuilder();
description.append("Flight#");
description.append(flightNumber);
description.append(StringPool.SPACE);
description.append("departing from");
description.append(StringPool.SPACE);
description.append(departureAirport.getCity());
description.append(StringPool.SPACE);
description.append(StringPool.OPEN_PARENTHESIS);
description.append(departureAirport.getCode());
description.append(StringPool.CLOSE_PARENTHESIS);
description.append(StringPool.SPACE);
description.append("on");
description.append(StringPool.SPACE);
description.append(dateFormat.format(flightDepartureDate));
description.append(StringPool.SPACE);
description.append("arriving at");
description.append(StringPool.SPACE);
description.append(arrivalAirport.getCity());
description.append(StringPool.OPEN_PARENTHESIS);
description.append(arrivalAirport.getCode());
description.append(StringPool.CLOSE_PARENTHESIS);
description.append(StringPool.SPACE);
description.append("on");
description.append(StringPool.SPACE);
description.append(dateFormat.format(flightArrivalDate));