private void fillCities(List<City> cities, AbstractDao dao) throws DaoException {
        if (cities != null) {
            for (City city : cities) {
                Criteria descCrit = new Criteria();
                descCrit.addParam(DAO_ID_DESCRIPTION, city.getDescription().getIdDescription());
                List<Description> desc = dao.findDescriptions(descCrit);
                if (!desc.isEmpty()) {
                    city.setDescription(desc.get(0));
                }

                Criteria countryCrit = new Criteria();
                countryCrit.addParam(DAO_ID_COUNTRY, city.getCountry().getIdCountry());
                List<Country> countries = dao.findCountries(countryCrit);
                if (!countries.isEmpty()) {
                    city.setCountry(countries.get(0));
                }

                Criteria hotelCrit = new Criteria();
                hotelCrit.addParam(DAO_ID_CITY, city.getIdCity());
                List<Hotel> hotels = dao.findHotels(hotelCrit);
                Hotel.NameComparator comparator = new Hotel.NameComparator();
                Collections.sort(hotels, comparator);
                city.setHotelCollection(hotels);
            }
        }
    }