Ejemplo n.º 1
0
  protected static Airport getAirport(String string, Airline airline, String country)
      throws ParseException {
    List<Airport> airports = getAirports(string);

    if (airports.size() == 0) {
      airports = getAirportsLevenshtein(string);
    }

    if (airports.size() == 0) {
      throw new ParseException("Could not find airport: " + string, 0);
    } else if (airports.size() == 1) {
      return airports.get(0);
    } else {
      if (country != null && !country.isEmpty()) {
        List<Airport> airports2 =
            Ebean.filter(Airport.class).istartsWith("country", country).filter(airports);
        if (airports2.size() > 0) {
          airports = airports2;
        }
      }

      if (airports.size() > 1) {
        // if more than one, look for one that aa actually flies to!
        for (Airport airport : airports) {
          List<Route> routes =
              Ebean.find(Route.class)
                  .where()
                  .eq("airline", airline)
                  .eq("source", airport)
                  .findList();
          if (routes.size() > 0) return airport;
        }
      }
      return airports.get(0);
    }
  }