From 37e712f734936b8377614b06e4052069a1a15dda Mon Sep 17 00:00:00 2001 From: Sunguin Peng Date: Sat, 17 Sep 2016 20:33:20 +1200 Subject: [PATCH 1/3] Refactoring bugs fixed again --- res/userdb.db | Bin 4368384 -> 4370432 bytes .../seng202/group9/Controller/Dataset.java | 49 ++++++++++++++---- .../java/seng202/group9/Core/Airport.java | 3 +- .../group9/GUI/AirlineRDController.java | 3 +- .../group9/GUI/AirportRDController.java | 17 ++---- .../seng202/group9/GUI/RouteRDController.java | 23 +++----- src/main/resources/airline_raw_data.fxml | 2 +- src/main/resources/airport_raw_data.fxml | 6 --- 8 files changed, 56 insertions(+), 47 deletions(-) diff --git a/res/userdb.db b/res/userdb.db index 13e6d06760233c8dd7029d8ffe6c077544053f46..e29a483fc9ba2bd33e80d341a861ccc9080dc0c2 100644 GIT binary patch delta 1967 zcma)-e@s(X6vyv9x21g#O8b0Z8P9TC6DpNDTGOGpy zx+!WL1FJs#g+(2cK$ejuebGPGu$X23$2OC(1P!Ljx<}tRM#(c|izW7s~berBF#IWb!+z%dk+aGx;0tiD4h!M#^Oo&-~7cd43+X zo}c6AP~YKa`B~H|-p#vFE4j*5R3AUX&!Cp^)BH4QDL=(ep_X`fjK}bclb_@#QS*2g z?=mp}evMyC=>Q){=@1{%e0RlR+Dac2Gd)0Pk{)26u{t&bZo*!00f31A^j6g4?^fC)8r37$+!O30^w;EsF)^SI8EM|&g1p}y#w+K zu|Db0k1bk~b3`IraNr;Oem~ybHAD~f7=!YsgOaBM=kp3#rG`hv7B?>7CYA!ntmI;m zIPCV+s!h>w7-@<&>7t+8UH3#J6Ujm>n(JQnPyL3a|UveOB#k}Ntw*eFY|BWw%vv26Gml5h+*LMEL6 z)zxh%n%cJ8)QMqfvx2oMl45q*tcg0K-7Z+B>eDuUCG|;cAzh%EZcCG<{37Zm^cKBA z`{;T45j{W~={mZGmQlBA9+Uj)rZMRob^mSYbM1#aQVB2*9Z*f<(puARPz!5mJnbA^ zRi?}=rq`dk3tIn#v_7NKMeh(+%s3YP7yJs}!PjsD2A~Hzpbd7zW>^Q6P!4k;51W~! zf6zPVNq5=z>`NABE$ltEiM`Ie^xO0`)JBi3GD|qv#O&78RVuW7W70<2?!7M|GY}cc zL2{9qh#kp8UO@5@1(}67kOG7wPQ-=GM&=-MkwRo1;zm5kd}IMqgcKts$USS5tGfz!;mO}$oU3-m-ba%d6Z2PdY+Ds%_wwNt-brq{$d%I#aKJ`4DubG;!sa}oq z?JZq?t)(k)R5Vo3(UfsU)z%Av+*o})L%+2JRQE=sVpr_C^C&n{TA&o9v{Wh8M&1$( zR2%CFcqp@x{i-P*m|eA=EO90r0&(Og3Iw9yp0MOvgV9JR90^6yaiY56)Oy^BMFQat z%off{lnO-OJQjx)lUo}iJ3`yH26skwY!5YT)%L{$k^!LYp9elJT{qbJ6ZzVazQBH( zgB|LF>hCqy$Ih~2>{$Az=`En2McVqT5s1mz=!N<~BM_6Wrvv9y;7IamER#IfC@gwu d>;VDx;Mt{YC5>$?& zH6+#8_C(1Q!iP!PMlm6@8r#&E+%#!YYGa!Ep~)pRsU~WG(l7e0CVVi#^g-#{WPZtJ zv$Ol(o&TO#IKxk5&+y4&Z(y9Uyi06-OjT{;f$=Nx3#NtdF&D-eKEycQ#>@CIURRyV z;wMn?WibTPuUgfiBx{)8SzL)jzG(O6@Ji9HS@ePpyPfDD>!4BKKDo5U4CUB zV_eN^sdT?vrTdN15j0ssX}643bhPkhCIdY+!?G;LRj`)-OOTUy4X1p0sbo_9a?c2Y zj}mI|h~d}x25#Wj`7v(8qo;2?9nO|kmd|?)W(&XN({;UTU?_3uXfn{)&=Ffd?%KVF z=FXJ8WDpO@A-T$4^8S9&6=dfbdZa#KzO9Z-m`xnsP0glFHJi@MT;qX0)zcwv@SH*I zHvYlB>K;8foKTH>MRw4pT)D8w@D^rh5Bf2TUcSud`8e<8G46rIwT$y17q5u}{-R8m zQ}}iJpHv;O`t^LO_eU`&u!S90+D);lIkvO+nJm2{BEFyDJGca&!YLSn1F#QXfmYZo zd+&%F^6Y)_jr#4bsN+}-=cKkEUUQy<`@CBPeh|CBlY@T#_X932iZ@-w9;{m{%{}}T zzsDII!y(*{Z5YD3f9tawyq=Rs&~L6UeLWR=Ajk${k$mDK1*DJ^k!MIT@skqrEGZ=$ zNr2d-j66rmNd?(NDoGWoCYwnOsU>yfc~VarNF!+?TS$;>CELh$(o9-ND+!SubFpo|KVh(&V*%| zy0x>ZEfS;dbnj{JN{vlL)Yw$?wBgtV*(a?%DnIx<>RbDGJD#-G@x{%?5|FjYsE}=2 zO4?=cd^C%KwM%U#S|;s0=O$lO#&ENmTwxU!ntS^OlYN0iPmi>(MhevNnP{Hl=~l>w N!@OCYo{JuXzW|g@X4n7# diff --git a/src/main/java/seng202/group9/Controller/Dataset.java b/src/main/java/seng202/group9/Controller/Dataset.java index cb21841..43b19e2 100644 --- a/src/main/java/seng202/group9/Controller/Dataset.java +++ b/src/main/java/seng202/group9/Controller/Dataset.java @@ -1,6 +1,7 @@ package seng202.group9.Controller; +import javafx.scene.chart.PieChart; import seng202.group9.Core.*; import java.sql.Connection; @@ -786,6 +787,15 @@ public class Dataset { */ public void addAirline(String name, String alias, String IATA, String ICAO, String callsign, String country, String active) throws DataException{ Airline airlineToAdd = new Airline(name, alias, IATA, ICAO, callsign, country, active); + if (name.equals("")) { + throw new DataException("You cannot have a blank airline name."); + } + if (alias.length() <= 0) { + throw new DataException("Please insert '\\N' if the airline has no alias."); + } + if (country.equals("")) { + throw new DataException("You cannot have a blank country of origin field."); + } addAirline(airlineToAdd); } @@ -827,6 +837,8 @@ public class Dataset { airlineToAdd.setID(airlineID); airlines.add(airlineToAdd); airlineDictionary.put(airlineToAdd.getName(), airlineToAdd); + stmt.close(); + c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); @@ -837,28 +849,39 @@ public class Dataset { public void addAirport(String name, String city, String country, String IATA_FFA, String ICAO, String latitude, String longitude, String altitude, String timezone, String DST, String olsonTz) throws DataException{ try{ + //System.out.print(name + city + country + IATA_FFA + ICAO + latitude + longitude + altitude + timezone + DST + olsonTz); double latitudeVal = Double.parseDouble(latitude); double longitudeVal = Double.parseDouble(longitude); double altitudeVal = Double.parseDouble(altitude); double timezoneVal = Double.parseDouble(timezone); + if (city.equals("")) { + throw new DataException("You cannot have a blank city name."); + } + if (country.equals("")) { + throw new DataException("You cannot have a blank country name."); + } Airport airportToAdd = new Airport(name, city, country, IATA_FFA, ICAO, latitudeVal, longitudeVal, altitudeVal); City cityToAdd = new City(city, country, timezoneVal, olsonTz); Country countryToAdd = new Country(DST, country); addAirport(airportToAdd); addCity(cityToAdd); addCountry(countryToAdd); + createDataLinks(); }catch (NumberFormatException e){ throw new DataException("Latitude, Longitude, Altitude and Timezone must be numbers"); } } public void addAirport(Airport airportToAdd) throws DataException{ - if (airportToAdd.getIATA_FFA() != "" && airportToAdd.getIATA_FFA().length() != 3){ + if (airportToAdd.getIATA_FFA().length() != 0 && airportToAdd.getIATA_FFA().length() != 3){ throw new DataException("IATA/FFA either empty or 3 letters"); } - if (airportToAdd.getICAO() != "" && airportToAdd.getICAO().length() != 4){ + if (airportToAdd.getICAO().length() != 0 && airportToAdd.getICAO().length() != 4){ throw new DataException("ICAO either empty or 4 letters"); } + if (airportToAdd.getName().equals("")) { + throw new DataException("You cannot have an airport without a name."); + } for (String key : airportDictionary.keySet()){ airportDictionary.get(key).hasDuplicate(airportToAdd); } @@ -876,6 +899,7 @@ public class Dataset { "\""+airportToAdd.getCountryName()+"\", \""+airportToAdd.getIATA_FFA()+"\", \""+airportToAdd.getICAO()+"\", " + ""+airportToAdd.getLatitude()+", "+airportToAdd.getLongitude()+", "+airportToAdd.getAltitude()+");"; stmt.execute(insertAirportQuery); + stmt.close(); //get the airport id stmt = c.createStatement(); String airportIDQuery = "SELECT * FROM `sqlite_sequence` WHERE `name` = \""+this.name+"_Airport\" LIMIT 1;"; @@ -887,11 +911,13 @@ public class Dataset { airportToAdd.setID(airportID); airports.add(airportToAdd); airportDictionary.put(airportToAdd.getName(), airportToAdd); + stmt.close(); + airportIDRes.close(); + c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); } - createDataLinks(); } public void addCity(City city){ @@ -912,6 +938,7 @@ public class Dataset { stmt.close(); cityDictionary.put(city.getName(), city); cities.add(city); + c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); @@ -936,6 +963,7 @@ public class Dataset { stmt.close(); countryDictionary.put(country.getName(), country); countries.add(country); + c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); @@ -1013,6 +1041,8 @@ public class Dataset { //routeAirline + routeSourceAirport + routeArrvAirport + routeCodeShare + routeStops + routeEquip String routeKey = routeToAdd.getAirline() + routeToAdd.getDepartureAirport() + routeToAdd.getArrivalAirport() + routeToAdd.getCode() + routeToAdd.getStops() + routeToAdd.getEquipment(); routeDictionary.put(routeKey, routeToAdd); + stmt.close(); + c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); @@ -1195,19 +1225,19 @@ public class Dataset { //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("\"", "\"\"")+"\""; + " WHERE `"+this.name+"_Airline`.`Country` = \""+airline.getCountryName().replace("\"", "\"\"")+"\""; ResultSet countCountryRes = stmt.executeQuery(countCountry); int countryCount = 0; - while (countCountryRes.next()){ - countryCount += countCountryRes.getInt("COUNT(*)"); + while (countCountryRes.next()) { + countryCount += countCountryRes.getInt("COUNT(*)"); } countCountryRes.close(); stmt.close(); - + stmt = c.createStatement(); //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("\"", "\"\"")+"\""; + " WHERE `"+this.name+"_Airport`.`Country` = \""+airline.getCountryName().replace("\"", "\"\"")+"\""; countCountryRes = stmt.executeQuery(countCountryA); while (countCountryRes.next()){ countryCount += countCountryRes.getInt("COUNT(*)"); @@ -1217,12 +1247,13 @@ public class Dataset { //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()+"\""; + String deleteCountry = "DELETE FROM `"+this.name+"_Country` WHERE `Country_Name` = \""+airline.getCountryName()+"\""; stmt.execute(deleteCountry); stmt.close(); } c.close(); } catch ( Exception e ) { + e.printStackTrace(); System.err.println( e.getClass().getName() + ": " + e.getMessage() ); //System.exit(0); } diff --git a/src/main/java/seng202/group9/Core/Airport.java b/src/main/java/seng202/group9/Core/Airport.java index e4ee64e..b926049 100644 --- a/src/main/java/seng202/group9/Core/Airport.java +++ b/src/main/java/seng202/group9/Core/Airport.java @@ -365,7 +365,8 @@ public class Airport { return distance; } public void hasDuplicate(Airport airport) throws DataException{ - if (!airport.getName().equals("") && airport.getName().equals(this.name)){ + if (airport.getName().equals("") || airport.getName().equals(this.name)){ + //System.out.println(airport.getName() + " "+ this.name); throw new DataException("Airport Name already Exists, Please Choose Another."); } if (!airport.getIATA_FFA().equals("") && airport.getIATA_FFA().equals(this.name)){ diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index c3e1d1d..8a447de 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -64,8 +64,6 @@ public class AirlineRDController extends Controller { private Dataset theDataSet = null; - //Dummy function to test the add button. - //Will edit when ID is added automatically. public void addAirlineSingle() { try { theDataSet.addAirline( @@ -83,6 +81,7 @@ public class AirlineRDController extends Controller { airlCallsignBox.clear(); airlCountryBox.clear(); airlActiveCBox.getSelectionModel().clearSelection(); + airlActiveCBox.setValue("Y"); tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); } catch ( Exception e ) { Alert alert = new Alert(Alert.AlertType.ERROR); diff --git a/src/main/java/seng202/group9/GUI/AirportRDController.java b/src/main/java/seng202/group9/GUI/AirportRDController.java index b96fc36..9ac178e 100644 --- a/src/main/java/seng202/group9/GUI/AirportRDController.java +++ b/src/main/java/seng202/group9/GUI/AirportRDController.java @@ -1,25 +1,15 @@ 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; 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; import seng202.group9.Core.Airport; -import seng202.group9.Core.City; -import seng202.group9.Core.Country; +import static javafx.collections.FXCollections.observableArrayList; /** * Created by Sunguin on 2016/09/13. @@ -116,7 +106,7 @@ public class AirportRDController extends Controller{ airpTzcol.setCellValueFactory(new PropertyValueFactory("Tz")); theDataSet = getParent().getCurrentDataset(); - tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); + tableViewAirportRD.setItems(observableArrayList(theDataSet.getAirports())); airpDSTCBox.setValue("E"); airpDSTCBox.getItems().addAll("E", "A", "S", "O", "Z", "N", "U"); @@ -145,6 +135,7 @@ public class AirportRDController extends Controller{ airpAltitudeBox.clear(); airpTimezoneBox.clear(); airpDSTCBox.getSelectionModel().clearSelection(); + airpDSTCBox.setValue("E"); airpTzBox.clear(); tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); } catch ( Exception e ) { @@ -162,7 +153,7 @@ public class AirportRDController extends Controller{ public void deleteAirport(){ Airport toDelete = tableViewAirportRD.getSelectionModel().getSelectedItem(); theDataSet.deleteAirport(toDelete); - tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); + tableViewAirportRD.setItems(observableArrayList(theDataSet.getAirports())); } public void filterAirports() { diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index b62978a..4f5194a 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -4,16 +4,14 @@ import javafx.collections.FXCollections; 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; - /** + * Controller class for the Routes Raw Data scene. * Created by Sunguin on 2016/09/14. */ public class RouteRDController extends Controller { @@ -64,9 +62,13 @@ public class RouteRDController extends Controller { private TextField rStopsFilter; @FXML private TextField rEquipmentFilter; - @FXML + private Dataset theDataSet = null; + /** + * Adds a single route to the Route database. + * Takes in values written from the GUI. + */ public void addRouteSingle() { try { theDataSet.addRoute( @@ -81,19 +83,13 @@ public class RouteRDController extends Controller { rSourceBox.clear(); rDestBox.clear(); rCodeshareCBox.getSelectionModel().clearSelection(); + rCodeshareCBox.setValue(""); rStopsBox.clear(); rEquipmentBox.clear(); tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); - } 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.setTitle("Route Data Error"); alert.setHeaderText("Error adding a custom route entry."); alert.setContentText(e.getMessage()); alert.showAndWait(); @@ -128,7 +124,6 @@ public class RouteRDController extends Controller { 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) { @@ -146,8 +141,6 @@ public class RouteRDController extends Controller { if (rEquipmentFilter.getText() != null) { filter.filterEquipment(rEquipmentFilter.getText()); } -// System.out.println("Hello"); -// filter.printFilter(); tableViewRouteRD.setItems(FXCollections.observableArrayList(filter.getFilteredData())); } diff --git a/src/main/resources/airline_raw_data.fxml b/src/main/resources/airline_raw_data.fxml index a20c490..f1b276a 100644 --- a/src/main/resources/airline_raw_data.fxml +++ b/src/main/resources/airline_raw_data.fxml @@ -93,7 +93,7 @@