package uk.ac.ox.zoo.seeg.abraid.mp.common.dao;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.Country;
import java.util.List;
/**
* Interface for the Country entity's Data Access Object.
*
* Copyright (c) 2014 University of Oxford
*/
public interface CountryDao {
/**
* Gets all countries.
* @return A list of all countries.
*/
List<Country> getAll();
/**
* Gets the names of all countries to be shown in the HealthMap country report (sorted).
* @return The country names.
*/
List<String> getCountryNamesForHealthMapReport();
/**
* Gets a country by name.
* @param name The name.
* @return The country, or null if not found.
* @throws org.springframework.dao.DataAccessException if multiple countries with this name are found (should not
* occur as names are unique)
*/
Country getByName(String name);
/**
* Gets an country unit GAUL code.
* @param gaulCode The GAUL code.
* @return The country with the specified GAUL code, or null if it does not exist.
*/
Country getByGaulCode(Integer gaulCode);
/**
* Gets the list of African countries that should be considered when calculating
* the minimum data spread required for a model run.
* @return The list of GAUL codes for the African countries used in minimum data spread calculation.
*/
List<Integer> getCountriesForMinDataSpreadCalculation();
}