package com.ajah.geo;
/**
* Represents a city/town/village/etc.
*
* @author Eric F. Savage <code@efsavage.com>
*
*/
public interface City {
/**
* The internal ID of the city.
*
* @return The internal ID. Should never be null or empty.
*/
String getId();
/**
* The common name of the city.
*
* Example: The name of Boston, Massachusetts, USA would be "Boston", not
* the official "The City of Boston".
*
* @return The common name of the city. Should never be null or empty.
*/
String getName();
/**
* The state of which this city is a part, if applicable. Since not all
* countries have states, this may be null.
*
* Example: The city of Boston, Massachusetts, USA would be USState.MA
*
* @return The State object for this city's state. May be null or empty.
*/
State getState();
/**
* The country of which this state is a part. If in a country that has
* states, it should pass through to getState().getCountry() for
* consistency.
*
* Example: The country of Boston, Massachusetts, USA would be
* ISOCountry.USA
*
* @return The Country object for this city's nation. Should never be null
* or empty.
*/
Country getCountry();
}