diff --git a/src/main/java/seng202/group9/GUI/AirportGraphController.java b/src/main/java/seng202/group9/GUI/AirportGraphController.java index 01dbf2e..9af326b 100644 --- a/src/main/java/seng202/group9/GUI/AirportGraphController.java +++ b/src/main/java/seng202/group9/GUI/AirportGraphController.java @@ -12,6 +12,7 @@ import seng202.group9.Controller.SceneCode; import seng202.group9.Controller.Session; import seng202.group9.Core.Airline; import seng202.group9.Core.Airport; +import seng202.group9.Core.Route; import java.util.ArrayList; import java.util.Arrays; @@ -71,6 +72,7 @@ public class AirportGraphController extends Controller{ loadCountryGraph(); loadDestGraph(); loadTransGraph(); + loadAirlineGraph(); } public void loadCountryGraph(){ @@ -169,6 +171,56 @@ public class AirportGraphController extends Controller{ transGraph.getData().add(series); } + public void loadAirlineGraph(){ + airlineGraph.setTitle("Top 10 Airlines Flown to Airports"); + airlineXAxis.setLabel("Airline"); + XYChart.Series series = new XYChart.Series<>(); + series.setName("Number of Time Flown"); + + HashMap airlines = new HashMap<>(); + for (Airport airport: airportsFiltered){ + for (Route route: airport.getArrivalRoutes()){ + if (route.getAirline() != null) { + if (airlines.containsKey(route.getAirline().getName())) { + airlines.put(route.getAirline().getName(), airlines.get(route.getAirline().getName()) + 1); + } else { + + airlines.put(route.getAirline().getName(), 1); + } + } + } + for (Route route: airport.getDepartureRoutes()){ + if (route.getAirline() != null) { + if (airlines.containsKey(route.getAirline().getName())) { + airlines.put(route.getAirline().getName(), airlines.get(route.getAirline().getName()) + 1); + } else { + + airlines.put(route.getAirline().getName(), 1); + } + } + } + } + + int length = 10; + if (airlines.size() < 10){ + length = airlines.size(); + } + for (int i = 0 ; i < length; i ++) { + int max = 0; + String maxAirline = ""; + for (String airline: airlines.keySet()){ + if (airlines.get(airline) > max){ + max = airlines.get(airline); + maxAirline = airline; + } + } + series.getData().add(new XYChart.Data(maxAirline, max)); + airlines.remove(maxAirline); + } + + airlineGraph.getData().add(series); + } + public void goToRawData(){ replaceSceneContent(SceneCode.AIRPORT_RAW_DATA); }