private void fillCountries(List<Country> countries, AbstractDao dao, Criteria criteria) throws DaoException {
        if (countries != null) {
            Short cityStatus = (Short) criteria.getParam(DAO_CITY_STATUS);
            for (Country country : countries) {
                Criteria descCrit = new Criteria();
                descCrit.addParam(DAO_ID_DESCRIPTION, country.getDescription().getIdDescription());
                List<Description> desc = dao.findDescriptions(descCrit);
                if (!desc.isEmpty()) {
                    country.setDescription(desc.get(0));
                }

                Criteria cityCrit = new Criteria();
                cityCrit.addParam(DAO_ID_COUNTRY, country.getIdCountry());
                cityCrit.addParam(DAO_CITY_STATUS, cityStatus);
                List<City> cities = dao.findCities(cityCrit);
                City.NameComparator comparator = new City.NameComparator();
                Collections.sort(cities, comparator);
                country.setCityCollection(cities);
            }
        }
    }