diff --git a/res/userdb.db b/res/userdb.db index b90d491..fbc2718 100644 Binary files a/res/userdb.db and b/res/userdb.db differ diff --git a/src/main/java/seng202/group9/Controller/Dataset.java b/src/main/java/seng202/group9/Controller/Dataset.java index c378c41..d8520e8 100644 --- a/src/main/java/seng202/group9/Controller/Dataset.java +++ b/src/main/java/seng202/group9/Controller/Dataset.java @@ -1809,13 +1809,14 @@ public class Dataset { Airport newAirport = parser.parseAirport(name, city, country, IATA_FFA, ICAO, lat, lng, alt, timezone, DST, olson); airport.setName(name); airport.setCityName(city); - airport.getCity().setName(city); + //airport.getCity().setName(city); airport.setCountryName(country); - airport.getCountry().setName(country); + //airport.getCountry().setName(country); airport.setIATA_FFA(IATA_FFA); airport.setICAO(ICAO); airport.setLatitude(newAirport.getLatitude()); airport.setLongitude(newAirport.getLongitude()); + airport.setAltitude(newAirport.getAltitude()); airport.getCity().setTimezone(Double.parseDouble(timezone)); airport.getCountry().setDST(DST); airport.getCity().setTimeOlson(olson); diff --git a/src/main/java/seng202/group9/Controller/SceneCode.java b/src/main/java/seng202/group9/Controller/SceneCode.java index 53fc4b6..0489cef 100644 --- a/src/main/java/seng202/group9/Controller/SceneCode.java +++ b/src/main/java/seng202/group9/Controller/SceneCode.java @@ -11,7 +11,8 @@ public enum SceneCode { FLIGHT_RAW_DATA("flight_raw_data.fxml"), AIRPORT_ANALYSER("airport_analyser.fxml"), ROUTE_ANALYSER("route_analyser.fxml"), AIRPORT_DIST_CALC("airport_dist_calc.fxml"), AIRLINE_ADD("airline_add_form.fxml"), AIRLINE_FILTER("airline_filter_form.fxml"), AIRPORT_ADD("airport_add_form.fxml"), AIRPORT_FILTER("airport_filter_form.fxml"), ROUTE_ADD("route_add_form.fxml"), - ROUTE_FILTER("route_filter_form.fxml"), AIRLINE_EDIT("airline_edit_form.fxml"); + ROUTE_FILTER("route_filter_form.fxml"), AIRLINE_EDIT("airline_edit_form.fxml"), AIRPORT_EDIT("airport_edit_form.fxml"), + ROUTE_EDIT("route_edit_form.fxml"); private String filePath; diff --git a/src/main/java/seng202/group9/Controller/Session.java b/src/main/java/seng202/group9/Controller/Session.java index 05c71f6..5b6502a 100644 --- a/src/main/java/seng202/group9/Controller/Session.java +++ b/src/main/java/seng202/group9/Controller/Session.java @@ -18,6 +18,8 @@ public class Session implements Serializable { private HashMap filteredRoutes; private String airlineToEdit; + private String airportToEdit; + private String routeToEdit; /** @@ -83,4 +85,20 @@ public class Session implements Serializable { public String getAirlineToEdit() { return airlineToEdit; } + + public String getAirportToEdit() { + return airportToEdit; + } + + public void setAirportToEdit(String airport) { + this.airportToEdit = airport; + } + + public String getRouteToEdit() { + return routeToEdit; + } + + public void setRouteToEdit(String route) { + this.routeToEdit = route; + } } diff --git a/src/main/java/seng202/group9/GUI/AirlineEditController.java b/src/main/java/seng202/group9/GUI/AirlineEditController.java index 508b86f..8737858 100644 --- a/src/main/java/seng202/group9/GUI/AirlineEditController.java +++ b/src/main/java/seng202/group9/GUI/AirlineEditController.java @@ -7,6 +7,7 @@ import javafx.scene.control.TextField; import javafx.stage.Stage; import seng202.group9.Controller.DataException; import seng202.group9.Controller.Dataset; +import seng202.group9.Controller.EntryParser; import seng202.group9.Controller.Session; import seng202.group9.Core.Airline; @@ -42,6 +43,9 @@ public class AirlineEditController extends Controller { public void editAirline() { try { + EntryParser parser = new EntryParser(); + parser.parseAirline(airlNameEdit.getText(), airlAliasEdit.getText(), airlIATAEdit.getText(), + airlICAOEdit.getText(), airlCallsignEdit.getText(), airlCountryEdit.getText(), airlActiveEdit.getText()); theDataSet.editAirline(toEdit, airlNameEdit.getText(), airlAliasEdit.getText(), airlIATAEdit.getText(), airlICAOEdit.getText(), airlCallsignEdit.getText(), airlCountryEdit.getText(), airlActiveEdit.getText()); @@ -54,9 +58,8 @@ public class AirlineEditController extends Controller { Stage stage = (Stage) applyButton.getScene().getWindow(); stage.close(); } catch (DataException e) { - System.err.println("Harambe: " + e.getMessage()); + System.err.println("RIP Harambe: " + e.getMessage() + "IT WAS TOO SOON"); } - } public void load() { diff --git a/src/main/java/seng202/group9/GUI/AirportAddController.java b/src/main/java/seng202/group9/GUI/AirportAddController.java index 30f29bf..cf0514b 100644 --- a/src/main/java/seng202/group9/GUI/AirportAddController.java +++ b/src/main/java/seng202/group9/GUI/AirportAddController.java @@ -3,6 +3,7 @@ package seng202.group9.GUI; import javafx.collections.FXCollections; import javafx.fxml.FXML; import javafx.scene.control.Alert; +import javafx.scene.control.Button; import javafx.scene.control.ComboBox; import javafx.scene.control.TextField; import javafx.stage.Stage; @@ -37,7 +38,7 @@ public class AirportAddController extends Controller { @FXML private TextField airpTzAdd; @FXML - private TextField addButton; + private Button addButton; //Set an empty Dataset to be assigned later private Dataset theDataSet = null; diff --git a/src/main/java/seng202/group9/GUI/AirportEditController.java b/src/main/java/seng202/group9/GUI/AirportEditController.java new file mode 100644 index 0000000..98a02ff --- /dev/null +++ b/src/main/java/seng202/group9/GUI/AirportEditController.java @@ -0,0 +1,92 @@ +package seng202.group9.GUI; + +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.stage.Stage; +import seng202.group9.Controller.DataException; +import seng202.group9.Controller.Dataset; +import seng202.group9.Controller.EntryParser; +import seng202.group9.Controller.Session; +import seng202.group9.Core.Airport; + +/** + * Created by Sunguin on 2016/09/24. + */ +public class AirportEditController extends Controller { + //Setting up text fields for adding data + @FXML + private TextField airpNameEdit; + @FXML + private TextField airpCityEdit; + @FXML + private TextField airpCountryEdit; + @FXML + private TextField airpIATAFAAEdit; + @FXML + private TextField airpICAOEdit; + @FXML + private TextField airpLatitudeEdit; + @FXML + private TextField airpLongitudeEdit; + @FXML + private TextField airpAltitudeEdit; + @FXML + private TextField airpTimezoneEdit; + @FXML + private TextField airpDSTEdit; + @FXML + private TextField airpTzEdit; + @FXML + private Button editButton; + + //Set an empty Dataset to be assigned later + private Dataset theDataSet = null; + + private Session currentSession = null; + + private Airport toEdit = null; + + public void editAirport() { + try { + EntryParser parser = new EntryParser(); + parser.parseAirport(airpNameEdit.getText(), airpCityEdit.getText(), airpCountryEdit.getText(), airpIATAFAAEdit.getText(), + airpICAOEdit.getText(), airpLatitudeEdit.getText(), airpLongitudeEdit.getText(), airpAltitudeEdit.getText(), + airpTimezoneEdit.getText(), airpDSTEdit.getText(), airpTzEdit.getText()); + theDataSet.editAirport(toEdit, airpNameEdit.getText(), airpCityEdit.getText(), airpCountryEdit.getText(), airpIATAFAAEdit.getText(), + airpICAOEdit.getText(), airpLatitudeEdit.getText(), airpLongitudeEdit.getText(), airpAltitudeEdit.getText(), + airpTimezoneEdit.getText(), airpDSTEdit.getText(), airpTzEdit.getText()); + + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setTitle("Airport Edit Successful"); + alert.setHeaderText("Airport data edited!"); + alert.setContentText("Your airport data has been successfully edited."); + alert.showAndWait(); + + Stage stage = (Stage) editButton.getScene().getWindow(); + stage.close(); + } catch (DataException e) { + System.err.println("RIP Harambe: " + e.getMessage() + "IT WAS TOO SOON"); + } + } + + public void load() { + theDataSet = getParent().getCurrentDataset(); + currentSession = getParent().getSession(); + + toEdit = theDataSet.getAirportDictionary().get(currentSession.getAirportToEdit()); + + airpNameEdit.setText(toEdit.getName()); + airpCityEdit.setText(toEdit.getCityName()); + airpCountryEdit.setText(toEdit.getCountryName()); + airpIATAFAAEdit.setText(toEdit.getIATA_FFA()); + airpICAOEdit.setText(toEdit.getICAO()); + airpLatitudeEdit.setText(Double.toString(toEdit.getLatitude())); + airpLongitudeEdit.setText(Double.toString(toEdit.getLongitude())); + airpAltitudeEdit.setText(Double.toString(toEdit.getAltitude())); + airpTimezoneEdit.setText(Double.toString(toEdit.getTimezone())); + airpDSTEdit.setText(toEdit.getDST()); + airpTzEdit.setText(toEdit.getTz()); + } +} diff --git a/src/main/java/seng202/group9/GUI/AirportRDController.java b/src/main/java/seng202/group9/GUI/AirportRDController.java index c0f3651..dfd1bf7 100644 --- a/src/main/java/seng202/group9/GUI/AirportRDController.java +++ b/src/main/java/seng202/group9/GUI/AirportRDController.java @@ -5,7 +5,6 @@ import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; -import seng202.group9.Controller.AirportFilter; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.SceneCode; import seng202.group9.Controller.Session; @@ -89,14 +88,17 @@ public class AirportRDController extends Controller{ public void openFilter() { createPopUpStage(SceneCode.AIRPORT_FILTER, 600, 480); - ArrayList d = new ArrayList(); - for(int i = 0; i < theDataSet.getAirports().size(); i++) { - if (currentSession.getFilteredAirports().containsValue(theDataSet.getAirports().get(i).getName()) - && currentSession.getFilteredAirports().containsKey(i)) { - d.add(theDataSet.getAirports().get(i)); + + if (currentSession.getFilteredAirports() != null) { + ArrayList d = new ArrayList(); + for (int i = 0; i < theDataSet.getAirports().size(); i++) { + if (currentSession.getFilteredAirports().containsValue(theDataSet.getAirports().get(i).getName()) + && currentSession.getFilteredAirports().containsKey(i)) { + d.add(theDataSet.getAirports().get(i)); + } } + tableViewAirportRD.setItems(FXCollections.observableArrayList(d)); } - tableViewAirportRD.setItems(FXCollections.observableArrayList(d)); } /** @@ -127,6 +129,17 @@ public class AirportRDController extends Controller{ } } + public void editAirport() { + Airport toEdit = tableViewAirportRD.getSelectionModel().getSelectedItem(); + currentSession.setAirportToEdit(toEdit.getName()); + createPopUpStage(SceneCode.AIRPORT_EDIT, 600, 480); + +// System.out.println(toEdit.getName() + "," + toEdit.getCity() + "," + toEdit.getCountry() + "," + toEdit.getIATA_FFA() +// + "," + toEdit.getICAO() + "," + toEdit.getLatitude() + "," + toEdit.getLongitude() + "," + toEdit.getAltitude() +// + "," + toEdit.getTimezone() + "," + toEdit.getDST() + "," + toEdit.getTz()); + + tableViewAirportRD.refresh(); + } /** * Analyses the current data and creates a graph based on the data. diff --git a/src/main/java/seng202/group9/GUI/RouteEditController.java b/src/main/java/seng202/group9/GUI/RouteEditController.java new file mode 100644 index 0000000..2aa264b --- /dev/null +++ b/src/main/java/seng202/group9/GUI/RouteEditController.java @@ -0,0 +1,73 @@ +package seng202.group9.GUI; + +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.Button; +import javafx.scene.control.TextField; +import javafx.stage.Stage; +import seng202.group9.Controller.DataException; +import seng202.group9.Controller.Dataset; +import seng202.group9.Controller.EntryParser; +import seng202.group9.Controller.Session; +import seng202.group9.Core.Route; + +/** + * Created by Sunguin on 2016/09/24. + */ +public class RouteEditController extends Controller { + @FXML + private TextField rAirlineEdit; + @FXML + private TextField rSourceEdit; + @FXML + private TextField rDestEdit; + @FXML + private TextField rCodeshareEdit; + @FXML + private TextField rStopsEdit; + @FXML + private TextField rEquipmentEdit; + @FXML + private Button editButton; + + private Dataset theDataSet = null; + + private Session currentSession = null; + + private Route toEdit = null; + + public void editRoute() { + try { + EntryParser parser = new EntryParser(); + parser.parseRoute(rAirlineEdit.getText(), rSourceEdit.getText(), rDestEdit.getText(), rCodeshareEdit.getText(), + rStopsEdit.getText(), rEquipmentEdit.getText()); + theDataSet.editRoute(toEdit, rAirlineEdit.getText(), rSourceEdit.getText(), rDestEdit.getText(), rCodeshareEdit.getText(), + rStopsEdit.getText(), rEquipmentEdit.getText()); + + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setTitle("Route Edit Successful"); + alert.setHeaderText("Route data edited!"); + alert.setContentText("Your route data has been successfully edited."); + alert.showAndWait(); + + Stage stage = (Stage) editButton.getScene().getWindow(); + stage.close(); + } catch (DataException e) { + System.err.println("RIP Harambe: " + e.getMessage() + "IT WAS TOO SOON"); + } + } + + public void load() { + theDataSet = getParent().getCurrentDataset(); + currentSession = getParent().getSession(); + + toEdit = theDataSet.getRouteDictionary().get(currentSession.getRouteToEdit()); + + rAirlineEdit.setText(toEdit.getAirlineName()); + rSourceEdit.setText(toEdit.getDepartureAirport()); + rDestEdit.setText(toEdit.getArrivalAirport()); + rCodeshareEdit.setText(toEdit.getCode()); + rStopsEdit.setText(Integer.toString(toEdit.getStops())); + rEquipmentEdit.setText(toEdit.getEquipment()); + } +} diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index 45b1b29..69b20c6 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -78,14 +78,16 @@ public class RouteRDController extends Controller { public void openFilter() { createPopUpStage(SceneCode.ROUTE_FILTER, 600, 330); - ArrayList d = new ArrayList(); - for(int i = 0; i < theDataSet.getRoutes().size(); i++) { - if (currentSession.getFilteredRoutes().containsValue(theDataSet.getRoutes().get(i).getAirlineName()) - && currentSession.getFilteredRoutes().containsKey(i)) { - d.add(theDataSet.getRoutes().get(i)); + if (currentSession.getFilteredRoutes() != null) { + ArrayList d = new ArrayList(); + for (int i = 0; i < theDataSet.getRoutes().size(); i++) { + if (currentSession.getFilteredRoutes().containsValue(theDataSet.getRoutes().get(i).getAirlineName()) + && currentSession.getFilteredRoutes().containsKey(i)) { + d.add(theDataSet.getRoutes().get(i)); + } } + tableViewRouteRD.setItems(FXCollections.observableArrayList(d)); } - tableViewRouteRD.setItems(FXCollections.observableArrayList(d)); } /** @@ -112,6 +114,18 @@ public class RouteRDController extends Controller { } } + public void editRoute() { + Route toEdit = tableViewRouteRD.getSelectionModel().getSelectedItem(); + currentSession.setRouteToEdit(toEdit.getAirlineName() + toEdit.getDepartureAirport() + toEdit.getArrivalAirport() + + toEdit.getCode() + toEdit.getStops() + toEdit.getEquipment()); + createPopUpStage(SceneCode.ROUTE_EDIT, 600, 330); + +// System.out.println(toEdit.getName() + "," + toEdit.getCity() + "," + toEdit.getCountry() + "," + toEdit.getIATA_FFA() +// + "," + toEdit.getICAO() + "," + toEdit.getLatitude() + "," + toEdit.getLongitude() + "," + toEdit.getAltitude() +// + "," + toEdit.getTimezone() + "," + toEdit.getDST() + "," + toEdit.getTz()); + + tableViewRouteRD.refresh(); + } /** * Analyses the current data and creates a graph based on the data. diff --git a/src/main/resources/airport_edit_form.fxml b/src/main/resources/airport_edit_form.fxml new file mode 100644 index 0000000..2531b03 --- /dev/null +++ b/src/main/resources/airport_edit_form.fxml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +