diff --git a/src/main/java/seng202/group9/Controller/AirportFilter.java b/src/main/java/seng202/group9/Controller/AirportFilter.java index 21a22b7..595d173 100644 --- a/src/main/java/seng202/group9/Controller/AirportFilter.java +++ b/src/main/java/seng202/group9/Controller/AirportFilter.java @@ -83,7 +83,7 @@ public class AirportFilter extends Filter{ } public void filterLatitude(String latitude){ - String regexCode = "(?i).*"+latitude+".*"; + String regexCode = ".*"+latitude+".*"; int index = 0; while(index < filteredList.size()){ if (!String.valueOf(filteredList.get(index).getLatitude()).matches(regexCode)){ @@ -95,7 +95,7 @@ public class AirportFilter extends Filter{ } public void filterLongitude(String longitude){ - String regexCode = "(?i).*"+longitude+".*"; + String regexCode = ".*"+longitude+".*"; int index = 0; while(index < filteredList.size()){ if (!String.valueOf(filteredList.get(index).getLongitude()).matches(regexCode)){ @@ -107,7 +107,7 @@ public class AirportFilter extends Filter{ } public void filterAltitude(String altitude){ - String regexCode = "(?i).*"+altitude+".*"; + String regexCode = ".*"+altitude+".*"; int index = 0; while(index < filteredList.size()){ if (!String.valueOf(filteredList.get(index).getAltitude()).matches(regexCode)){ @@ -146,7 +146,7 @@ public class AirportFilter extends Filter{ String regexCode = "(?i).*"+DST+".*"; int index = 0; while(index < filteredList.size()){ - if (!filteredList.get(index).getCountry().getDST().matches(regexCode)){ + if (!filteredList.get(index).getDST().matches(regexCode)){ filteredList.remove(index); }else{ index++; diff --git a/src/main/java/seng202/group9/Controller/Dataset.java b/src/main/java/seng202/group9/Controller/Dataset.java index 5c878be..cb21841 100644 --- a/src/main/java/seng202/group9/Controller/Dataset.java +++ b/src/main/java/seng202/group9/Controller/Dataset.java @@ -740,7 +740,7 @@ public class Dataset { HashMap 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())); } @@ -831,6 +831,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, @@ -890,6 +891,7 @@ public class Dataset { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); } + createDataLinks(); } public void addCity(City city){ @@ -1015,6 +1017,7 @@ public class Dataset { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); } + createDataLinks(); } /** @@ -1180,10 +1183,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" + @@ -1196,6 +1203,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`" + @@ -1216,7 +1224,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/Controller/RouteFilter.java b/src/main/java/seng202/group9/Controller/RouteFilter.java index a96408d..89dc1d2 100644 --- a/src/main/java/seng202/group9/Controller/RouteFilter.java +++ b/src/main/java/seng202/group9/Controller/RouteFilter.java @@ -73,7 +73,7 @@ public class RouteFilter extends Filter{ String regexCode = "(?i).*"+stops+".*"; int index = 0; while(index < filteredList.size()){ - if (!filteredList.get(index).getArrivalAirport().matches(regexCode)){ + if (!String.valueOf(filteredList.get(index).getStops()).matches(regexCode)){ filteredList.remove(index); }else{ index++; diff --git a/src/main/java/seng202/group9/Core/Route.java b/src/main/java/seng202/group9/Core/Route.java index ffff49c..d95d02b 100644 --- a/src/main/java/seng202/group9/Core/Route.java +++ b/src/main/java/seng202/group9/Core/Route.java @@ -123,7 +123,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; @@ -241,7 +241,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..c3e1d1d 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -1,25 +1,20 @@ 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.AirlineFilter; 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 @@ -36,6 +31,7 @@ public class AirlineRDController extends Controller { private TableColumn airlCountrycol; @FXML private TableColumn airlActivecol; + @FXML private TextField airlNameBox; @FXML @@ -49,9 +45,23 @@ public class AirlineRDController extends Controller { @FXML private TextField airlCountryBox; @FXML - //private TextField airlActiveBox; private ComboBox airlActiveCBox; + @FXML + private TextField airlNameFilter; + @FXML + private TextField airlAliasFilter; + @FXML + private TextField airlIATAFilter; + @FXML + private TextField airlICAOFilter; + @FXML + private TextField airlCallsignFilter; + @FXML + private TextField airlCountryFilter; + @FXML + private TextField airlActiveFilter; + private Dataset theDataSet = null; //Dummy function to test the add button. @@ -73,7 +83,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"); @@ -87,7 +97,6 @@ public class AirlineRDController extends Controller { airlIDcol.setCellValueFactory(new PropertyValueFactory("ID")); airlNamecol.setCellValueFactory(new PropertyValueFactory("Name")); airlAliascol.setCellValueFactory(new PropertyValueFactory("Alias")); - //Need to check IATA and ICAO airlIATAcol.setCellValueFactory(new PropertyValueFactory("IATA")); airlICAOcol.setCellValueFactory(new PropertyValueFactory("ICAO")); airlCallsigncol.setCellValueFactory(new PropertyValueFactory("CallSign")); @@ -95,9 +104,41 @@ 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())); + } + + public void filterAirlines() { + AirlineFilter filter = new AirlineFilter(theDataSet.getAirlines()); + if (airlNameFilter.getText() != null) { + filter.filterName(airlNameFilter.getText()); + } + if (airlAliasFilter.getText() != null) { + filter.filterAlias(airlAliasFilter.getText()); + } + if (airlIATAFilter.getText() != null) { + filter.filterIATA(airlIATAFilter.getText()); + } + if (airlICAOFilter.getText() != null) { + filter.filterICAO(airlICAOFilter.getText()); + } + if (airlCallsignFilter.getText() != null) { + filter.filterCallsign(airlCallsignFilter.getText()); + } + if (airlCountryFilter.getText() != null) { + filter.filterCountry(airlCountryFilter.getText()); + } + if (airlActiveFilter.getText() != null) { + filter.filterActive(airlActiveFilter.getText()); + } + tableViewAirlineRD.setItems(FXCollections.observableArrayList(filter.getFilteredData())); + } } diff --git a/src/main/java/seng202/group9/GUI/AirportRDController.java b/src/main/java/seng202/group9/GUI/AirportRDController.java index 802ce4f..b96fc36 100644 --- a/src/main/java/seng202/group9/GUI/AirportRDController.java +++ b/src/main/java/seng202/group9/GUI/AirportRDController.java @@ -12,6 +12,7 @@ import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import javafx.util.Callback; +import seng202.group9.Controller.AirportFilter; import seng202.group9.Controller.App; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.SceneCode; @@ -75,6 +76,29 @@ public class AirportRDController extends Controller{ @FXML private TextField airpTzBox; + @FXML + private TextField airpNameFilter; + @FXML + private TextField airpCityFilter; + @FXML + private TextField airpCountryFilter; + @FXML + private TextField airpIATAFFAFilter; + @FXML + private TextField airpICAOFilter; + @FXML + private TextField airpLatitudeFilter; + @FXML + private TextField airpLongitudeFilter; + @FXML + private TextField airpAltitudeFilter; + @FXML + private TextField airpTimezoneFilter; + @FXML + private TextField airpDSTFilter; + @FXML + private TextField airpTzFilter; + private Dataset theDataSet = null; public void load() { @@ -91,26 +115,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,7 +155,51 @@ public class AirportRDController extends Controller{ alert.showAndWait(); } } - public void airportAnalyserButton(){ + public void airportAnalyserButton() { replaceSceneContent(SceneCode.AIRPORT_ANALYSER); } + + public void deleteAirport(){ + Airport toDelete = tableViewAirportRD.getSelectionModel().getSelectedItem(); + theDataSet.deleteAirport(toDelete); + tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); + } + + public void filterAirports() { + AirportFilter filter = new AirportFilter(theDataSet.getAirports()); + if (airpNameFilter.getText() != null) { + filter.filterName(airpNameFilter.getText()); + } + if (airpCityFilter.getText() != null) { + filter.filterCity(airpCityFilter.getText()); + } + if (airpCountryFilter.getText() != null) { + filter.filterCountry(airpCountryFilter.getText()); + } + if (airpIATAFFAFilter.getText() != null) { + filter.filterIATA_FFA(airpIATAFFAFilter.getText()); + } + if (airpICAOFilter.getText() != null) { + filter.filterICAO(airpICAOFilter.getText()); + } + if (airpLatitudeFilter.getText() != null) { + filter.filterLatitude(airpLatitudeFilter.getText()); + } + if (airpLongitudeFilter.getText() != null) { + filter.filterLongitude(airpLongitudeFilter.getText()); + } + if (airpAltitudeFilter.getText() != null) { + filter.filterAltitude(airpAltitudeFilter.getText()); + } + if (airpTimezoneFilter.getText() != null) { + filter.filterTimezone(airpTimezoneFilter.getText()); + } + if (airpDSTFilter.getText() != null) { + filter.filterDST(airpDSTFilter.getText()); + } + if (airpTzFilter.getText() != null) { + filter.filterOlson(airpTzFilter.getText()); + } + tableViewAirportRD.setItems(FXCollections.observableArrayList(filter.getFilteredData())); + } } diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index abf2581..b62978a 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -5,10 +5,14 @@ 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.Controller.SceneCode; +import seng202.group9.Controller.RouteFilter; import seng202.group9.Core.Route; +import java.util.ArrayList; + /** * Created by Sunguin on 2016/09/14. */ @@ -48,6 +52,19 @@ public class RouteRDController extends Controller { @FXML private TextField rEquipmentBox; + @FXML + private TextField rAirlineFilter; + @FXML + private TextField rSourceFilter; + @FXML + private TextField rDestFilter; + @FXML + private TextField rCodeshareFilter; + @FXML + private TextField rStopsFilter; + @FXML + private TextField rEquipmentFilter; + @FXML private Dataset theDataSet = null; public void addRouteSingle() { @@ -67,12 +84,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(); } } @@ -90,7 +114,41 @@ 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())); + } + + public void filterRoutes(){ + RouteFilter filter = new RouteFilter(theDataSet.getRoutes()); + if (rAirlineFilter.getText() != null) { + //System.out.println("Hello over here"); + filter.filterAirline(rAirlineFilter.getText()); + } + if (rSourceFilter.getText() != null) { + filter.filterSourceAirport(rSourceFilter.getText()); + } + if (rDestFilter.getText() != null) { + filter.filterDestinationAirport(rDestFilter.getText()); + } + if (rCodeshareFilter.getText() != null) { + filter.filterCodeshare(rCodeshareFilter.getText()); + } + if (rStopsFilter.getText() != null) { + filter.filterDestinationStops(rStopsFilter.getText()); + } + if (rEquipmentFilter.getText() != null) { + filter.filterEquipment(rEquipmentFilter.getText()); + } +// System.out.println("Hello"); +// filter.printFilter(); + tableViewRouteRD.setItems(FXCollections.observableArrayList(filter.getFilteredData())); } public void analyse_Button() { diff --git a/src/main/resources/airline_raw_data.fxml b/src/main/resources/airline_raw_data.fxml index b5829d2..a20c490 100644 --- a/src/main/resources/airline_raw_data.fxml +++ b/src/main/resources/airline_raw_data.fxml @@ -3,7 +3,10 @@ + + + @@ -32,9 +35,9 @@