diff --git a/res/userdb.db b/res/userdb.db index dd0d554..e7dff5b 100644 Binary files a/res/userdb.db and b/res/userdb.db differ diff --git a/src/main/java/seng202/group9/GUI/FlightEditorController.java b/src/main/java/seng202/group9/GUI/FlightEditorController.java index 78f0b77..6282cd5 100644 --- a/src/main/java/seng202/group9/GUI/FlightEditorController.java +++ b/src/main/java/seng202/group9/GUI/FlightEditorController.java @@ -69,7 +69,6 @@ public class FlightEditorController extends Controller{ stage.close(); } catch ( Exception e ) { - e.printStackTrace(); Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Flight Data Error"); alert.setHeaderText("Error editing a flight point."); diff --git a/src/main/java/seng202/group9/GUI/FlightSummaryController.java b/src/main/java/seng202/group9/GUI/FlightSummaryController.java index c15cf63..4be3376 100644 --- a/src/main/java/seng202/group9/GUI/FlightSummaryController.java +++ b/src/main/java/seng202/group9/GUI/FlightSummaryController.java @@ -13,8 +13,10 @@ import javafx.scene.control.ListView; import javafx.scene.input.MouseEvent; import javafx.scene.web.WebView; import seng202.group9.Controller.App; +import seng202.group9.Controller.DataException; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.SceneCode; +import seng202.group9.Core.Airport; import seng202.group9.Core.FlightPath; import seng202.group9.Core.RoutePath; import seng202.group9.Map.Map; @@ -22,6 +24,7 @@ import seng202.group9.Core.FlightPoint; import java.net.URL; import java.util.ArrayList; +import java.util.LinkedHashMap; import java.util.ResourceBundle; /** @@ -31,9 +34,8 @@ import java.util.ResourceBundle; public class FlightSummaryController extends Controller { private Dataset theDataSet = null; - private int currentPathId = 0; - private int currentPathIndex = 0; + private int currentPathIndex = 0; @FXML private Button flightRawData; @@ -43,6 +45,9 @@ public class FlightSummaryController extends Controller { @FXML ListView flightPathListView; final ObservableList flightList = FXCollections.observableArrayList(); + @FXML + ListView flightSummaryListView; + final ObservableList infoList = FXCollections.observableArrayList(); /** * Changes to the Flight Raw Data Scene when the Raw Data Button is clicked. @@ -54,7 +59,9 @@ public class FlightSummaryController extends Controller { /** * Changes to the Airport Summary Scene when the Airport is clicked. */ - public void airportSummaryButton() { replaceSceneContent(SceneCode.AIRPORT_SUMMARY); } + public void airportSummaryButton() { + replaceSceneContent(SceneCode.AIRPORT_SUMMARY); + } /** * Changes to the Route Summary Scene when the Route Button is clicked. @@ -70,6 +77,73 @@ public class FlightSummaryController extends Controller { replaceSceneContent(SceneCode.AIRLINE_SUMMARY); } + /** + * Loads the current flight paths summary information into the ListView panel. The summary data includes the distance + * and the name of the source and destination airports pulled from the Airport array list. + */ + public void flightSummaryListView() { + try { + currentPathId = theDataSet.getFlightPaths().get(0).getID(); //Sets the default to the 1st Path + + FlightPath currentPath = theDataSet.getFlightPathDictionary().get(currentPathId); + ArrayList flightPoints = currentPath.getFlightPoints(); + FlightPoint firstPoint = flightPoints.get(0); + String firstPointICAO = firstPoint.getName(); + FlightPoint lastPoint = flightPoints.get(flightPoints.size()-1); + String lastPointICAO = lastPoint.getName(); + + ArrayList airportList = theDataSet.getAirports(); + Airport sourceAirport = null; + Airport destinationAirport = null; + + System.out.println(firstPointICAO); + System.out.println(lastPointICAO); + + for (int i=0; i < airportList.size(); i++){ + Airport current = airportList.get(i); + System.out.println(current.getICAO()); + if(current.getICAO().equals(firstPointICAO)){ + sourceAirport = current; + } + if(current.getICAO().equals(lastPointICAO)){ + destinationAirport = current; + } + } + + String source = "Not Available"; + String destination = "Not Available"; + double distance = 0.0; + if(sourceAirport != null){ + source = sourceAirport.getName(); + } + if(destinationAirport != null){ + destination = destinationAirport.getName(); + } + if(destination != "Not Available" && source != "Not Available"){ + distance = sourceAirport.calculateDistance(destinationAirport); + } + + infoList.add(" Flight Path Summary Information"); + infoList.add(""); + infoList.add("Total Distance of Flight:"); + infoList.add(Double.toString(distance)); + infoList.add("Source Airport:"); + infoList.add(source); + infoList.add("Destination Airport:"); + infoList.add(destination); + if(sourceAirport == null || destinationAirport == null){ + infoList.add(""); + infoList.add("Missing Data is due to first or last points"); + infoList.add("ICAO codes not being present in the Airline"); + infoList.add("Database!"); + } + + flightSummaryListView.setItems(infoList); + } catch(Exception e) { + e.printStackTrace(); + } + } + /** * Loads the Flight paths into the List View and waits for a mouse clicked event for which it will update the table * to display the selected Flight paths points. Called from the MenuController. @@ -85,6 +159,17 @@ public class FlightSummaryController extends Controller { String flightPathDisplayName = Integer.toString(pathID) + "_" + pathSource + "_" + pathDestin; flightList.add(flightPathDisplayName); } + flightPathListView.setOnMouseClicked(new EventHandler() { + public void handle(MouseEvent event) { + String flightPathDisplayNameClicked = flightPathListView.getSelectionModel().getSelectedItem(); + String[] segments = flightPathDisplayNameClicked.split("_"); + String pathIdClicked = segments[0]; + + currentPathIndex = theDataSet.getFlightPaths().indexOf(theDataSet.getFlightPathDictionary() + .get(Integer.parseInt(pathIdClicked))); + currentPathId = Integer.parseInt(pathIdClicked); + } + }); flightPathListView.setItems(flightList); } catch (Exception e) { e.printStackTrace(); @@ -96,7 +181,7 @@ public class FlightSummaryController extends Controller { public void load() { try { theDataSet = getParent().getCurrentDataset(); - ArrayList flightPaths = new ArrayList(); + ArrayList flightPaths; flightPaths = theDataSet.getFlightPaths(); for(int i = 0; i - + @@ -85,28 +85,28 @@ - - + + - + - - - -