diff --git a/res/userdb.db b/res/userdb.db index f2a4673..16b9634 100644 Binary files a/res/userdb.db and b/res/userdb.db differ diff --git a/src/main/java/seng202/group9/Controller/AirlineFilter.java b/src/main/java/seng202/group9/Controller/AirlineFilter.java new file mode 100644 index 0000000..a3571aa --- /dev/null +++ b/src/main/java/seng202/group9/Controller/AirlineFilter.java @@ -0,0 +1,131 @@ +package seng202.group9.Controller; + +import seng202.group9.Core.Airline; + +import java.util.ArrayList; + +/** + * Created by fwy13 on 16/09/16. + */ +public class AirlineFilter extends Filter{ + + private ArrayList baseArray; + private ArrayList filteredList; + + public AirlineFilter(ArrayList baseList){ + filteredList = new ArrayList(); + baseArray = new ArrayList(); + for (Airline airline: baseList){ + baseArray.add(airline); + filteredList.add(airline); + } + } + + public void filterName(String name){ + String regexCode = "(?i).*"+name+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getName().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterAlias(String alias){ + String regexCode = "(?i).*"+alias+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getAlias().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterIATA(String IATA){ + String regexCode = "(?i).*"+IATA+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getIATA().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterICAO(String ICAO){ + String regexCode = "(?i).*"+ICAO+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getICAO().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterCallsign(String callsign){ + String regexCode = "(?i).*"+callsign+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getCallSign().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterCountry(String country){ + String regexCode = "(?i).*"+country+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getCountryName().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterActive(String active){ + String regexCode = "(?i).*"+active+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getActive().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void reset() { + filteredList = new ArrayList(); + for (Airline airline: filteredList){ + filteredList.add(airline); + } + } + + public ArrayList getFilteredData() { + return filteredList; + } + + public void setBaseList(ArrayList arrayList) { + baseArray = new ArrayList(); + for (Airline airline: arrayList){ + baseArray.add(airline); + } + } + + public void printFilter(){ + for (Airline airline: filteredList){ + System.out.println(airline); + } + } +} diff --git a/src/main/java/seng202/group9/Controller/AirportFilter.java b/src/main/java/seng202/group9/Controller/AirportFilter.java new file mode 100644 index 0000000..21a22b7 --- /dev/null +++ b/src/main/java/seng202/group9/Controller/AirportFilter.java @@ -0,0 +1,180 @@ +package seng202.group9.Controller; + +import seng202.group9.Core.Airline; +import seng202.group9.Core.Airport; + +import java.util.ArrayList; + +/** + * Created by fwy13 on 16/09/16. + */ +public class AirportFilter extends Filter{ + + private ArrayList baseArray; + private ArrayList filteredList; + + public AirportFilter(ArrayList baseList){ + filteredList = new ArrayList(); + baseArray = new ArrayList(); + for (Airport airport: baseList){ + baseArray.add(airport); + filteredList.add(airport); + } + } + + public void filterName(String name){ + String regexCode = "(?i).*"+name+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getName().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterCity(String city){ + String regexCode = "(?i).*"+city+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getCityName().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterCountry(String country){ + String regexCode = "(?i).*"+country+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getCountryName().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterIATA_FFA(String IATA_FFA){ + String regexCode = "(?i).*"+IATA_FFA+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getIATA_FFA().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterICAO(String ICAO){ + String regexCode = "(?i).*"+ICAO+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getICAO().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterLatitude(String latitude){ + String regexCode = "(?i).*"+latitude+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!String.valueOf(filteredList.get(index).getLatitude()).matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterLongitude(String longitude){ + String regexCode = "(?i).*"+longitude+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!String.valueOf(filteredList.get(index).getLongitude()).matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterAltitude(String altitude){ + String regexCode = "(?i).*"+altitude+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!String.valueOf(filteredList.get(index).getAltitude()).matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterTimezone(String timezone){ + String regexCode = "(?i).*"+timezone+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!String.valueOf(filteredList.get(index).getCity(). getTimezone()).matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterOlson(String olson){ + String regexCode = "(?i).*"+olson+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getCity().getTimeOlson().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterDST(String DST){ + String regexCode = "(?i).*"+DST+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getCountry().getDST().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void reset() { + filteredList = new ArrayList(); + for (Airport airport: filteredList){ + filteredList.add(airport); + } + } + + public ArrayList getFilteredData() { + return filteredList; + } + + public void setBaseList(ArrayList arrayList) { + baseArray = new ArrayList(); + for (Airport airport: arrayList){ + baseArray.add(airport); + } + } + + public void printFilter(){ + for (Airport airport: filteredList){ + System.out.println(airport); + } + } +} diff --git a/src/main/java/seng202/group9/Controller/App.java b/src/main/java/seng202/group9/Controller/App.java index 53f1e34..86f3555 100644 --- a/src/main/java/seng202/group9/Controller/App.java +++ b/src/main/java/seng202/group9/Controller/App.java @@ -23,7 +23,7 @@ import seng202.group9.GUI.MenuController; */ public class App extends Application { - private ArrayList Datasets = new ArrayList(); + private ArrayList datasets = new ArrayList(); private Dataset currentDataset = null; private Stage primaryStage = null; private VBox mainContainer; @@ -62,6 +62,10 @@ public class App extends Application e.printStackTrace(); } + AirlineFilter filter = new AirlineFilter(currentDataset.getAirlines()); + filter.filterName("NZ"); + filter.filterAlias("flight"); + filter.printFilter(); /* //testout single route adding try { @@ -75,14 +79,12 @@ public class App extends Application }catch (DataException e){ e.printStackTrace(); } - //testout single airline adding try { currentDataset.addAirline("Dota2", "Valve", "D2", "DOT", "Defence of the Ancients", "Steam", "Y"); }catch (DataException e){ e.printStackTrace(); } - //testing out airport parser try { System.out.println(currentDataset.importAirport("res/Samples/Airports.txt")); @@ -136,4 +138,9 @@ public class App extends Application public Dataset getCurrentDataset(){ return currentDataset; } + + public void deleteDataset(Dataset dataset){ + dataset.deleteDataset(); + datasets.remove(dataset); + } } diff --git a/src/main/java/seng202/group9/Controller/Dataset.java b/src/main/java/seng202/group9/Controller/Dataset.java index 24b938c..578b92b 100644 --- a/src/main/java/seng202/group9/Controller/Dataset.java +++ b/src/main/java/seng202/group9/Controller/Dataset.java @@ -96,7 +96,7 @@ public class Dataset { String airCallsign = rs.getString("CallSign"); String airCountry = rs.getString("Country"); String airActive = rs.getString("Active"); - Airline airlineToAdd = new Airline(airID, airName, airIATA, airICAO, airAlias, airCallsign, airCountry, airActive); + Airline airlineToAdd = new Airline(airID, airName, airAlias, airIATA, airICAO, airCallsign, airCountry, airActive); //assuming that all names will be unique airlineDictionary.put(airName, airlineToAdd); airlines.add(airlineToAdd); @@ -239,6 +239,7 @@ public class Dataset { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); } + createDataLinks(); } /** @@ -739,14 +740,18 @@ public class Dataset { public void createDataLinks(){ //this may be seperated into more sepearate function in the future for time optimisation + HashMap airlineByIATA= new HashMap(); //create Airline country link for (Airline airline: airlines){ + airlineByIATA.put(airline.getAlias(), airline); + //System.out.println(airline.getAlias()); airline.setCountry(countryDictionary.get(airline.getCountryName())); } //create Airport City and Country Link HashMap airportsByIATA = new HashMap(); //this is used later for connecting the routes HashMap airportsByICAO = new HashMap(); //this is used later for connecting the routes for (Airport airport: airports){ + //System.out.println(airport.getIATA_FFA()); airportsByIATA.put(airport.getIATA_FFA(), airport); airportsByICAO.put(airport.getICAO(), airport); airport.setCountry(countryDictionary.get(airport.getCountryName())); @@ -766,7 +771,7 @@ public class Dataset { }else{ route.setDestinationAirport(airportsByIATA.get(route.getArrivalAirport())); } - route.setAirline(airlineDictionary.get(route.getAirlineName())); + route.setAirline(airlineByIATA.get(route.getAirlineName())); } System.out.println("Links Made"); } @@ -1081,9 +1086,6 @@ public class Dataset { stmt.close(); - - - } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); @@ -1095,6 +1097,242 @@ public class Dataset { } + /** + * This is called in conjunction to the App deleteDataset DO NOT CALL UNLESS THROUGH APP.DELETEDATASET + */ + public void deleteDataset(){ + //drop the tables + Connection c = null; + Statement stmt = null; + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); + String[] tablesToDrop = {"_Airline", "_Airport", "_City", "_Country", "_Routes", "_Flight_Path", "_Flight_Points"}; + for (int i = 0; i < tablesToDrop.length; i++){ + stmt = c.createStatement(); + String dropTableStatment = "DROP TABLE `"+this.name+tablesToDrop[i]+"`"; + stmt.execute(dropTableStatment); + stmt.close(); + } + stmt = c.createStatement(); + String deleteDatasetEntry = "DELETE FROM `Datasets` WHERE `Dataset_Name` = \""+this.name+"\""; + stmt.execute(deleteDatasetEntry); + stmt.close(); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + System.exit(0); + } + } + + /** + * deletes an airline from the dataset. + * @param airline + */ + public void deleteAirline(Airline airline){ + //drop the entries + Connection c = null; + Statement stmt = null; + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); + String deleteQuery = "DELETE FROM `"+this.name+"_Airline` WHERE `Airline_ID` = " + airline.getID() + ";"; + stmt = c.createStatement(); + stmt.execute(deleteQuery); + stmt.close(); + 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" + + " `"+this.name+"_Country`.`Country_Name` = `"+this.name+"_Airline`.`Country`" + + " WHERE `"+this.name+"_Airline`.`Country` = \""+airline.getCountry().getName().replace("\"", "\"\"")+"\""; + ResultSet countCountryRes = stmt.executeQuery(countCountry); + int countryCount = 0; + while (countCountryRes.next()){ + countryCount += countCountryRes.getInt("COUNT(*)"); + } + 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`" + + " WHERE `"+this.name+"_Airport`.`Country` = \""+airline.getCountry().getName().replace("\"", "\"\"")+"\""; + countCountryRes = stmt.executeQuery(countCountryA); + while (countCountryRes.next()){ + countryCount += countCountryRes.getInt("COUNT(*)"); + } + countCountryRes.close(); + stmt.close(); + //delete country if there are no matches + if (countryCount == 0){ + stmt = c.createStatement(); + String deleteCountry = "DELETE FROM `"+this.name+"_Country` WHERE `Country_Name` = \""+airline.getCountry().getName()+"\""; + stmt.execute(deleteCountry); + stmt.close(); + } + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + System.exit(0); + } + airlines.remove(airline); + } + + public void deleteAirline(int index){ + deleteAirline(airlines.get(index)); + } + + /** + * deletes an airport from the dataset. + * @param airport + */ + public void deleteAirport(Airport airport){ + //drop the entries + Connection c = null; + Statement stmt = null; + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); + String deleteQuery = "DELETE FROM `"+this.name+"_Airport` WHERE `Airport_ID` = " + airport.getID() + ";"; + stmt = c.createStatement(); + stmt.execute(deleteQuery); + stmt.close(); + //check if number of countries that contain airports and airlines > 0 else delete the country + String countCountry = "SELECT COUNT(*) FROM `"+this.name+"_Airport` JOIN `"+this.name+"_Country` ON" + + " `"+this.name+"_Country`.`Country_Name` = `"+this.name+"_Airport`.`Country`" + + " WHERE `"+this.name+"_Airport`.`Country` = \""+airport.getCountry().getName().replace("\"", "\"\"")+"\""; + ResultSet countCountryRes = stmt.executeQuery(countCountry); + int countryCount = 0; + while (countCountryRes.next()){ + countryCount = countCountryRes.getInt("COUNT(*)"); + } + countCountryRes.close(); + stmt.close(); + //check if number of countries that contain airlines > 0 else delete the country + String countCountryA = "SELECT COUNT(*) FROM `"+this.name+"_Airline` JOIN `"+this.name+"_Country` ON" + + " `"+this.name+"_Country`.`Country_Name` = `"+this.name+"_Airline`.`Country`" + + " WHERE `"+this.name+"_Airline`.`Country` = \""+airport.getCountry().getName().replace("\"", "\"\"")+"\""; + ResultSet countCountryResA = stmt.executeQuery(countCountry); + while (countCountryResA.next()){ + countryCount += countCountryResA.getInt("COUNT(*)"); + } + countCountryResA.close(); + stmt.close(); + //delete country if no matches + if (countryCount == 0){ + stmt = c.createStatement(); + String deleteCountry = "DELETE FROM `"+this.name+"_Country` WHERE `Country_Name` = \""+airport.getCountry().getName()+"\""; + stmt.execute(deleteCountry); + stmt.close(); + } + //cehck if number cities that contain airports > 0 else delete the city + String countCity = "SELECT COUNT(*) FROM `"+this.name+"_Airport` JOIN `"+this.name+"_City` ON" + + " `"+this.name+"_City`.`City_Name` = `"+this.name+"_Airport`.`City`" + + " WHERE `"+this.name+"_Airport`.`City` = \""+airport.getCityName().replace("\"", "\"\"")+"\""; + ResultSet countCityRes = stmt.executeQuery(countCity); + int cityCount = 0; + while (countCityRes.next()){ + cityCount = countCityRes.getInt("COUNT(*)"); + } + countCountryRes.close(); + stmt.close(); + //delete country if no matches + if (cityCount == 0){ + stmt = c.createStatement(); + String deleteCity = "DELETE FROM `"+this.name+"_City` WHERE `City_Name` = \""+airport.getCityName()+"\""; + stmt.execute(deleteCity); + stmt.close(); + } + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + System.exit(0); + } + airports.remove(airport); + } + + public void deleteAirport(int index){ + deleteAirport(airports.get(index)); + } + /** + * deletes an route from the dataset. + * @param route + */ + public void deleteRoute(Route route){ + //drop the entries + Connection c = null; + Statement stmt = null; + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); + String deleteQuery = "DELETE FROM `"+this.name+"_Routes` WHERE `Route_ID` = " + route.getID() + ";"; + stmt = c.createStatement(); + stmt.execute(deleteQuery); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + System.exit(0); + } + routes.remove(route); + } + + public void deleteRoute(int index){ + deleteRoute(routes.get(index)); + } + /** + * deletes an airline from the dataset. + * @param flightPath + */ + public void deleteFlightPath(FlightPath flightPath){ + //delete all flight points with the id + while(flightPath.getFlightPoints().size() > 0){ + deleteFlightPoint(flightPath.getFlightPoints().get(0), flightPath); + } + //drop the entries + Connection c = null; + Statement stmt = null; + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); + String deleteQuery = "DELETE FROM `"+this.name+"_Flight_Path` WHERE `Path_ID` = " + flightPath.getID() + ";"; + stmt = c.createStatement(); + stmt.execute(deleteQuery); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + System.exit(0); + } + flightPaths.remove(flightPath); + } + + public void deleteFlightPath(int index){ + deleteFlightPath(flightPaths.get(index)); + } + + /** + * deletes an airline from the dataset. + * @param flightPoint + */ + public void deleteFlightPoint(FlightPoint flightPoint, FlightPath flightPath){ + //drop the tables + Connection c = null; + Statement stmt = null; + try { + Class.forName("org.sqlite.JDBC"); + c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); + String deleteQuery = "DELETE FROM `"+this.name+"_Flight_Points` WHERE `Point_ID` = " + flightPoint.getID() + ";"; + stmt = c.createStatement(); + stmt.execute(deleteQuery); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + System.exit(0); + } + flightPath.getFlightPoints().remove(flightPoint); + } + + public void deleteFlightPoint(int pathIndex, int pointIndex){ + deleteFlightPoint(flightPaths.get(pathIndex).getFlightPoints().get(pointIndex), flightPaths.get(pathIndex)); + } public ArrayList getAirlines() { return airlines; diff --git a/src/main/java/seng202/group9/Controller/Filter.java b/src/main/java/seng202/group9/Controller/Filter.java new file mode 100644 index 0000000..a20a20f --- /dev/null +++ b/src/main/java/seng202/group9/Controller/Filter.java @@ -0,0 +1,11 @@ +package seng202.group9.Controller; + +import java.util.ArrayList; + +/** + * Created by fwy13 on 16/09/16. + */ +public abstract class Filter { + abstract void reset(); + abstract ArrayList getFilteredData(); +} diff --git a/src/main/java/seng202/group9/Controller/RouteFilter.java b/src/main/java/seng202/group9/Controller/RouteFilter.java new file mode 100644 index 0000000..a96408d --- /dev/null +++ b/src/main/java/seng202/group9/Controller/RouteFilter.java @@ -0,0 +1,119 @@ +package seng202.group9.Controller; + +import seng202.group9.Core.Route; + +import java.util.ArrayList; + +/** + * Created by fwy13 on 16/09/16. + */ +public class RouteFilter extends Filter{ + + private ArrayList baseArray; + private ArrayList filteredList; + + public RouteFilter(ArrayList baseList){ + filteredList = new ArrayList(); + baseArray = new ArrayList(); + for (Route route: baseList){ + baseArray.add(route); + filteredList.add(route); + } + } + + public void filterAirline(String airline){ + String regexCode = "(?i).*"+airline+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getAirlineName().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterSourceAirport(String airport){ + String regexCode = "(?i).*"+airport+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getDepartureAirport().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterDestinationAirport(String airport){ + String regexCode = "(?i).*"+airport+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getArrivalAirport().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterCodeshare(String code){ + String regexCode = "(?i).*"+code+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getCode().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterDestinationStops(String stops){ + String regexCode = "(?i).*"+stops+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getArrivalAirport().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void filterEquipment(String equipment){ + String regexCode = "(?i).*"+equipment+".*"; + int index = 0; + while(index < filteredList.size()){ + if (!filteredList.get(index).getEquipment().matches(regexCode)){ + filteredList.remove(index); + }else{ + index++; + } + } + } + + public void reset() { + filteredList = new ArrayList(); + for (Route airline: filteredList){ + filteredList.add(airline); + } + } + + public ArrayList getFilteredData() { + return filteredList; + } + + public void setBaseList(ArrayList arrayList) { + baseArray = new ArrayList(); + for (Route route: arrayList){ + baseArray.add(route); + } + } + + public void printFilter(){ + for (Route route: filteredList){ + System.out.println(route); + } + } +} diff --git a/src/main/java/seng202/group9/Core/Airline.java b/src/main/java/seng202/group9/Core/Airline.java index 64ce272..77574b5 100644 --- a/src/main/java/seng202/group9/Core/Airline.java +++ b/src/main/java/seng202/group9/Core/Airline.java @@ -9,7 +9,7 @@ import java.util.ArrayList; * @author Fan-Wu Yang * */ -public class Airline { +public class Airline{ private int ID; private String IATA; private String ICAO; diff --git a/src/main/java/seng202/group9/Core/Airport.java b/src/main/java/seng202/group9/Core/Airport.java index a21043b..e4ee64e 100644 --- a/src/main/java/seng202/group9/Core/Airport.java +++ b/src/main/java/seng202/group9/Core/Airport.java @@ -254,6 +254,31 @@ public class Airport { return country; } + //JavaDoc needed + public Double getTimezone() { + if (this.city != null) { + return this.city.getTimezone(); + }else{ + return 0.0; + } + } + //JavaDoc needed + public String getDST() { + if (this.country != null) { + return this.country.getDST(); + }else{ + return ""; + } + } + //JavaDoc needed + public String getTz() { + if (this.city != null) { + return this.city.getTimeOlson(); + }else{ + return ""; + } + } + /** * set country class associated with this airport * @param country diff --git a/src/main/java/seng202/group9/Core/FlightPoint.java b/src/main/java/seng202/group9/Core/FlightPoint.java index 70e27ad..2e44249 100644 --- a/src/main/java/seng202/group9/Core/FlightPoint.java +++ b/src/main/java/seng202/group9/Core/FlightPoint.java @@ -18,6 +18,8 @@ public class FlightPoint { public FlightPoint(String type, String name, double altitude, double latitude, double longitude){ //extra calculations will have to be used to find heading, legdistance and total distance. If necessary //Type 1 file the file the lecturers gave us + //indexID = flight path ID + //ID = unique Auto Increment value this.name = name; this.ID = -1; this.indexID = -1; diff --git a/src/main/java/seng202/group9/Core/Route.java b/src/main/java/seng202/group9/Core/Route.java index c193abf..07b975d 100644 --- a/src/main/java/seng202/group9/Core/Route.java +++ b/src/main/java/seng202/group9/Core/Route.java @@ -120,6 +120,31 @@ public class Route { return ID; } } + //JavaDoc needed + public int getAirlineID() throws DataException { + if (this.airline != null) { + return this.getAirline().getID(); + }else { + return 0; + } + } + + public int getSourceID() throws DataException { + if (this.getSourceAirport() != null) { + return this.getSourceAirport().getID(); + } else { + return 0; + } + } + + public int getDestID() throws DataException { + if (this.getDestinationAirport() != null) { + return this.getDestinationAirport().getID(); + } else { + return 0; + } + } + /** * returns the number of stops the route stops. * @return diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index bbfd2e2..33fd35f 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -1,11 +1,9 @@ package seng202.group9.GUI; import javafx.collections.FXCollections; +import javafx.collections.ObservableList; import javafx.fxml.FXML; -import javafx.scene.control.Alert; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; -import javafx.scene.control.TextField; +import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import seng202.group9.Controller.App; import seng202.group9.Controller.Dataset; @@ -47,7 +45,8 @@ public class AirlineRDController extends MenuController { @FXML private TextField airlCountryBox; @FXML - private TextField airlActiveBox; + //private TextField airlActiveBox; + private ComboBox airlActiveCBox; App parent; @@ -66,11 +65,13 @@ public class AirlineRDController extends MenuController { airlIATAcol.setCellValueFactory(new PropertyValueFactory("Alias")); airlICAOcol.setCellValueFactory(new PropertyValueFactory("IATA")); airlCallsigncol.setCellValueFactory(new PropertyValueFactory("CallSign")); - airlCountrycol.setCellValueFactory(new PropertyValueFactory("Country")); + airlCountrycol.setCellValueFactory(new PropertyValueFactory("CountryName")); airlActivecol.setCellValueFactory(new PropertyValueFactory("Active")); theDataSet = this.parent.getCurrentDataset(); tableView.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + //ObservableList activeOptions= FXCollections.observableArrayList("Y", "N"); + airlActiveCBox.getItems().addAll("Y", "N"); } //Dummy function to test the add button. @@ -84,14 +85,14 @@ public class AirlineRDController extends MenuController { airlICAOBox.getText(), airlCallsignBox.getText(), airlCountryBox.getText(), - airlActiveBox.getText()); + airlActiveCBox.getSelectionModel().getSelectedItem().toString()); airlNameBox.clear(); airlAliasBox.clear(); airlIATABox.clear(); airlICAOBox.clear(); airlCallsignBox.clear(); airlCountryBox.clear(); - airlActiveBox.clear(); + airlActiveCBox.getSelectionModel().clearSelection(); tableView.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); } catch ( Exception e ) { Alert alert = new Alert(Alert.AlertType.ERROR); diff --git a/src/main/java/seng202/group9/GUI/AirlineSummaryController.java b/src/main/java/seng202/group9/GUI/AirlineSummaryController.java index fa5ba73..07be386 100644 --- a/src/main/java/seng202/group9/GUI/AirlineSummaryController.java +++ b/src/main/java/seng202/group9/GUI/AirlineSummaryController.java @@ -43,5 +43,48 @@ public class AirlineSummaryController extends MenuController{ currentData = this.parent.getCurrentDataset(); tableView.setItems(FXCollections.observableArrayList(currentData.getAirlines())); } - + public void airlineRawDataButton() { + try { + AirlineRDController rawDataController = (AirlineRDController) + parent.replaceSceneContent("airline_raw_data.fxml"); + rawDataController.setApp(parent); + rawDataController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void flightSummaryButton() { + try { + FlightSummaryController summaryController = (FlightSummaryController) + parent.replaceSceneContent("flight_data_summary.fxml"); + summaryController.setApp(parent); + summaryController.flightPathListView(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void airportSummaryButton() { + try { + AirportSummaryController summaryController = (AirportSummaryController) + parent.replaceSceneContent("airport_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void routeSummaryButton() { + try { + RouteSummaryController summaryController = (RouteSummaryController) + parent.replaceSceneContent("routes_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/seng202/group9/GUI/AirportRDController.java b/src/main/java/seng202/group9/GUI/AirportRDController.java index 0357baf..34b57b0 100644 --- a/src/main/java/seng202/group9/GUI/AirportRDController.java +++ b/src/main/java/seng202/group9/GUI/AirportRDController.java @@ -1,6 +1,10 @@ package seng202.group9.GUI; +import com.sun.javafx.collections.ObservableListWrapper; import javafx.beans.InvalidationListener; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.value.ObservableStringValue; +import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; @@ -41,11 +45,11 @@ public class AirportRDController extends MenuController{ @FXML private TableColumn airpAltitudecol; @FXML - private TableColumn airpTimezonecol; + private TableColumn airpTimezonecol; @FXML - private TableColumn airpDSTcol; + private TableColumn airpDSTcol; @FXML - private TableColumn airpTzcol; + private TableColumn airpTzcol; @FXML private TextField airpNameBox; @@ -66,7 +70,7 @@ public class AirportRDController extends MenuController{ @FXML private TextField airpTimezoneBox; @FXML - private TextField airpDSTBox; + private ComboBox airpDSTCBox; @FXML private TextField airpTzBox; @@ -82,18 +86,18 @@ public class AirportRDController extends MenuController{ public void loadTables() { airpIDcol.setCellValueFactory(new PropertyValueFactory("ID")); airpNamecol.setCellValueFactory(new PropertyValueFactory("Name")); - airpCitycol.setCellValueFactory(new PropertyValueFactory("City")); - airpCountrycol.setCellValueFactory(new PropertyValueFactory("Country")); + airpCitycol.setCellValueFactory(new PropertyValueFactory("CityName")); + airpCountrycol.setCellValueFactory(new PropertyValueFactory("CountryName")); airpIATAFFAcol.setCellValueFactory(new PropertyValueFactory("IATA_FFA")); airpICAOcol.setCellValueFactory(new PropertyValueFactory("ICAO")); airpLatitudecol.setCellValueFactory(new PropertyValueFactory("Latitude")); airpLongitudecol.setCellValueFactory(new PropertyValueFactory("Longitude")); - airpAltitudecol.setCellValueFactory(new PropertyValueFactory("Altitude")); - airpTimezonecol.setCellValueFactory(new PropertyValueFactory("Timezone")); - airpDSTcol.setCellValueFactory(new PropertyValueFactory("DST")); - airpTzcol.setCellValueFactory(new PropertyValueFactory("Tz")); + airpAltitudecol.setCellValueFactory(new PropertyValueFactory ("Altitude")); + airpTimezonecol.setCellValueFactory(new PropertyValueFactory("Timezone")); + airpDSTcol.setCellValueFactory(new PropertyValueFactory("DST")); + airpTzcol.setCellValueFactory(new PropertyValueFactory("Tz")); -// airpTimezonecol.setCellFactory(new Callback, TableCell>() { +// airpTimezonecol.setCellFactory(new Callback, TableCell>() { // // @Override // public TableCell call(TableColumn param) { @@ -112,6 +116,8 @@ public class AirportRDController extends MenuController{ // }); theDataSet = this.parent.getCurrentDataset(); tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); + + airpDSTCBox.getItems().addAll("E", "A", "S", "O", "Z", "N", "U"); } public void addAirportSingle() { @@ -126,7 +132,7 @@ public class AirportRDController extends MenuController{ airpLongitudeBox.getText(), airpAltitudeBox.getText(), airpTimezoneBox.getText(), - airpDSTBox.getText(), + airpDSTCBox.getSelectionModel().getSelectedItem().toString(), airpTzBox.getText()); airpCityBox.clear(); airpCountryBox.clear(); @@ -136,7 +142,7 @@ public class AirportRDController extends MenuController{ airpLongitudeBox.clear(); airpAltitudeBox.clear(); airpTimezoneBox.clear(); - airpDSTBox.clear(); + airpDSTCBox.getSelectionModel().clearSelection(); airpTzBox.clear(); tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); } catch ( Exception e ) { diff --git a/src/main/java/seng202/group9/GUI/AirportSummaryController.java b/src/main/java/seng202/group9/GUI/AirportSummaryController.java index 467e331..03d3dad 100644 --- a/src/main/java/seng202/group9/GUI/AirportSummaryController.java +++ b/src/main/java/seng202/group9/GUI/AirportSummaryController.java @@ -44,5 +44,48 @@ public class AirportSummaryController extends MenuController{ currentData = this.parent.getCurrentDataset(); tableView.setItems(FXCollections.observableArrayList(currentData.getAirports())); } - + public void airportRawDataButton() { + try { + AirportRDController rawDataController = (AirportRDController) + parent.replaceSceneContent("airport_raw_data.fxml"); + rawDataController.setApp(parent); + rawDataController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void flightSummaryButton() { + try { + FlightSummaryController summaryController = (FlightSummaryController) + parent.replaceSceneContent("flight_data_summary.fxml"); + summaryController.setApp(parent); + summaryController.flightPathListView(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void routeSummaryButton() { + try { + RouteSummaryController summaryController = (RouteSummaryController) + parent.replaceSceneContent("routes_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void airlineSummaryButton() { + try { + AirlineSummaryController summaryController = (AirlineSummaryController) + parent.replaceSceneContent("airline_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/src/main/java/seng202/group9/GUI/FlightSummaryController.java b/src/main/java/seng202/group9/GUI/FlightSummaryController.java index e54b311..de7fa9b 100644 --- a/src/main/java/seng202/group9/GUI/FlightSummaryController.java +++ b/src/main/java/seng202/group9/GUI/FlightSummaryController.java @@ -72,6 +72,40 @@ public class FlightSummaryController implements Initializable { } } + public void airportSummaryButton() { + try { + AirportSummaryController summaryController = (AirportSummaryController) + parent.replaceSceneContent("airport_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void routeSummaryButton() { + try { + RouteSummaryController summaryController = (RouteSummaryController) + parent.replaceSceneContent("routes_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void airlineSummaryButton() { + try { + AirlineSummaryController summaryController = (AirlineSummaryController) + parent.replaceSceneContent("airline_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void initialize(URL arg0, ResourceBundle arg1) { // TODO Auto-generated method stub diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index 7984304..2b43a75 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -2,10 +2,7 @@ package seng202.group9.GUI; import javafx.collections.FXCollections; import javafx.fxml.FXML; -import javafx.scene.control.Alert; -import javafx.scene.control.TableColumn; -import javafx.scene.control.TableView; -import javafx.scene.control.TextField; +import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import seng202.group9.Controller.App; import seng202.group9.Controller.Dataset; @@ -40,17 +37,11 @@ public class RouteRDController extends MenuController { @FXML private TextField rAirlineBox; @FXML - private TextField rAirlineIDBox; - @FXML private TextField rSourceBox; @FXML - private TextField rSourceIDBox; - @FXML private TextField rDestBox; @FXML - private TextField rDestIDBox; - @FXML - private TextField rCodeshareBox; + private ComboBox rCodeshareCBox; @FXML private TextField rStopsBox; @FXML @@ -66,18 +57,20 @@ public class RouteRDController extends MenuController { private Dataset theDataSet = null; public void loadTables() { - rAirlineCol.setCellValueFactory(new PropertyValueFactory("Airline")); - //rAirlineIDCol.setCellValueFactory(new PropertyValueFactory("AirlineID")); + rAirlineCol.setCellValueFactory(new PropertyValueFactory("AirlineName")); + rAirlineIDCol.setCellValueFactory(new PropertyValueFactory("AirlineID")); rSourceCol.setCellValueFactory(new PropertyValueFactory("DepartureAirport")); - //rSourceIDCol.setCellValueFactory(new PropertyValueFactory("SourceID")); + rSourceIDCol.setCellValueFactory(new PropertyValueFactory("SourceID")); rDestCol.setCellValueFactory(new PropertyValueFactory("ArrivalAirport")); - //rDestIDCol.setCellValueFactory(new PropertyValueFactory("DestID")); + rDestIDCol.setCellValueFactory(new PropertyValueFactory("DestID")); rCodeshareCol.setCellValueFactory(new PropertyValueFactory("Code")); rStopsCol.setCellValueFactory(new PropertyValueFactory("Stops")); rEquipmentCol.setCellValueFactory(new PropertyValueFactory("Equipment")); theDataSet = this.parent.getCurrentDataset(); tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); + + rCodeshareCBox.getItems().addAll("Y", ""); } public void addRouteSingle() { @@ -86,14 +79,14 @@ public class RouteRDController extends MenuController { rAirlineBox.getText(), rSourceBox.getText(), rDestBox.getText(), - rCodeshareBox.getText(), + rCodeshareCBox.getSelectionModel().getSelectedItem().toString(), rStopsBox.getText(), rEquipmentBox.getText() ); rAirlineBox.clear(); rSourceBox.clear(); rDestBox.clear(); - rCodeshareBox.clear(); + rCodeshareCBox.getSelectionModel().clearSelection(); rStopsBox.clear(); rEquipmentBox.clear(); tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); diff --git a/src/main/java/seng202/group9/GUI/RouteSummaryController.java b/src/main/java/seng202/group9/GUI/RouteSummaryController.java index c4f6412..b5f023e 100644 --- a/src/main/java/seng202/group9/GUI/RouteSummaryController.java +++ b/src/main/java/seng202/group9/GUI/RouteSummaryController.java @@ -43,5 +43,49 @@ public class RouteSummaryController extends MenuController{ currentData = this.parent.getCurrentDataset(); tableView.setItems(FXCollections.observableArrayList(currentData.getRoutes())); } + public void routeRawDataButton() { + try { + RouteRDController rawDataController = (RouteRDController) + parent.replaceSceneContent("route_raw_data.fxml"); + rawDataController.setApp(parent); + rawDataController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void flightSummaryButton() { + try { + FlightSummaryController summaryController = (FlightSummaryController) + parent.replaceSceneContent("flight_data_summary.fxml"); + summaryController.setApp(parent); + summaryController.flightPathListView(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void airportSummaryButton() { + try { + AirportSummaryController summaryController = (AirportSummaryController) + parent.replaceSceneContent("airport_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } + public void airlineSummaryButton() { + try { + AirlineSummaryController summaryController = (AirlineSummaryController) + parent.replaceSceneContent("airline_summary.fxml"); + summaryController.setApp(parent); + summaryController.loadTables(); + } + catch (Exception e) { + e.printStackTrace(); + } + } } \ No newline at end of file diff --git a/src/main/resources/airline_raw_data.fxml b/src/main/resources/airline_raw_data.fxml index cd8311d..b5829d2 100644 --- a/src/main/resources/airline_raw_data.fxml +++ b/src/main/resources/airline_raw_data.fxml @@ -2,6 +2,7 @@ + @@ -36,55 +37,51 @@ - - - - - - - + + + + + + + - + - + - + - + - + - - - - - - + diff --git a/src/main/resources/airline_summary.fxml b/src/main/resources/airline_summary.fxml index 7d7d55e..13a97f9 100644 --- a/src/main/resources/airline_summary.fxml +++ b/src/main/resources/airline_summary.fxml @@ -1,17 +1,17 @@ - - - - - - - - - - - - + + + + + + + + + + + + @@ -34,16 +34,18 @@ - - - - - - - - - - + + + + + + + + + + + + @@ -54,24 +56,24 @@ - - - - - + + + - - - - - - + + + - - -