Skip to content

Commit a876ce7

Browse files
committed
added top cities in world and city population by district, will add test files before friday
1 parent c96ee3f commit a876ce7

2 files changed

Lines changed: 56 additions & 3 deletions

File tree

src/main/java/com/napier/sem/App.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,17 @@ public static void main(String[] args)
114114
ArrayList<City> cityInDistrict = cityReport.printCitiesByDistrict("Oran");
115115
cityReport.printCities(cityInDistrict);
116116

117+
// --- Top N Most Populated Cities Globally ---
118+
System.out.println("\n=== Top 10 Most Populated Cities in the World ===");
119+
ArrayList<City> topWorldCities = cityReport.getTopNCitiesInWorld(10);
120+
cityReport.printCities(topWorldCities);
121+
122+
// --- Top N Most Populated Cities in a District ---
123+
System.out.println("\n=== Top 5 Most Populated Cities in a District ===");
124+
ArrayList<City> CityPopulationDistrict = cityReport.CityPopulationDistrict("California", 5);
125+
cityReport.printCities(CityPopulationDistrict);
126+
127+
117128

118129

119130
// Disconnect from database

src/main/java/com/napier/sem/CityReport.java

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ public ArrayList<City> printCitiesByContinent(String continent) {
6262
*/
6363
public ArrayList<City> printCitiesByRegion(String region) {
6464
String sql = """
65-
SELECT city.Name AS CityName, country.Name AS Country,city.District AS District, city.Population AS Population
66-
FROM city JOIN country ON city.CountryCode = country.Code
65+
SELECT city.Name AS CityName, country.Name AS Country,city.District AS District, city.Population AS Population
66+
FROM city JOIN country ON city.CountryCode = country.Code
6767
WHERE country.Region = ?
6868
ORDER BY city.Population DESC
6969
""";
@@ -78,14 +78,56 @@ public ArrayList<City> printCitiesByRegion(String region) {
7878
*/
7979
public ArrayList<City> printCitiesByDistrict(String district) {
8080
String sql = """
81-
SELECT city.Name AS CityName, country.Name AS Country,city.District AS District, city.Population AS Population
81+
SELECT city.Name AS CityName, country.Name AS Country,city.District AS District, city.Population AS Population
8282
FROM city JOIN country ON city.CountryCode = country.Code
8383
WHERE city.District = ?
8484
ORDER BY city.Population DESC
8585
""";
8686
return executeCapitalCityQuery(sql,district);
8787
}
8888

89+
/**
90+
* Gets most populated cities in a district
91+
* @param district the name of the district
92+
* @return a list of the most populated cities in that district
93+
*/
94+
95+
public ArrayList<City> CityPopulationDistrict(String district, int limit) {
96+
String sql = """
97+
SELECT city.Name AS CityName,
98+
country.Name AS Country,
99+
city.District AS District,
100+
city.Population AS Population
101+
FROM city
102+
JOIN country ON city.CountryCode = country.Code
103+
WHERE city.District = ?
104+
ORDER BY city.Population DESC
105+
LIMIT ?
106+
""";
107+
108+
return executeCapitalCityQuery(sql, district, String.valueOf(limit));
109+
}
110+
111+
/**
112+
* Retrieves the top N most populated cities in the world.
113+
*
114+
* @param limit the number of cities to return (top N).
115+
* @return A list of the top N cities globally.
116+
*/
117+
public ArrayList<City> getTopNCitiesInWorld(int limit) {
118+
String sql = """
119+
SELECT city.Name AS CityName,
120+
country.Name AS Country,
121+
city.District AS District,
122+
city.Population AS Population
123+
FROM city
124+
JOIN country ON city.CountryCode = country.Code
125+
ORDER BY city.Population DESC
126+
LIMIT ?
127+
""";
128+
129+
return executeCapitalCityQuery(sql, String.valueOf(limit));
130+
}
89131

90132
/**
91133
* Executes SQL queries and maps results to City objects.

0 commit comments

Comments
 (0)