From 5cc305d896fbe7897de6ee15edef06b19712f12c Mon Sep 17 00:00:00 2001 From: Sunguin Peng Date: Sat, 17 Sep 2016 15:06:29 +1200 Subject: [PATCH 1/4] Fixed some refactoring issues and implemented delete functions in the GUI --- res/session.ser | Bin 211 -> 209 bytes res/userdb.db | Bin 4365312 -> 4365312 bytes .../seng202/group9/Controller/Dataset.java | 12 +++++++-- src/main/java/seng202/group9/Core/Route.java | 4 +-- .../group9/GUI/AirlineRDController.java | 20 +++++++-------- .../group9/GUI/AirportRDController.java | 23 +++++------------- .../seng202/group9/GUI/RouteRDController.java | 18 +++++++++++++- src/main/resources/airline_raw_data.fxml | 11 ++++++++- src/main/resources/airport_raw_data.fxml | 9 +++++++ src/main/resources/route_raw_data.fxml | 9 +++++++ 10 files changed, 73 insertions(+), 33 deletions(-) diff --git a/res/session.ser b/res/session.ser index 98ddf26d989515a3be7c9079dd872e162cfc2e7a..43db02659689104c8a17b2834cc2e31637c65adf 100644 GIT binary patch delta 22 dcmcc2c#(0!A%4Cf|IiTE_#nsdco)YIM*v)q2WJ2P delta 24 fcmcb}c$sm+AwdC0&mbR9KiBvm$MAR;#}G#VYFr24 diff --git a/res/userdb.db b/res/userdb.db index ed5ac185092a47a5197b56ba566f20f6e4e28c96..f0d6fded9ef7134c668020dc458b0c135b04cfc6 100644 GIT binary patch delta 4542 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 ej_zB_>r?E}5J;^j5Ykt}w>Goq#5pI+mH!W${ airlineByIATA= new HashMap(); //create Airline country link for (Airline airline: airlines){ - airlineByIATA.put(airline.getAlias(), airline); + airlineByIATA.put(airline.getIATA(), airline); //System.out.println(airline.getAlias()); airline.setCountry(countryDictionary.get(airline.getCountryName())); } @@ -834,6 +834,7 @@ public class Dataset { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); } + createDataLinks(); } public void addAirport(String name, String city, String country, String IATA_FFA, String ICAO, String latitude, String longitude, @@ -893,6 +894,7 @@ public class Dataset { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); } + createDataLinks(); } public void addCity(City city){ @@ -1018,6 +1020,7 @@ public class Dataset { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); } + createDataLinks(); } @@ -1136,10 +1139,14 @@ public class Dataset { try { Class.forName("org.sqlite.JDBC"); c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); + //System.out.println(airline.getID()); String deleteQuery = "DELETE FROM `"+this.name+"_Airline` WHERE `Airline_ID` = " + airline.getID() + ";"; stmt = c.createStatement(); + //System.out.println("Airline deleted"); stmt.execute(deleteQuery); + //System.out.println("Airline deleted"); stmt.close(); + //System.out.println("Airline deleted"); stmt = c.createStatement(); //check if number of countries that contain airlines > 0 else delete the country String countCountry = "SELECT COUNT(*) FROM `"+this.name+"_Airline` JOIN `"+this.name+"_Country` ON" + @@ -1152,6 +1159,7 @@ public class Dataset { } countCountryRes.close(); stmt.close(); + //check if number of counties that contain airports > 0 else delete the country String countCountryA = "SELECT COUNT(*) FROM `"+this.name+"_Airport` JOIN `"+this.name+"_Country` ON" + " `"+this.name+"_Country`.`Country_Name` = `"+this.name+"_Airport`.`Country`" + @@ -1172,7 +1180,7 @@ public class Dataset { c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); - System.exit(0); + //System.exit(0); } airlines.remove(airline); } diff --git a/src/main/java/seng202/group9/Core/Route.java b/src/main/java/seng202/group9/Core/Route.java index 07b975d..c04dd55 100644 --- a/src/main/java/seng202/group9/Core/Route.java +++ b/src/main/java/seng202/group9/Core/Route.java @@ -122,7 +122,7 @@ public class Route { } //JavaDoc needed public int getAirlineID() throws DataException { - if (this.airline != null) { + if (this.getAirline() != null) { return this.getAirline().getID(); }else { return 0; @@ -240,7 +240,7 @@ public class Route { */ public void hasDuplicate(Route route) throws DataException{ //routeAirline + routeSourceAirport + routeArrvAirport + routeCodeShare + routeStops + routeEquip - if (route.getAirline().equals(this.airline) && route.getDepartureAirport().equals(this.departureAirport) + if (route.getAirlineName().equals(this.airlineName) && route.getDepartureAirport().equals(this.departureAirport) && route.getArrivalAirport().equals(this.arrivalAirport) && route.getCode().equals(this.codeShare) && route.getStops() == this.stops && route.getEquipment().equals(this.equipment)){ throw new DataException("This Route already exists."); diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index 9dc01a7..72425c4 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -1,25 +1,19 @@ package seng202.group9.GUI; import javafx.collections.FXCollections; -import javafx.collections.ObservableList; import javafx.fxml.FXML; -import javafx.fxml.Initializable; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; -import seng202.group9.Controller.App; import seng202.group9.Controller.Dataset; import seng202.group9.Core.Airline; -import java.net.URL; -import java.util.ResourceBundle; - /** * Created by Sunguin on 2016/09/13. */ public class AirlineRDController extends Controller { @FXML - private TableView tableView; + private TableView tableViewAirlineRD; @FXML private TableColumn airlIDcol; @FXML @@ -73,7 +67,7 @@ public class AirlineRDController extends Controller { airlCallsignBox.clear(); airlCountryBox.clear(); airlActiveCBox.getSelectionModel().clearSelection(); - tableView.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); } catch ( Exception e ) { Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Airline Data Error"); @@ -95,9 +89,15 @@ public class AirlineRDController extends Controller { airlActivecol.setCellValueFactory(new PropertyValueFactory("Active")); theDataSet = getParent().getCurrentDataset(); - tableView.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); - //ObservableList activeOptions= FXCollections.observableArrayList("Y", "N"); + tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + + airlActiveCBox.setValue("Y"); airlActiveCBox.getItems().addAll("Y", "N"); } + public void deleteAirline() { + Airline toDelete = tableViewAirlineRD.getSelectionModel().getSelectedItem(); + theDataSet.deleteAirline(toDelete); + tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + } } diff --git a/src/main/java/seng202/group9/GUI/AirportRDController.java b/src/main/java/seng202/group9/GUI/AirportRDController.java index 208550c..10b873d 100644 --- a/src/main/java/seng202/group9/GUI/AirportRDController.java +++ b/src/main/java/seng202/group9/GUI/AirportRDController.java @@ -90,26 +90,10 @@ public class AirportRDController extends Controller{ airpDSTcol.setCellValueFactory(new PropertyValueFactory("DST")); airpTzcol.setCellValueFactory(new PropertyValueFactory("Tz")); -// airpTimezonecol.setCellFactory(new Callback, TableCell>() { -// -// @Override -// public TableCell call(TableColumn param) { -// TableCell timeZoneCell = new TableCell() { -// @Override -// protected void updateItem(City timezone, boolean empty) { -// if (timezone != null) { -// Label timeZoneLabel = new Label(timezone.getTimeOlson()); -// setGraphic(timeZoneLabel); -// } -// } -// }; -// -// return timeZoneCell; -// } -// }); theDataSet = getParent().getCurrentDataset(); tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); + airpDSTCBox.setValue("E"); airpDSTCBox.getItems().addAll("E", "A", "S", "O", "Z", "N", "U"); } @@ -147,4 +131,9 @@ public class AirportRDController extends Controller{ } } + public void deleteAirport(){ + Airport toDelete = tableViewAirportRD.getSelectionModel().getSelectedItem(); + theDataSet.deleteAirport(toDelete); + tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); + } } diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index f2994b8..6044ebc 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -5,6 +5,7 @@ import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import seng202.group9.Controller.App; +import seng202.group9.Controller.DataException; import seng202.group9.Controller.Dataset; import seng202.group9.Core.Route; @@ -66,12 +67,19 @@ public class RouteRDController extends Controller { rStopsBox.clear(); rEquipmentBox.clear(); tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); - } catch ( Exception e ) { + } catch (DataException e){ Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Route Data Error"); alert.setHeaderText("Error adding a custom route entry."); alert.setContentText(e.getMessage()); alert.showAndWait(); + } catch ( Exception e ) { + e.printStackTrace(); + Alert alert = new Alert(Alert.AlertType.ERROR); + alert.setTitle("Route Error"); + alert.setHeaderText("Error adding a custom route entry."); + alert.setContentText(e.getMessage()); + alert.showAndWait(); } } @@ -89,6 +97,14 @@ public class RouteRDController extends Controller { theDataSet = getParent().getCurrentDataset(); tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); + rCodeshareCBox.setValue(""); rCodeshareCBox.getItems().addAll("Y", ""); + + } + + public void deleteRoute(){ + Route toDelete = tableViewRouteRD.getSelectionModel().getSelectedItem(); + theDataSet.deleteRoute(toDelete); + tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); } } diff --git a/src/main/resources/airline_raw_data.fxml b/src/main/resources/airline_raw_data.fxml index b5829d2..5442c28 100644 --- a/src/main/resources/airline_raw_data.fxml +++ b/src/main/resources/airline_raw_data.fxml @@ -3,7 +3,9 @@ + + @@ -34,7 +36,7 @@