diff --git a/res/userdb.db b/res/userdb.db index b513673..1a5a19f 100644 Binary files a/res/userdb.db and b/res/userdb.db differ diff --git a/src/main/java/seng202/group9/Controller/App.java b/src/main/java/seng202/group9/Controller/App.java index 33c757d..66e46b6 100644 --- a/src/main/java/seng202/group9/Controller/App.java +++ b/src/main/java/seng202/group9/Controller/App.java @@ -83,7 +83,6 @@ public class App extends Application e.printStackTrace(); } - //testing out airport parser try { System.out.println(currentDataset.importAirport("res/Samples/Airports.txt")); diff --git a/src/main/java/seng202/group9/Controller/Dataset.java b/src/main/java/seng202/group9/Controller/Dataset.java index 0e9108d..60a64bd 100644 --- a/src/main/java/seng202/group9/Controller/Dataset.java +++ b/src/main/java/seng202/group9/Controller/Dataset.java @@ -8,6 +8,7 @@ import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; +import java.util.HashMap; import java.util.LinkedHashMap; public class Dataset { @@ -591,13 +592,13 @@ public class Dataset { " `Codeshare`, `Stops`, `Equipment`) VALUES "; int numOfRoutes = 0; for (int i = 0; i < routesToImport.size(); i ++){ - String routeIdentifier = routesToImport.get(i).getAirline() + routesToImport.get(i).departsFrom() + routesToImport.get(i).arrivesAt() + + String routeIdentifier = routesToImport.get(i).getAirlineName() + routesToImport.get(i).departsFrom() + routesToImport.get(i).arrivesAt() + routesToImport.get(i).getCode() + routesToImport.get(i).getStops() + routesToImport.get(i).getEquipment(); if (routeDictionary.containsKey(routeIdentifier)){ numOfDuplicates ++; }else{ //route variables - String routeAirline = routesToImport.get(i).getAirline().replace("\"", "\"\""); + String routeAirline = routesToImport.get(i).getAirlineName().replace("\"", "\"\""); String routeSource = routesToImport.get(i).departsFrom().replace("\"", "\"\""); String routeDestination = routesToImport.get(i).arrivesAt().replace("\"", "\"\""); String routeCode = routesToImport.get(i).getCode().replace("\"", "\"\""); @@ -733,7 +734,37 @@ public class Dataset { */ public void createDataLinks(){ - + //this may be seperated into more sepearate function in the future for time optimisation + //create Airline country link + for (Airline airline: airlines){ + 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){ + airportsByIATA.put(airport.getIATA_FFA(), airport); + airportsByICAO.put(airport.getICAO(), airport); + airport.setCountry(countryDictionary.get(airport.getCountryName())); + //TODO Add City in country (This is extra work). + airport.setCity(cityDictionary.get(airport.getCityName())); + airport.getCity().addAirport(airport); + } + //set Airport variables for route + for (Route route: routes){ + if (route.departsFrom().length() > 3){ + route.setSourceAirport(airportsByICAO.get(route.departsFrom())); + }else{ + route.setSourceAirport(airportsByIATA.get(route.departsFrom())); + } + if (route.arrivesAt().length() > 3){ + route.setDestinationAirport(airportsByICAO.get(route.departsFrom())); + }else{ + route.setDestinationAirport(airportsByIATA.get(route.departsFrom())); + } + route.setAirline(airlineDictionary.get(route.getAirlineName())); + } + System.out.println("Links Made"); } /** @@ -929,7 +960,7 @@ public class Dataset { } public void addRoute(Route routeToAdd) throws DataException{ - if (routeToAdd.getAirline().length() != 2 && routeToAdd.getAirline().length() != 3){ + if (routeToAdd.getAirlineName().length() != 2 && routeToAdd.getAirlineName().length() != 3){ throw new DataException("Airline ICAO code must be 2 or 3 letters."); } if (routeToAdd.departsFrom().length() != 3 && routeToAdd.departsFrom().length() != 4){ @@ -953,7 +984,7 @@ public class Dataset { c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); //add the airline stmt = c.createStatement(); - String airline = routeToAdd.getAirline().replace("\"", "\"\""); + String airline = routeToAdd.getAirlineName().replace("\"", "\"\""); String sourceAir = routeToAdd.departsFrom().replace("\"", "\"\""); String destAir = routeToAdd.arrivesAt().replace("\"", "\"\""); String equipment = routeToAdd.getEquipment().replace("\"", "\"\""); @@ -972,7 +1003,7 @@ public class Dataset { routeToAdd.setID(routeID); routes.add(routeToAdd); //routeAirline + routeSourceAirport + routeArrvAirport + routeCodeShare + routeStops + routeEquip - String routeKey = routeToAdd.getAirline() + routeToAdd.departsFrom() + routeToAdd.arrivesAt() + routeToAdd.getCode() + routeToAdd.getStops() + routeToAdd.getEquipment(); + String routeKey = routeToAdd.getAirlineName() + routeToAdd.departsFrom() + routeToAdd.arrivesAt() + routeToAdd.getCode() + routeToAdd.getStops() + routeToAdd.getEquipment(); routeDictionary.put(routeKey, routeToAdd); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); diff --git a/src/main/java/seng202/group9/Core/Route.java b/src/main/java/seng202/group9/Core/Route.java index 4006d42..70a9d74 100644 --- a/src/main/java/seng202/group9/Core/Route.java +++ b/src/main/java/seng202/group9/Core/Route.java @@ -8,19 +8,20 @@ import seng202.group9.Controller.DataException; * */ public class Route { - private int ID;//this ID is the route id not the airline or airports. + private int ID;//this ID is the route id not the airlineName or airports. private int stops; private String codeShare; private String equipment; - private String airline; + private String airlineName; private String departureAirport; private String arrivalAirport; private Airport sourceAirport; private Airport destinationAirport; + private Airline airline = null; /** * Constructor for pulling from database - * @param airline + * @param airlineName * @param ID * @param departureAirport * @param arrivalAirport @@ -28,34 +29,34 @@ public class Route { * @param stops * @param equipment */ - public Route(int ID, String airline, String departureAirport, String arrivalAirport, - String codeShare, int stops, String equipment){ + public Route(int ID, String airlineName, String departureAirport, String arrivalAirport, + String codeShare, int stops, String equipment){ this.ID = ID; this.stops = stops; this.codeShare = codeShare; this.equipment = equipment; - this.airline = airline; + this.airlineName = airlineName; this.departureAirport = departureAirport; this.arrivalAirport = arrivalAirport; } /** * Constructor for adding - * @param airline + * @param airlineName * @param departureAirport * @param arrivalAirport * @param codeShare * @param stops * @param equipment */ - public Route(String airline, String departureAirport, String arrivalAirport, - String codeShare, int stops, String equipment){ + public Route(String airlineName, String departureAirport, String arrivalAirport, + String codeShare, int stops, String equipment){ //remember to set the id manually later after adding it to the database and grab //the new id value of the route. this.ID = -1; this.stops = stops; this.codeShare = codeShare; this.equipment = equipment; - this.airline = airline; + this.airlineName = airlineName; this.departureAirport = departureAirport; this.arrivalAirport = arrivalAirport; } @@ -102,11 +103,11 @@ public class Route { this.equipment = equipment; } /** - * sets airline that flies this route - * @param airline + * sets airlineName that flies this route + * @param airlineName */ - public void setAirline(String airline) { - this.airline = airline; + public void setAirlineName(String airlineName) { + this.airlineName = airlineName; } /** * returns the id of this route @@ -141,11 +142,11 @@ public class Route { return equipment; } /** - * returns the airline that flies this route + * returns the airlineName that flies this route * @return */ - public String getAirline(){ - return airline; + public String getAirlineName(){ + return airlineName; } /** * returns the source airport of this route @@ -194,12 +195,27 @@ public class Route { this.sourceAirport = sourceAirport; } + /** + * gets Airline clas that is bound to the Airline that flights this route. + * @return + */ + public Airline getAirline() { + return airline; + } + + /** + * sets Airline clas that is bound to the Airline that flights this route. + * @return + */ + public void setAirline(Airline airline) { + this.airline = airline; + } /** * Checks is passed route is a duplicate of the current one if so it throws an DataException */ public void hasDuplicate(Route route) throws DataException{ //routeAirline + routeSourceAirport + routeArrvAirport + routeCodeShare + routeStops + routeEquip - if (route.getAirline().equals(this.airline) && route.departsFrom().equals(this.departureAirport) + if (route.getAirlineName().equals(this.airlineName) && route.departsFrom().equals(this.departureAirport) && route.arrivesAt().equals(this.arrivalAirport) && route.getCode().equals(this.codeShare) && route.getStops() == this.stops && route.getEquipment().equals(this.equipment)){ throw new DataException("This Route already exists."); @@ -208,7 +224,7 @@ public class Route { @Override public String toString(){ - return airline+" flies from "+departureAirport+" to "+arrivalAirport+" on a "+equipment +" stopping "+stops+" amount of times"; + return airlineName +" flies from "+departureAirport+" to "+arrivalAirport+" on a "+equipment +" stopping "+stops+" amount of times"; } } diff --git a/src/test/java/seng202/group9/RouteTest.java b/src/test/java/seng202/group9/RouteTest.java index 91ad35d..c1a6149 100644 --- a/src/test/java/seng202/group9/RouteTest.java +++ b/src/test/java/seng202/group9/RouteTest.java @@ -27,7 +27,7 @@ public class RouteTest extends TestCase { ////////////// //test getters ////////////// - assertEquals(route.getAirline(), "BA"); + assertEquals(route.getAirlineName(), "BA"); assertEquals(route.departsFrom(), "SIN"); assertEquals(route.arrivesAt(), "LHR"); assertEquals(route.getCode(), ""); @@ -35,14 +35,14 @@ public class RouteTest extends TestCase { /////////////// //test setters /////////////// - route.setAirline("BAH"); + route.setAirlineName("BAH"); route.setArrivalAirport("LEFT-HAND-RULE"); route.setDepartureAirport("SING-SONG"); route.setCode("Y"); route.setStops(5); route.setEquipment("747 840"); - assertEquals(route.getAirline(), "BAH"); + assertEquals(route.getAirlineName(), "BAH"); assertEquals(route.departsFrom(), "SING-SONG"); assertEquals(route.arrivesAt(), "LEFT-HAND-RULE"); assertEquals(route.getCode(), "Y");