From 693acf9b9cdcaff290f1f931a4cbc62cf58ad905 Mon Sep 17 00:00:00 2001 From: YaFedImYaEatIm Date: Fri, 16 Sep 2016 00:03:57 +1200 Subject: [PATCH] Finished Create Link() establishment --- res/userdb.db | Bin 4401152 -> 4401152 bytes .../java/seng202/group9/Controller/App.java | 1 - .../seng202/group9/Controller/Dataset.java | 43 ++++++++++++-- src/main/java/seng202/group9/Core/Route.java | 54 ++++++++++++------ src/test/java/seng202/group9/RouteTest.java | 6 +- 5 files changed, 75 insertions(+), 29 deletions(-) diff --git a/res/userdb.db b/res/userdb.db index b513673f33cba1a49371629e26481828ca76df79..1a5a19f47fd347b8bc40bbed181d9c2b0b88727f 100644 GIT binary patch delta 785 zcmY+=Ur5tY6bJC%xyQ}Yd4K+!Q|EFsbFR!Ro0V>6`A}d5{UPn4@%yp;aMS&v`43-G z!CxW>+C$u)iiGGz36dO?AlQRWg?xzUVHQ>of%F(u_|REN)P)aR&i!%@=MHa7uwgP~ zh0(iZtuQ*G=nCix(-qW}3|%qkicwcGb!CsP?A4VlUCGuJldj}ESNQbukR*AfNeRE< zHl}a`U*R)+g79D1-0E3p`}*bnxJyW)Dzt(dDj*+>(s${rv?;Af3sTLj^zX5um$ikW zo%Xh%8V&{Q7enD%f2eoxk{Z#h?c!;Y*X7FSpiDg0AM1>(fudRQA<5kZ`RGhnyTfWU zV85VtYsJ~3aFzRWOlVEF?CFg~%?n~+m3Q$RwEdpqk43anqu5&IZ4J9MttS{!i`-dg zNhbn*_?Dvs(pN3s6V?VV|H(xL)VLNe0kO5h8)S~iK z81rn(3D0Kk%EvMj>`3?y=kX5uu?0E%%of==^RX(}NjSdbrNHc*?=ZM5;QFtNP@D41 z2KRis!7J1`lO-eluj0{+sd&t{lt=PO0VyPAQba5y{a!*!iItQQ8`($7iJdq|1=&w3 z$pKPDoTQq#$U$<5)R4oZmK-5<dA59CJp2SIY~~DM$$w)#7mmVY0^T@Bz#L} Gr?p=}2nq%O delta 690 zcmXZZPe{{Y7zgn8eIA=R=R39iQRi~5KeN&_YgsnUiVihzg_mf&zuZ`J+i#?&-3NW1JB@_yD&&5JbZYv z`V1c)l1g$VK}l4yK*?=NT9hnQa=Vg6N?MgHR??C-TDKNg461nW$vt7}$y>Q-&G!bsEW7MX?^r3zweGi$?u9F9Nz^ zMO@P}Inktl(7|Z7mP7mIME-^rkw*L zt72}|UQmk7JfsWP?1lxR(8VulbItx-Z*-M9MnmiN`Otc4?vvXJ5r!Xdj{eY%9Vp-n zEW#M*+Rmc3`KE7W78s2zm639?gE)wjxQLrnkV;ZTJfxa<$xc#3e5986$u6>+>>+ze zfYgzFWIs7T>PZ7RNE%5KIYgStVRD27$x+fmj*;V}m7E|U(ni|JNzy@1%}16_PsRQL D=c@7A 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");