diff --git a/res/userdb.db b/res/userdb.db index 4ed4876..52a9ddc 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 99d83be..0426b3d 100644 --- a/src/main/java/seng202/group9/Controller/App.java +++ b/src/main/java/seng202/group9/Controller/App.java @@ -14,6 +14,7 @@ import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; +import seng202.group9.Core.FlightPath; import seng202.group9.GUI.*; /** diff --git a/src/main/java/seng202/group9/Controller/Dataset.java b/src/main/java/seng202/group9/Controller/Dataset.java index e25f782..09e6c94 100644 --- a/src/main/java/seng202/group9/Controller/Dataset.java +++ b/src/main/java/seng202/group9/Controller/Dataset.java @@ -168,7 +168,7 @@ public class Dataset { //get all Flight Path// /////////////////////*/ stmt = c.createStatement(); - String queryFlightPath = "SELECT * FROM `"+this.name+"_Flight_Path` ORDER BY `Index_ID` ASC, `Order` ASC"; + String queryFlightPath = "SELECT * FROM `"+this.name+"_Flight_Path`"; rs = stmt.executeQuery(queryFlightPath); while ( rs.next() ){ //FlightPath(int ID, String departureAirport, String arrivalAirport) @@ -187,7 +187,7 @@ public class Dataset { ///////////////////////*/ for (int i = 0; i < flightPaths.size(); i++){ stmt = c.createStatement(); - String queryFlightPoints = "SELECT * FROM `" + this.name + "_Flight_Points` WHERE `Index_ID` = "+flightPaths.get(i).getID() + " ORDER BY `Order` ASC"; + String queryFlightPoints = "SELECT * FROM `" + this.name + "_Flight_Points` WHERE `Index_ID` = "+flightPaths.get(i).getID() + " ORDER BY `Index_ID` ASC, `Order` ASC"; rs = stmt.executeQuery(queryFlightPoints); while (rs.next()) { //FlightPoint(String name, int ID, int indexID, String type, String via, @@ -1242,10 +1242,34 @@ public class Dataset { String updatePointOrderQuery = ""; FlightPath flightPath = flightPathDictionary.get(Integer.valueOf(id)); for (int i = index + 1; i < flightPath.getFlightPoints().size(); i ++){ - updatePointOrderQuery += "UPDATE `"+this.name+"_Flight_Points` SET `Order` = "+i+" WHERE `Point_ID` = "+flightPath.getFlightPoints().get(i).getID()+";"; + updatePointOrderQuery = "UPDATE `"+this.name+"_Flight_Points` SET `Order` = "+i+" WHERE `Point_ID` = "+flightPath.getFlightPoints().get(i).getID()+";"; + stmt.execute(updatePointOrderQuery); } - stmt.execute(updatePointOrderQuery); stmt.close(); + //if the index is the first or last we need to update the flight + if (index == 0){ + try { + stmt = c.createStatement(); + String query = "UPDATE `"+this.name+"_Flight_Path` SET `Source_Airport` = \""+flightName+"\" " + + "WHERE `Path_ID` = "+flightPath.getID(); + stmt.execute(query); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + } + flightPath.setDepartureAirport(flightName); + }else if (index == flightPath.getFlightPoints().size() - 1){ + try { + stmt = c.createStatement(); + String query = "UPDATE `"+this.name+"_Flight_Path` SET `Destination_Airport` = \""+flightName+"\" " + + "WHERE `Path_ID` = "+flightPath.getID(); + stmt.execute(query); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + } + flightPath.setArrivalAirport(flightName); + } c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); @@ -1925,6 +1949,7 @@ public class Dataset { } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } + flightPath.setDepartureAirport(flightPoint.getName()); }else if (indexOf == flightPath.getFlightPoints().size() - 1){ try { stmt = c.createStatement(); @@ -1935,6 +1960,7 @@ public class Dataset { } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); } + flightPath.setArrivalAirport(flightPoint.getName()); } createDataLinks(); @@ -1942,11 +1968,12 @@ public class Dataset { public void moveFlightPoint(FlightPoint flightPoint, int index) throws DataException { //remove and add it to the arraylist first - FlightPath flightPath = flightPathDictionary.get(flightPoint.getIndexID()); + System.out.println(flightPoint.getIndex()); + FlightPath flightPath = flightPathDictionary.get(flightPoint.getIndex()); int curIndex = flightPath.getFlightPoints().indexOf(flightPoint); flightPath.getFlightPoints().remove(flightPoint); int indexToAdd = index; - if (curIndex > index){ + if (curIndex < index){ indexToAdd --; } flightPath.getFlightPoints().add(indexToAdd, flightPoint); @@ -1959,10 +1986,34 @@ public class Dataset { stmt = c.createStatement(); String updatePointOrderQuery = ""; for (int i = index; i < flightPath.getFlightPoints().size(); i ++){ - updatePointOrderQuery += "UPDATE `"+this.name+"_Flight_Points` SET `Order` = "+i+" WHERE `Point_ID` = "+flightPath.getFlightPoints().get(i).getID()+";"; + updatePointOrderQuery = "UPDATE `"+this.name+"_Flight_Points` SET `Order` = "+i+" WHERE `Point_ID` = "+flightPath.getFlightPoints().get(i).getID()+";"; + stmt.execute(updatePointOrderQuery); } - stmt.execute(updatePointOrderQuery); stmt.close(); + + if (index == 0){ + try { + stmt = c.createStatement(); + String query = "UPDATE `"+this.name+"_Flight_Path` SET `Source_Airport` = \""+flightPoint.getName().replace("\"", "\"\"")+"\" " + + "WHERE `Path_ID` = "+flightPoint.getIndex(); + stmt.execute(query); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + } + flightPath.setDepartureAirport(flightPoint.getName()); + }else if (index == flightPath.getFlightPoints().size() - 1){ + try { + stmt = c.createStatement(); + String query = "UPDATE `"+this.name+"_Flight_Path` SET `Destination_Airport` = \""+flightPoint.getName().replace("\"", "\"\"")+"\" " + + "WHERE `Path_ID` = "+flightPoint.getIndex(); + stmt.execute(query); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + } + flightPath.setArrivalAirport(flightPoint.getName()); + } c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() );