From c6f5c41b7ddbae5b81cd994934a3914d1e366763 Mon Sep 17 00:00:00 2001 From: Sunguin Peng Date: Thu, 22 Sep 2016 15:44:22 +1200 Subject: [PATCH 01/21] Initial Commit --- res/userdb.db | Bin 8387584 -> 8387584 bytes .../group9/GUI/AirlineRDController.java | 161 ++++++++++------ src/main/resources/airline_add_form.fxml | 82 ++++++++ src/main/resources/airline_filter_form.fxml | 81 ++++++++ src/main/resources/airline_raw_data.fxml | 181 ++++++------------ 5 files changed, 326 insertions(+), 179 deletions(-) create mode 100644 src/main/resources/airline_add_form.fxml create mode 100644 src/main/resources/airline_filter_form.fxml diff --git a/res/userdb.db b/res/userdb.db index 4ed487654814cd8370c1674f904d118286f24358..d91c0228b31a16564dfcfdffcedbde0d859acbf9 100644 GIT binary patch delta 535 zcmWmB$1;Oq7=Y3I5~2i&PJ$3b@4XYf_by(&_g<4MzOiLx#@a2I+)DN?frX9Xu{c+7 zyx+fiFP^NLJlkBF_(X}OBuI%~i9t!Qk`N_EC80{fl!PmZP-0RNsU%8C^t+hfKJ^ye ztKax#{`oMtHM8!;ZgO5edIA>2AQo|mM*2-&iCp9% z9|b5x5sFcQQk0<_6{tiNs!@Yl)S(^?Xhaj5(SlaAp&c%Cpc7r_Mh|+?hkguT5JMQo z2u3l6aZF$mQ<%mKW-*6(EMO6CEJ3i06|7)601wy=#I>|zi5IKUx}aEue2;tc1w W!2it^u5p7~+~FP%eow&TbNm4Wlnzq> delta 531 zcmWN=MNUHj6hP6Ge%y*n3q^{%yB2qM%ER5=%ix76?17{!AZ&%fAFu}|oxwfH@%sO) zUcT8ao_B}a;&~Aji%NisRmD&VR0&cERtZrFRS8oGSBX%GREbiF{uJBCug@5pHhhNP z_VZ=LZ+;uErWwOn#xb4=Ok@(1nZi`s>0lbu>0|~onZ<0nn8RG=F`or2WD$#5!cvy8 zoE5BO6{}gpTGp|i4Qyl+o7uuvwy~WZ?4+Ar>}C&p*~fkkaF9bB<_JeQ#&J$?l2e@K z3}-pVc`k5~OI)UhD-^DBjqBXtCbziF9qw|E`#j(wk9f=zp7M<6yx=9Tc+DH$@{ad> N;3J>DO!L|0{0A?~H_!k8 diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index 12bcef9..c1f8081 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -1,15 +1,26 @@ package seng202.group9.GUI; import javafx.collections.FXCollections; +import javafx.collections.ObservableList; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.Pane; +import javafx.stage.Modality; +import javafx.stage.Stage; +import javafx.stage.StageStyle; import seng202.group9.Controller.AirlineFilter; +import seng202.group9.Controller.App; import seng202.group9.Controller.Dataset; +import seng202.group9.Controller.SceneCode; import seng202.group9.Core.Airline; import javax.swing.*; - +import java.io.IOException; +//make a class for the scenes to get the data I guess /** * The GUI controller class for airline_raw_data.fxml. * Extends from the abstract class {@link Controller}. @@ -20,37 +31,37 @@ public class AirlineRDController extends Controller { @FXML private TableView tableViewAirlineRD; @FXML - private TableColumn airlIDcol; + private TableColumn airlIDCol; @FXML - private TableColumn airlNamecol; + private TableColumn airlNameCol; @FXML - private TableColumn airlAliascol; + private TableColumn airlAliasCol; @FXML - private TableColumn airlIATAcol; + private TableColumn airlIATACol; @FXML - private TableColumn airlICAOcol; + private TableColumn airlICAOCol; @FXML - private TableColumn airlCallsigncol; + private TableColumn airlCallsignCol; @FXML - private TableColumn airlCountrycol; + private TableColumn airlCountryCol; @FXML - private TableColumn airlActivecol; + private TableColumn airlActiveCol; //Setting up text fields for adding data @FXML - private TextField airlNameBox; + private TextField airlNameAdd; @FXML - private TextField airlAliasBox; + private TextField airlAliasAdd; @FXML - private TextField airlIATABox; + private TextField airlIATAAdd; @FXML - private TextField airlICAOBox; + private TextField airlICAOAdd; @FXML - private TextField airlCallsignBox; + private TextField airlCallsignAdd; @FXML - private TextField airlCountryBox; + private TextField airlCountryAdd; @FXML - private ComboBox airlActiveCBox; + private TextField airlActiveAdd; //Setting up text fields for filtering data @FXML @@ -77,22 +88,37 @@ public class AirlineRDController extends Controller { */ public void load() { //Sets up the table columns to be ready for use for Airline data - airlIDcol.setCellValueFactory(new PropertyValueFactory("ID")); - airlNamecol.setCellValueFactory(new PropertyValueFactory("Name")); - airlAliascol.setCellValueFactory(new PropertyValueFactory("Alias")); - airlIATAcol.setCellValueFactory(new PropertyValueFactory("IATA")); - airlICAOcol.setCellValueFactory(new PropertyValueFactory("ICAO")); - airlCallsigncol.setCellValueFactory(new PropertyValueFactory("CallSign")); - airlCountrycol.setCellValueFactory(new PropertyValueFactory("CountryName")); - airlActivecol.setCellValueFactory(new PropertyValueFactory("Active")); + airlIDCol.setCellValueFactory(new PropertyValueFactory("ID")); + airlNameCol.setCellValueFactory(new PropertyValueFactory("Name")); + airlAliasCol.setCellValueFactory(new PropertyValueFactory("Alias")); + airlIATACol.setCellValueFactory(new PropertyValueFactory("IATA")); + airlICAOCol.setCellValueFactory(new PropertyValueFactory("ICAO")); + airlCallsignCol.setCellValueFactory(new PropertyValueFactory("CallSign")); + airlCountryCol.setCellValueFactory(new PropertyValueFactory("CountryName")); + airlActiveCol.setCellValueFactory(new PropertyValueFactory("Active")); //Assigning the Dataset to the current Dataset's airlines and displaying it in a table theDataSet = getParent().getCurrentDataset(); tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + } + + /** + * Opens the Airline add form. + */ + public void openAdd() { + try { + FXMLLoader loader = new FXMLLoader(); + Parent root = loader.load(getClass().getClassLoader().getResource("airline_add_form.fxml")); + Stage filter = new Stage(); + filter.initModality(Modality.APPLICATION_MODAL); + filter.setResizable(false); + filter.setTitle("Add New Airline"); + filter.setScene(new Scene(root, 600, 370)); + filter.show(); + } catch (IOException e) { + e.printStackTrace(); + } - //Initializes the value for the drop-down menu for Active for adding a new Airline - airlActiveCBox.setValue("Y"); - airlActiveCBox.getItems().addAll("Y", "N"); } /** @@ -103,45 +129,35 @@ public class AirlineRDController extends Controller { public void addAirlineSingle() { //Tries to add a new airline and clears the fields to their initial state if successful. //Otherwise an error message will pop up with what is wrong with the manual data. + + //How to get this dataset into here to show data? try { theDataSet.addAirline( - airlNameBox.getText(), - airlAliasBox.getText(), - airlIATABox.getText(), - airlICAOBox.getText(), - airlCallsignBox.getText(), - airlCountryBox.getText(), - airlActiveCBox.getSelectionModel().getSelectedItem().toString()); - airlNameBox.clear(); - airlAliasBox.clear(); - airlIATABox.clear(); - airlICAOBox.clear(); - airlCallsignBox.clear(); - airlCountryBox.clear(); - airlActiveCBox.getSelectionModel().clearSelection(); - airlActiveCBox.setValue("Y"); + airlNameAdd.getText(), + airlAliasAdd.getText(), + airlIATAAdd.getText(), + airlICAOAdd.getText(), + airlCallsignAdd.getText(), + airlCountryAdd.getText(), + airlActiveAdd.getText()); + airlNameAdd.clear(); + airlAliasAdd.clear(); + airlIATAAdd.clear(); + airlICAOAdd.clear(); + airlCallsignAdd.clear(); + airlCountryAdd.clear(); + airlActiveAdd.getText(); tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); - } catch ( Exception e ) { + } catch (Exception e) { Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Airline Data Error"); alert.setHeaderText("Error adding a custom airline entry."); + System.out.println(e); alert.setContentText(e.getMessage()); alert.showAndWait(); } } - /** - * Deletes a single selected airline entry from the database. - * Updates the GUI accordingly. - * @see Dataset - */ - public void deleteAirline() { - //Gets an airline from the table and deletes it before updating the table - Airline toDelete = tableViewAirlineRD.getSelectionModel().getSelectedItem(); - theDataSet.deleteAirline(toDelete); - tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); - } - /** * Filters airlines by any field. * These are specified by what the user has typed in the filter boxes. @@ -150,6 +166,7 @@ public class AirlineRDController extends Controller { */ public void filterAirlines() { //The filter function also operates like a search function + //theDataSet = getParent().getCurrentDataset(); AirlineFilter filter = new AirlineFilter(theDataSet.getAirlines()); if (airlNameFilter.getText() != null) { filter.filterName(airlNameFilter.getText()); @@ -176,6 +193,36 @@ public class AirlineRDController extends Controller { tableViewAirlineRD.setItems(FXCollections.observableArrayList(filter.getFilteredData())); } + /** + * Deletes a single selected airline entry from the database. + * Updates the GUI accordingly. + * @see Dataset + */ + public void deleteAirline() { + //Gets an airline from the table and deletes it before updating the table + Airline toDelete = tableViewAirlineRD.getSelectionModel().getSelectedItem(); + theDataSet.deleteAirline(toDelete); + tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + } + + /** + * Opens the Airline Filter form. + */ + public void openFilter() { + try { + Parent root = FXMLLoader.load(getClass().getResource("/airline_filter_form.fxml")); + final Stage filter = new Stage(); + filter.initModality(Modality.APPLICATION_MODAL); + filter.setResizable(false); + filter.setTitle("Airline Filter"); + filter.setScene(new Scene(root, 600, 370)); + filter.show(); + } catch (IOException e) { + e.printStackTrace(); + } + } + + /** * Analyses the current data and creates a graph based on the data. * Currently not implemented yet. @@ -183,4 +230,8 @@ public class AirlineRDController extends Controller { public void analyse_Button() { JOptionPane.showMessageDialog(null, "This is not Implemented yet"); } + + public void airlineSummaryButton() { + replaceSceneContent(SceneCode.AIRLINE_SUMMARY); + } } diff --git a/src/main/resources/airline_add_form.fxml b/src/main/resources/airline_add_form.fxml new file mode 100644 index 0000000..1a31a01 --- /dev/null +++ b/src/main/resources/airline_add_form.fxml @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + From ab531fdcb1486a0208696a3e737a6662aa58231f Mon Sep 17 00:00:00 2001 From: YaFedImYaEatIm Date: Thu, 22 Sep 2016 16:17:45 +1200 Subject: [PATCH 02/21] Added popup loader and Scene AIRLINE_ADD --- .../seng202/group9/Controller/SceneCode.java | 2 +- .../group9/GUI/AirlineRDController.java | 4 +- .../java/seng202/group9/GUI/Controller.java | 46 +++++++++++++++++++ 3 files changed, 50 insertions(+), 2 deletions(-) diff --git a/src/main/java/seng202/group9/Controller/SceneCode.java b/src/main/java/seng202/group9/Controller/SceneCode.java index de69752..8416430 100644 --- a/src/main/java/seng202/group9/Controller/SceneCode.java +++ b/src/main/java/seng202/group9/Controller/SceneCode.java @@ -9,7 +9,7 @@ public enum SceneCode { AIRPORT_SUMMARY("airport_summary.fxml"), AIRPORT_RAW_DATA("airport_raw_data.fxml"), ROUTE_SUMMARY("routes_summary.fxml"), ROUTE_RAW_DATA("route_raw_data.fxml"), FLIGHT_SUMMARY("flight_data_summary.fxml"), FLIGHT_RAW_DATA("flight_raw_data.fxml"), AIRPORT_ANALYSER("airport_analyser.fxml"), ROUTE_ANALYSER("route_analyser.fxml"), - AIRPORT_DIST_CALC("airport_dist_calc.fxml"); + AIRPORT_DIST_CALC("airport_dist_calc.fxml"), AIRLINE_ADD("airline_add_form.fxml"); private String filePath; diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index c1f8081..0c3f0ab 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -106,6 +106,8 @@ public class AirlineRDController extends Controller { * Opens the Airline add form. */ public void openAdd() { + createPopUpStage(SceneCode.AIRLINE_ADD, 600, 370); +/* try { FXMLLoader loader = new FXMLLoader(); Parent root = loader.load(getClass().getClassLoader().getResource("airline_add_form.fxml")); @@ -117,7 +119,7 @@ public class AirlineRDController extends Controller { filter.show(); } catch (IOException e) { e.printStackTrace(); - } + }*/ } diff --git a/src/main/java/seng202/group9/GUI/Controller.java b/src/main/java/seng202/group9/GUI/Controller.java index 2ba31ce..035865f 100644 --- a/src/main/java/seng202/group9/GUI/Controller.java +++ b/src/main/java/seng202/group9/GUI/Controller.java @@ -1,9 +1,17 @@ package seng202.group9.GUI; +import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.layout.VBox; +import javafx.stage.Modality; +import javafx.stage.Stage; import seng202.group9.Controller.App; import seng202.group9.Controller.SceneCode; +import java.io.IOException; +import java.io.InputStream; import java.net.URL; import java.util.ResourceBundle; @@ -50,6 +58,44 @@ public abstract class Controller implements Initializable{ } } + /** + * Creates a popup window with a specific fxml scene + * @param scene + * @param width + * @param height + */ + public Stage createPopUpStage(SceneCode scene, int width, int height) { + FXMLLoader loader = new FXMLLoader(); + InputStream in = getClass().getClassLoader().getResourceAsStream(scene.getFilePath()); + Parent page = null; + try { + page = loader.load(in); + } catch (IOException e) { + e.printStackTrace(); + } finally { + try { + in.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + //set contorller and call default calls + Controller controller = loader.getController(); + controller.setApp(parent); + controller.load(); + controller.loadOnce(); + //create a new stage to popup + Stage popupStage = new Stage(); + popupStage.initModality(Modality.APPLICATION_MODAL); + //inner layout constraints + VBox container = new VBox(); + container.getChildren().add(page); + Scene popupScene = new Scene(container, width, height); + //show + popupStage.setScene(popupScene); + popupStage.showAndWait(); + return popupStage; + } /** * Functions here will only load once and after the load function. */ From f82cf823d8290bcbb5e0c6a1a6a49f0d4e4a4052 Mon Sep 17 00:00:00 2001 From: Sunguin Peng Date: Thu, 22 Sep 2016 16:21:35 +1200 Subject: [PATCH 03/21] Seperated Controllers --- .../group9/GUI/AirlineAddController.java | 66 ++++++++ .../group9/GUI/AirlineFilterController.java | 69 +++++++++ .../group9/GUI/AirlineRDController.java | 143 ++++-------------- src/main/resources/airline_add_form.fxml | 2 +- src/main/resources/airline_filter_form.fxml | 2 +- 5 files changed, 166 insertions(+), 116 deletions(-) create mode 100644 src/main/java/seng202/group9/GUI/AirlineAddController.java create mode 100644 src/main/java/seng202/group9/GUI/AirlineFilterController.java diff --git a/src/main/java/seng202/group9/GUI/AirlineAddController.java b/src/main/java/seng202/group9/GUI/AirlineAddController.java new file mode 100644 index 0000000..3bbe491 --- /dev/null +++ b/src/main/java/seng202/group9/GUI/AirlineAddController.java @@ -0,0 +1,66 @@ +package seng202.group9.GUI; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.TextField; +import seng202.group9.Controller.Dataset; + +/** + * Created by Sunguin on 2016/09/22. + */ +public class AirlineAddController extends AirlineRDController{ + //Setting up text fields for adding data + @FXML + private TextField airlNameAdd; + @FXML + private TextField airlAliasAdd; + @FXML + private TextField airlIATAAdd; + @FXML + private TextField airlICAOAdd; + @FXML + private TextField airlCallsignAdd; + @FXML + private TextField airlCountryAdd; + @FXML + private TextField airlActiveAdd; + + Dataset theDataSet = null; + + /** + * Adds a single airline entry to the database. + * Takes in values from the GUI the user has typed in. + * @see Dataset + */ + public void addAirlineSingle() { + //Tries to add a new airline and clears the fields to their initial state if successful. + //Otherwise an error message will pop up with what is wrong with the manual data. + + try { + theDataSet.addAirline( + airlNameAdd.getText(), + airlAliasAdd.getText(), + airlIATAAdd.getText(), + airlICAOAdd.getText(), + airlCallsignAdd.getText(), + airlCountryAdd.getText(), + airlActiveAdd.getText()); + airlNameAdd.clear(); + airlAliasAdd.clear(); + airlIATAAdd.clear(); + airlICAOAdd.clear(); + airlCallsignAdd.clear(); + airlCountryAdd.clear(); + airlActiveAdd.getText(); + //setData(theDataSet); + } catch (Exception e) { + Alert alert = new Alert(Alert.AlertType.ERROR); + alert.setTitle("Airline Data Error"); + alert.setHeaderText("Error adding a custom airline entry."); + System.out.println(e); + alert.setContentText(e.getMessage()); + alert.showAndWait(); + } + } +} diff --git a/src/main/java/seng202/group9/GUI/AirlineFilterController.java b/src/main/java/seng202/group9/GUI/AirlineFilterController.java new file mode 100644 index 0000000..6a77efe --- /dev/null +++ b/src/main/java/seng202/group9/GUI/AirlineFilterController.java @@ -0,0 +1,69 @@ +package seng202.group9.GUI; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.TextField; +import seng202.group9.Controller.AirlineFilter; +import seng202.group9.Controller.Dataset; +import seng202.group9.Core.Airline; + +/** + * Created by Sunguin on 2016/09/22. + */ +public class AirlineFilterController extends AirlineRDController{ + + //Setting up text fields for filtering data + @FXML + private TextField airlNameFilter; + @FXML + private TextField airlAliasFilter; + @FXML + private TextField airlIATAFilter; + @FXML + private TextField airlICAOFilter; + @FXML + private TextField airlCallsignFilter; + @FXML + private TextField airlCountryFilter; + @FXML + private TextField airlActiveFilter; + + Dataset theDataSet = null; + + + /** + * Filters airlines by any field. + * These are specified by what the user has typed in the filter boxes. + * Updates the GUI accordingly. + * @see AirlineFilter + */ + public void filterAirlines() { + //System.out.println(getData()); + //The filter function also operates like a search function + //theDataSet = getParent().getCurrentDataset(); + AirlineFilter filter = new AirlineFilter(theDataSet.getAirlines()); + if (airlNameFilter.getText() != null) { + filter.filterName(airlNameFilter.getText()); + } + if (airlAliasFilter.getText() != null) { + filter.filterAlias(airlAliasFilter.getText()); + } + if (airlIATAFilter.getText() != null) { + filter.filterIATA(airlIATAFilter.getText()); + } + if (airlICAOFilter.getText() != null) { + filter.filterICAO(airlICAOFilter.getText()); + } + if (airlCallsignFilter.getText() != null) { + filter.filterCallsign(airlCallsignFilter.getText()); + } + if (airlCountryFilter.getText() != null) { + filter.filterCountry(airlCountryFilter.getText()); + } + if (airlActiveFilter.getText() != null) { + filter.filterActive(airlActiveFilter.getText()); + } + //Sets the data according to the criteria specified by the user. + //setDataL(FXCollections.observableArrayList(filter.getFilteredData())); + } +} diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index c1f8081..949b597 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -47,41 +47,12 @@ public class AirlineRDController extends Controller { @FXML private TableColumn airlActiveCol; - //Setting up text fields for adding data - @FXML - private TextField airlNameAdd; - @FXML - private TextField airlAliasAdd; - @FXML - private TextField airlIATAAdd; - @FXML - private TextField airlICAOAdd; - @FXML - private TextField airlCallsignAdd; - @FXML - private TextField airlCountryAdd; - @FXML - private TextField airlActiveAdd; - - //Setting up text fields for filtering data - @FXML - private TextField airlNameFilter; - @FXML - private TextField airlAliasFilter; - @FXML - private TextField airlIATAFilter; - @FXML - private TextField airlICAOFilter; - @FXML - private TextField airlCallsignFilter; - @FXML - private TextField airlCountryFilter; - @FXML - private TextField airlActiveFilter; //Set an empty Dataset to be assigned later. private Dataset theDataSet = null; + private ObservableList dataL = null; + /** * Loads the initial airline data to the GUI table. * Also sets up the dropdown menu options. @@ -102,6 +73,7 @@ public class AirlineRDController extends Controller { tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); } + /** * Opens the Airline add form. */ @@ -118,80 +90,40 @@ public class AirlineRDController extends Controller { } catch (IOException e) { e.printStackTrace(); } - + tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); } + /** - * Adds a single airline entry to the database. - * Takes in values from the GUI the user has typed in. - * @see Dataset + * Opens the Airline Filter form. */ - public void addAirlineSingle() { - //Tries to add a new airline and clears the fields to their initial state if successful. - //Otherwise an error message will pop up with what is wrong with the manual data. - - //How to get this dataset into here to show data? + public void openFilter() { try { - theDataSet.addAirline( - airlNameAdd.getText(), - airlAliasAdd.getText(), - airlIATAAdd.getText(), - airlICAOAdd.getText(), - airlCallsignAdd.getText(), - airlCountryAdd.getText(), - airlActiveAdd.getText()); - airlNameAdd.clear(); - airlAliasAdd.clear(); - airlIATAAdd.clear(); - airlICAOAdd.clear(); - airlCallsignAdd.clear(); - airlCountryAdd.clear(); - airlActiveAdd.getText(); - tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); - } catch (Exception e) { - Alert alert = new Alert(Alert.AlertType.ERROR); - alert.setTitle("Airline Data Error"); - alert.setHeaderText("Error adding a custom airline entry."); - System.out.println(e); - alert.setContentText(e.getMessage()); - alert.showAndWait(); + Parent root = FXMLLoader.load(getClass().getResource("/airline_filter_form.fxml")); + final Stage filter = new Stage(); + filter.initModality(Modality.APPLICATION_MODAL); + filter.setResizable(false); + filter.setTitle("Airline Filter"); + filter.setScene(new Scene(root, 600, 370)); + filter.show(); + } catch (IOException e) { + e.printStackTrace(); } + tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); } - /** - * Filters airlines by any field. - * These are specified by what the user has typed in the filter boxes. - * Updates the GUI accordingly. - * @see AirlineFilter - */ - public void filterAirlines() { - //The filter function also operates like a search function - //theDataSet = getParent().getCurrentDataset(); - AirlineFilter filter = new AirlineFilter(theDataSet.getAirlines()); - if (airlNameFilter.getText() != null) { - filter.filterName(airlNameFilter.getText()); - } - if (airlAliasFilter.getText() != null) { - filter.filterAlias(airlAliasFilter.getText()); - } - if (airlIATAFilter.getText() != null) { - filter.filterIATA(airlIATAFilter.getText()); - } - if (airlICAOFilter.getText() != null) { - filter.filterICAO(airlICAOFilter.getText()); - } - if (airlCallsignFilter.getText() != null) { - filter.filterCallsign(airlCallsignFilter.getText()); - } - if (airlCountryFilter.getText() != null) { - filter.filterCountry(airlCountryFilter.getText()); - } - if (airlActiveFilter.getText() != null) { - filter.filterActive(airlActiveFilter.getText()); - } - //Sets the data according to the criteria specified by the user. - tableViewAirlineRD.setItems(FXCollections.observableArrayList(filter.getFilteredData())); - } +// public void setData(Dataset data) { +// this.theDataSet = data; +// } +// +// public Dataset getData() { +// return theDataSet; +// } +// +// public void setDataL(ObservableList re) { +// this.dataL = re; +// } + /** * Deletes a single selected airline entry from the database. @@ -205,23 +137,6 @@ public class AirlineRDController extends Controller { tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); } - /** - * Opens the Airline Filter form. - */ - public void openFilter() { - try { - Parent root = FXMLLoader.load(getClass().getResource("/airline_filter_form.fxml")); - final Stage filter = new Stage(); - filter.initModality(Modality.APPLICATION_MODAL); - filter.setResizable(false); - filter.setTitle("Airline Filter"); - filter.setScene(new Scene(root, 600, 370)); - filter.show(); - } catch (IOException e) { - e.printStackTrace(); - } - } - /** * Analyses the current data and creates a graph based on the data. diff --git a/src/main/resources/airline_add_form.fxml b/src/main/resources/airline_add_form.fxml index 1a31a01..8945ab5 100644 --- a/src/main/resources/airline_add_form.fxml +++ b/src/main/resources/airline_add_form.fxml @@ -9,7 +9,7 @@ - + diff --git a/src/main/resources/airline_filter_form.fxml b/src/main/resources/airline_filter_form.fxml index 5005932..49a0ead 100644 --- a/src/main/resources/airline_filter_form.fxml +++ b/src/main/resources/airline_filter_form.fxml @@ -9,7 +9,7 @@ - + From 5e2ba5af903017e0e42f7a7c33b40d71fbb6d518 Mon Sep 17 00:00:00 2001 From: Sunguin Peng Date: Fri, 23 Sep 2016 00:48:12 +1200 Subject: [PATCH 04/21] Remade Raw Data GUI and tried oit some things on Session --- res/userdb.db | Bin 8387584 -> 8387584 bytes .../seng202/group9/Controller/SceneCode.java | 4 +- .../seng202/group9/Controller/Session.java | 7 + .../group9/GUI/AirlineAddController.java | 12 +- .../group9/GUI/AirlineFilterController.java | 15 +- .../group9/GUI/AirlineRDController.java | 45 +--- .../group9/GUI/AirportAddController.java | 85 +++++++ .../group9/GUI/AirportFilterController.java | 88 +++++++ .../group9/GUI/AirportRDController.java | 194 +++----------- .../java/seng202/group9/GUI/Controller.java | 3 +- .../group9/GUI/RouteAddController.java | 65 +++++ .../group9/GUI/RouteFilterController.java | 62 +++++ .../seng202/group9/GUI/RouteRDController.java | 105 +------- src/main/resources/airline_add_form.fxml | 5 +- src/main/resources/airport_add_form.fxml | 113 +++++++++ src/main/resources/airport_filter_form.fxml | 109 ++++++++ src/main/resources/airport_raw_data.fxml | 240 +++++------------- src/main/resources/route_add_form.fxml | 78 ++++++ src/main/resources/route_filter_form.fxml | 74 ++++++ src/main/resources/route_raw_data.fxml | 142 +++++------ 20 files changed, 877 insertions(+), 569 deletions(-) create mode 100644 src/main/java/seng202/group9/GUI/AirportAddController.java create mode 100644 src/main/java/seng202/group9/GUI/AirportFilterController.java create mode 100644 src/main/java/seng202/group9/GUI/RouteAddController.java create mode 100644 src/main/java/seng202/group9/GUI/RouteFilterController.java create mode 100644 src/main/resources/airport_add_form.fxml create mode 100644 src/main/resources/airport_filter_form.fxml create mode 100644 src/main/resources/route_add_form.fxml create mode 100644 src/main/resources/route_filter_form.fxml diff --git a/res/userdb.db b/res/userdb.db index d91c0228b31a16564dfcfdffcedbde0d859acbf9..0ce9c895e567374bfeb211d0189593beed6e8c87 100644 GIT binary patch delta 717 zcmWm8%}>*C9LMplMWATiX6axn>hKBh0l^1+K+%E9bc)XpsN+HVYpD*Dt~#fvBph}z zL{G&#M?>PN@lU~I$qwE%1`}`k=J3k*n|v{^d3-b@;#1pDM0}la^n|M`N|)@5 zqTf**&$wQ}oe?eBg{oeu>Ji9LP=^huM*|w6q6r(Z2^uyd8dmk#NKKiO#)9s(SWmyX zl2s)mscD)SwS?`7lI?iDC|T=g)La=>CDUL{MvKDoY~K-{UlyL@PnE;ZYq7$Q;Lmq8 zRxwuN*a98RFpxkCT9HHwCfcwS+pryJv||T$Vi$H}4?55p8mnDD2b5;HFKGDC+8MMj zH5p-gIsZFi#20FAqonJ)rfR~rN*3+KN-nh*`>-De(2axWK`##BFpl6T`fv=#aRMjN zk5f2}0i40vFqg`Fn^k({1TC3KSx$uU<@}dOkY3Ex*SXR!x59@(4B;Hk;{t|}#YJ2~ z4wrESBe;rdxQ-jRiCeghJGhH`7{z@&z(eFQhH*?_5|8j076fcKn8JGF6Ffx$)0n|C fJjX0N6yf6qUZR9oDC0HWU=DBbE=(`JuTB34C~^bJ delta 547 zcmWO1$xc%N0EOY)UJz%|D}x0UaVQn%2^FV`;!s5#a7OA-p;|#`od-xrPB$)oSG<66 z@9M@UF(z%I@8E)kiJryx0N>2~zi`HA3v!>^`-0rJ+-TH17KLFtQO=jjsnSTMFjXv! z=Ue(`Yf+^Z1(vYT>a5-tSc5IJMYh|DdA z*3?`lQ9ADUGW;i~WRqL1+qT(u+hIFxm+iJaw%7LAemh`2cF+#lVe7RccGQm9aXS%b zlbP?6eop@lMMj(yed3fjE&9b7aaNoY=S5ar5EsROxFiO}WpPDZ71zX&xGrvpo8p$Z zE$)cBVp!Z0BO)j6iwEMNcqH=Tu^1I&q9C4#r=lpHiE%L@o{LE_B}$?!UWk|Cm3S@Q Rh_~XMcrQMPk6)QC{s(8-?@Ryy diff --git a/src/main/java/seng202/group9/Controller/SceneCode.java b/src/main/java/seng202/group9/Controller/SceneCode.java index 8416430..588369c 100644 --- a/src/main/java/seng202/group9/Controller/SceneCode.java +++ b/src/main/java/seng202/group9/Controller/SceneCode.java @@ -9,7 +9,9 @@ public enum SceneCode { AIRPORT_SUMMARY("airport_summary.fxml"), AIRPORT_RAW_DATA("airport_raw_data.fxml"), ROUTE_SUMMARY("routes_summary.fxml"), ROUTE_RAW_DATA("route_raw_data.fxml"), FLIGHT_SUMMARY("flight_data_summary.fxml"), FLIGHT_RAW_DATA("flight_raw_data.fxml"), AIRPORT_ANALYSER("airport_analyser.fxml"), ROUTE_ANALYSER("route_analyser.fxml"), - AIRPORT_DIST_CALC("airport_dist_calc.fxml"), AIRLINE_ADD("airline_add_form.fxml"); + AIRPORT_DIST_CALC("airport_dist_calc.fxml"), AIRLINE_ADD("airline_add_form.fxml"), AIRLINE_FILTER("airline_filter_form.fxml"), + AIRPORT_ADD("airport_add_form.fxml"), AIRPORT_FILTER("airport_filter_form.fxml"), ROUTE_ADD("route_add_form.fxml"), + ROUTE_FILTER("route_filter_form.fxml"); private String filePath; diff --git a/src/main/java/seng202/group9/Controller/Session.java b/src/main/java/seng202/group9/Controller/Session.java index cea2041..ba375a5 100644 --- a/src/main/java/seng202/group9/Controller/Session.java +++ b/src/main/java/seng202/group9/Controller/Session.java @@ -1,5 +1,7 @@ package seng202.group9.Controller; +import javafx.collections.ObservableList; + import java.io.Serializable; /** @@ -8,6 +10,7 @@ import java.io.Serializable; */ public class Session implements Serializable { private SceneCode sceneDisplayed; + private ObservableList filteredAirlines; /** * Constructor for a new session @@ -40,4 +43,8 @@ public class Session implements Serializable { public SceneCode getSceneDisplayed() { return sceneDisplayed; } + +// public void setFilteredAirlines(ObservableList airlines) { +// this.filteredAirlines = airlines; +// } } diff --git a/src/main/java/seng202/group9/GUI/AirlineAddController.java b/src/main/java/seng202/group9/GUI/AirlineAddController.java index 3bbe491..df08e75 100644 --- a/src/main/java/seng202/group9/GUI/AirlineAddController.java +++ b/src/main/java/seng202/group9/GUI/AirlineAddController.java @@ -9,7 +9,7 @@ import seng202.group9.Controller.Dataset; /** * Created by Sunguin on 2016/09/22. */ -public class AirlineAddController extends AirlineRDController{ +public class AirlineAddController extends Controller { //Setting up text fields for adding data @FXML private TextField airlNameAdd; @@ -26,7 +26,7 @@ public class AirlineAddController extends AirlineRDController{ @FXML private TextField airlActiveAdd; - Dataset theDataSet = null; + private Dataset theDataSet = null; /** * Adds a single airline entry to the database. @@ -52,15 +52,17 @@ public class AirlineAddController extends AirlineRDController{ airlICAOAdd.clear(); airlCallsignAdd.clear(); airlCountryAdd.clear(); - airlActiveAdd.getText(); - //setData(theDataSet); + airlActiveAdd.clear(); } catch (Exception e) { Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Airline Data Error"); alert.setHeaderText("Error adding a custom airline entry."); - System.out.println(e); alert.setContentText(e.getMessage()); alert.showAndWait(); } } + + public void load() { + theDataSet = getParent().getCurrentDataset(); + } } diff --git a/src/main/java/seng202/group9/GUI/AirlineFilterController.java b/src/main/java/seng202/group9/GUI/AirlineFilterController.java index 6a77efe..4192699 100644 --- a/src/main/java/seng202/group9/GUI/AirlineFilterController.java +++ b/src/main/java/seng202/group9/GUI/AirlineFilterController.java @@ -1,6 +1,7 @@ package seng202.group9.GUI; import javafx.collections.FXCollections; +import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.TextField; import seng202.group9.Controller.AirlineFilter; @@ -10,7 +11,7 @@ import seng202.group9.Core.Airline; /** * Created by Sunguin on 2016/09/22. */ -public class AirlineFilterController extends AirlineRDController{ +public class AirlineFilterController extends Controller { //Setting up text fields for filtering data @FXML @@ -28,8 +29,7 @@ public class AirlineFilterController extends AirlineRDController{ @FXML private TextField airlActiveFilter; - Dataset theDataSet = null; - + private Dataset theDataSet = null; /** * Filters airlines by any field. @@ -38,9 +38,7 @@ public class AirlineFilterController extends AirlineRDController{ * @see AirlineFilter */ public void filterAirlines() { - //System.out.println(getData()); //The filter function also operates like a search function - //theDataSet = getParent().getCurrentDataset(); AirlineFilter filter = new AirlineFilter(theDataSet.getAirlines()); if (airlNameFilter.getText() != null) { filter.filterName(airlNameFilter.getText()); @@ -63,7 +61,10 @@ public class AirlineFilterController extends AirlineRDController{ if (airlActiveFilter.getText() != null) { filter.filterActive(airlActiveFilter.getText()); } - //Sets the data according to the criteria specified by the user. - //setDataL(FXCollections.observableArrayList(filter.getFilteredData())); + //session.setFilteredAirlines(FXCollections.observableArrayList(filter.getFilteredData())); + } + + public void load() { + theDataSet = getParent().getCurrentDataset(); } } diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index 3273a15..6c47d28 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -79,58 +79,17 @@ public class AirlineRDController extends Controller { */ public void openAdd() { createPopUpStage(SceneCode.AIRLINE_ADD, 600, 370); -/* - try { - FXMLLoader loader = new FXMLLoader(); - Parent root = loader.load(getClass().getClassLoader().getResource("airline_add_form.fxml")); - Stage filter = new Stage(); - filter.initModality(Modality.APPLICATION_MODAL); - filter.setResizable(false); - filter.setTitle("Add New Airline"); - filter.setScene(new Scene(root, 600, 370)); - filter.show(); - } catch (IOException e) { - e.printStackTrace(); - - } tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); - - }*/ - - } - /** * Opens the Airline Filter form. */ public void openFilter() { - try { - Parent root = FXMLLoader.load(getClass().getResource("/airline_filter_form.fxml")); - final Stage filter = new Stage(); - filter.initModality(Modality.APPLICATION_MODAL); - filter.setResizable(false); - filter.setTitle("Airline Filter"); - filter.setScene(new Scene(root, 600, 370)); - filter.show(); - } catch (IOException e) { - e.printStackTrace(); - } - tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + createPopUpStage(SceneCode.AIRLINE_FILTER, 600, 370); + //tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); } -// public void setData(Dataset data) { -// this.theDataSet = data; -// } -// -// public Dataset getData() { -// return theDataSet; -// } -// -// public void setDataL(ObservableList re) { -// this.dataL = re; -// } - /** * Deletes a single selected airline entry from the database. diff --git a/src/main/java/seng202/group9/GUI/AirportAddController.java b/src/main/java/seng202/group9/GUI/AirportAddController.java new file mode 100644 index 0000000..5cca155 --- /dev/null +++ b/src/main/java/seng202/group9/GUI/AirportAddController.java @@ -0,0 +1,85 @@ +package seng202.group9.GUI; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.ComboBox; +import javafx.scene.control.TextField; +import seng202.group9.Controller.Dataset; + +/** + * Created by Sunguin on 2016/09/22. + */ +public class AirportAddController extends Controller { + //Setting up text fields for adding data + @FXML + private TextField airpNameAdd; + @FXML + private TextField airpCityAdd; + @FXML + private TextField airpCountryAdd; + @FXML + private TextField airpIATAFAAAdd; + @FXML + private TextField airpICAOAdd; + @FXML + private TextField airpLatitudeAdd; + @FXML + private TextField airpLongitudeAdd; + @FXML + private TextField airpAltitudeAdd; + @FXML + private TextField airpTimezoneAdd; + @FXML + private TextField airpDSTAdd; + @FXML + private TextField airpTzAdd; + + //Set an empty Dataset to be assigned later + private Dataset theDataSet = null; + + /** + * Adds a single airport entry in the database. + * Takes in values from the GUI the user has typed in. + * @see Dataset + */ + public void addAirportSingle() { + //Tries to add a new airport and clears the fields to their initial state if successful. + //Otherwise an error message will pop up with what is wrong with the manual data. + try { + theDataSet.addAirport( + airpNameAdd.getText(), + airpCityAdd.getText(), + airpCountryAdd.getText(), + airpIATAFAAAdd.getText(), + airpICAOAdd.getText(), + airpLatitudeAdd.getText(), + airpLongitudeAdd.getText(), + airpAltitudeAdd.getText(), + airpTimezoneAdd.getText(), + airpDSTAdd.getText(), + airpTzAdd.getText()); + airpNameAdd.clear(); + airpCityAdd.clear(); + airpCountryAdd.clear(); + airpIATAFAAAdd.clear(); + airpICAOAdd.clear(); + airpLatitudeAdd.clear(); + airpLongitudeAdd.clear(); + airpAltitudeAdd.clear(); + airpTimezoneAdd.clear(); + airpDSTAdd.clear(); + airpTzAdd.clear(); + } catch ( Exception e ) { + Alert alert = new Alert(Alert.AlertType.ERROR); + alert.setTitle("Airport Data Error"); + alert.setHeaderText("Error adding a custom airport entry."); + alert.setContentText(e.getMessage()); + alert.showAndWait(); + } + } + + public void load() { + theDataSet = getParent().getCurrentDataset(); + } +} diff --git a/src/main/java/seng202/group9/GUI/AirportFilterController.java b/src/main/java/seng202/group9/GUI/AirportFilterController.java new file mode 100644 index 0000000..32aad7b --- /dev/null +++ b/src/main/java/seng202/group9/GUI/AirportFilterController.java @@ -0,0 +1,88 @@ +package seng202.group9.GUI; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.TextField; +import seng202.group9.Controller.AirportFilter; +import seng202.group9.Controller.Dataset; +import seng202.group9.Core.Airport; + +/** + * Created by Sunguin on 2016/09/22. + */ +public class AirportFilterController extends Controller { + //Setting up text fields for filtering data + @FXML + private TextField airpNameFilter; + @FXML + private TextField airpCityFilter; + @FXML + private TextField airpCountryFilter; + @FXML + private TextField airpIATAFAAFilter; + @FXML + private TextField airpICAOFilter; + @FXML + private TextField airpLatitudeFilter; + @FXML + private TextField airpLongitudeFilter; + @FXML + private TextField airpAltitudeFilter; + @FXML + private TextField airpTimezoneFilter; + @FXML + private TextField airpDSTFilter; + @FXML + private TextField airpTzFilter; + + //Set an empty Dataset to be assigned later + private Dataset theDataSet = null; + + /** + * Filters the airports table by any field. + * These are specified by what the user has typed in the filter boxes. + * Updates the GUI accordingly. + * @see AirportFilter + */ + public void filterAirports() { + //The filter function also operates like a search function + AirportFilter filter = new AirportFilter(theDataSet.getAirports()); + if (airpNameFilter.getText() != null) { + filter.filterName(airpNameFilter.getText()); + } + if (airpCityFilter.getText() != null) { + filter.filterCity(airpCityFilter.getText()); + } + if (airpCountryFilter.getText() != null) { + filter.filterCountry(airpCountryFilter.getText()); + } + if (airpIATAFAAFilter.getText() != null) { + filter.filterIATA_FFA(airpIATAFAAFilter.getText()); + } + if (airpICAOFilter.getText() != null) { + filter.filterICAO(airpICAOFilter.getText()); + } + if (airpLatitudeFilter.getText() != null) { + filter.filterLatitude(airpLatitudeFilter.getText()); + } + if (airpLongitudeFilter.getText() != null) { + filter.filterLongitude(airpLongitudeFilter.getText()); + } + if (airpAltitudeFilter.getText() != null) { + filter.filterAltitude(airpAltitudeFilter.getText()); + } + if (airpTimezoneFilter.getText() != null) { + filter.filterTimezone(airpTimezoneFilter.getText()); + } + if (airpDSTFilter.getText() != null) { + filter.filterDST(airpDSTFilter.getText()); + } + if (airpTzFilter.getText() != null) { + filter.filterOlson(airpTzFilter.getText()); + } + } + + public void load() { + theDataSet = getParent().getCurrentDataset(); + } +} diff --git a/src/main/java/seng202/group9/GUI/AirportRDController.java b/src/main/java/seng202/group9/GUI/AirportRDController.java index 55b2971..13e14c9 100644 --- a/src/main/java/seng202/group9/GUI/AirportRDController.java +++ b/src/main/java/seng202/group9/GUI/AirportRDController.java @@ -21,77 +21,29 @@ public class AirportRDController extends Controller{ @FXML private TableView tableViewAirportRD; @FXML - private TableColumn airpIDcol; + private TableColumn airpIDCol; @FXML - private TableColumn airpNamecol; + private TableColumn airpNameCol; @FXML - private TableColumn airpCitycol; + private TableColumn airpCityCol; @FXML - private TableColumn airpCountrycol; + private TableColumn airpCountryCol; @FXML - private TableColumn airpIATAFFAcol; + private TableColumn airpIATAFFACol; @FXML - private TableColumn airpICAOcol; + private TableColumn airpICAOCol; @FXML - private TableColumn airpLatitudecol; + private TableColumn airpLatitudeCol; @FXML - private TableColumn airpLongitudecol; + private TableColumn airpLongitudeCol; @FXML - private TableColumn airpAltitudecol; + private TableColumn airpAltitudeCol; @FXML - private TableColumn airpTimezonecol; + private TableColumn airpTimezoneCol; @FXML - private TableColumn airpDSTcol; + private TableColumn airpDSTCol; @FXML - private TableColumn airpTzcol; - - //Setting up text fields for adding data - @FXML - private TextField airpNameBox; - @FXML - private TextField airpCityBox; - @FXML - private TextField airpCountryBox; - @FXML - private TextField airpIATAFFABox; - @FXML - private TextField airpICAOBox; - @FXML - private TextField airpLatitudeBox; - @FXML - private TextField airpLongitudeBox; - @FXML - private TextField airpAltitudeBox; - @FXML - private TextField airpTimezoneBox; - @FXML - private ComboBox airpDSTCBox; - @FXML - private TextField airpTzBox; - - //Setting up text fields for filtering data - @FXML - private TextField airpNameFilter; - @FXML - private TextField airpCityFilter; - @FXML - private TextField airpCountryFilter; - @FXML - private TextField airpIATAFFAFilter; - @FXML - private TextField airpICAOFilter; - @FXML - private TextField airpLatitudeFilter; - @FXML - private TextField airpLongitudeFilter; - @FXML - private TextField airpAltitudeFilter; - @FXML - private TextField airpTimezoneFilter; - @FXML - private TextField airpDSTFilter; - @FXML - private TextField airpTzFilter; + private TableColumn airpTzCol; //Set an empty Dataset to be assigned later private Dataset theDataSet = null; @@ -102,68 +54,31 @@ public class AirportRDController extends Controller{ */ public void load() { //Sets up the table columns to be ready for use for Airport data - airpIDcol.setCellValueFactory(new PropertyValueFactory("ID")); - airpNamecol.setCellValueFactory(new PropertyValueFactory("Name")); - 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")); + airpIDCol.setCellValueFactory(new PropertyValueFactory("ID")); + airpNameCol.setCellValueFactory(new PropertyValueFactory("Name")); + 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")); //Assigning the Dataset to the current Dataset's airports and displaying it in a table theDataSet = getParent().getCurrentDataset(); tableViewAirportRD.setItems(observableArrayList(theDataSet.getAirports())); + } - - airpDSTCBox.setValue("E");//Initializes the value for the drop-down menu for DST for adding a new Airport - airpDSTCBox.getItems().addAll("E", "A", "S", "O", "Z", "N", "U"); + public void openAdd() { + createPopUpStage(SceneCode.AIRPORT_ADD, 600, 480); + tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); } - /** - * Adds a single airport entry in the database. - * Takes in values from the GUI the user has typed in. - * @see Dataset - */ - public void addAirportSingle() { - //Tries to add a new airport and clears the fields to their initial state if successful. - //Otherwise an error message will pop up with what is wrong with the manual data. - try { - theDataSet.addAirport( - airpNameBox.getText(), - airpCityBox.getText(), - airpCountryBox.getText(), - airpIATAFFABox.getText(), - airpICAOBox.getText(), - airpLatitudeBox.getText(), - airpLongitudeBox.getText(), - airpAltitudeBox.getText(), - airpTimezoneBox.getText(), - airpDSTCBox.getSelectionModel().getSelectedItem().toString(), - airpTzBox.getText()); - airpCityBox.clear(); - airpCountryBox.clear(); - airpIATAFFABox.clear(); - airpICAOBox.clear(); - airpLatitudeBox.clear(); - airpLongitudeBox.clear(); - airpAltitudeBox.clear(); - airpTimezoneBox.clear(); - airpDSTCBox.getSelectionModel().clearSelection(); - airpDSTCBox.setValue("E"); - airpTzBox.clear(); - tableViewAirportRD.setItems(FXCollections.observableArrayList(theDataSet.getAirports())); - } catch ( Exception e ) { - Alert alert = new Alert(Alert.AlertType.ERROR); - alert.setTitle("Airport Data Error"); - alert.setHeaderText("Error adding a custom airport entry."); - alert.setContentText(e.getMessage()); - alert.showAndWait(); - } + public void openFilter() { + createPopUpStage(SceneCode.AIRPORT_FILTER, 600, 480); } /** @@ -178,55 +93,14 @@ public class AirportRDController extends Controller{ tableViewAirportRD.setItems(observableArrayList(theDataSet.getAirports())); } - /** - * Filters the airports table by any field. - * These are specified by what the user has typed in the filter boxes. - * Updates the GUI accordingly. - * @see AirportFilter - */ - public void filterAirports() { - //The filter function also operates like a search function - AirportFilter filter = new AirportFilter(theDataSet.getAirports()); - if (airpNameFilter.getText() != null) { - filter.filterName(airpNameFilter.getText()); - } - if (airpCityFilter.getText() != null) { - filter.filterCity(airpCityFilter.getText()); - } - if (airpCountryFilter.getText() != null) { - filter.filterCountry(airpCountryFilter.getText()); - } - if (airpIATAFFAFilter.getText() != null) { - filter.filterIATA_FFA(airpIATAFFAFilter.getText()); - } - if (airpICAOFilter.getText() != null) { - filter.filterICAO(airpICAOFilter.getText()); - } - if (airpLatitudeFilter.getText() != null) { - filter.filterLatitude(airpLatitudeFilter.getText()); - } - if (airpLongitudeFilter.getText() != null) { - filter.filterLongitude(airpLongitudeFilter.getText()); - } - if (airpAltitudeFilter.getText() != null) { - filter.filterAltitude(airpAltitudeFilter.getText()); - } - if (airpTimezoneFilter.getText() != null) { - filter.filterTimezone(airpTimezoneFilter.getText()); - } - if (airpDSTFilter.getText() != null) { - filter.filterDST(airpDSTFilter.getText()); - } - if (airpTzFilter.getText() != null) { - filter.filterOlson(airpTzFilter.getText()); - } - //Sets the data according to the criteria specified by the user - tableViewAirportRD.setItems(FXCollections.observableArrayList(filter.getFilteredData())); - } /** * Analyses the current data and creates a graph based on the data. * @see AirportAnalyser */ public void analyse_Button(){ replaceSceneContent(SceneCode.AIRPORT_ANALYSER);} + + public void airportSummaryButton() { + replaceSceneContent(SceneCode.AIRPORT_SUMMARY); + } } diff --git a/src/main/java/seng202/group9/GUI/Controller.java b/src/main/java/seng202/group9/GUI/Controller.java index 035865f..e7d1869 100644 --- a/src/main/java/seng202/group9/GUI/Controller.java +++ b/src/main/java/seng202/group9/GUI/Controller.java @@ -80,7 +80,7 @@ public abstract class Controller implements Initializable{ } } //set contorller and call default calls - Controller controller = loader.getController(); + Controller controller = (Controller) loader.getController(); controller.setApp(parent); controller.load(); controller.loadOnce(); @@ -96,6 +96,7 @@ public abstract class Controller implements Initializable{ popupStage.showAndWait(); return popupStage; } + /** * Functions here will only load once and after the load function. */ diff --git a/src/main/java/seng202/group9/GUI/RouteAddController.java b/src/main/java/seng202/group9/GUI/RouteAddController.java new file mode 100644 index 0000000..9056f1f --- /dev/null +++ b/src/main/java/seng202/group9/GUI/RouteAddController.java @@ -0,0 +1,65 @@ +package seng202.group9.GUI; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.Alert; +import javafx.scene.control.ComboBox; +import javafx.scene.control.TextField; +import seng202.group9.Controller.Dataset; + +/** + * Created by Sunguin on 2016/09/23. + */ +public class RouteAddController extends Controller { + //Setting up text fields for adding data + @FXML + private TextField rAirlineAdd; + @FXML + private TextField rSourceAdd; + @FXML + private TextField rDestAdd; + @FXML + private TextField rCodeshareAdd; + @FXML + private TextField rStopsAdd; + @FXML + private TextField rEquipmentAdd; + + private Dataset theDataSet = null; + + /** + * Adds a single route entry in the database. + * Takes in values from the GUI the user has typed in. + * @see Dataset + */ + public void addRouteSingle() { + //Tries to add a new route and clears the fields to their initial state if successful. + //Otherwise an error message will pop up with what is wrong with the manual data. + try { + theDataSet.addRoute( + rAirlineAdd.getText(), + rSourceAdd.getText(), + rDestAdd.getText(), + rCodeshareAdd.getText(), + rStopsAdd.getText(), + rEquipmentAdd.getText() + ); + rAirlineAdd.clear(); + rSourceAdd.clear(); + rDestAdd.clear(); + rCodeshareAdd.clear(); + rStopsAdd.clear(); + rEquipmentAdd.clear(); + } catch ( Exception 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(); + } + } + + public void load() { + theDataSet = getParent().getCurrentDataset(); + } +} diff --git a/src/main/java/seng202/group9/GUI/RouteFilterController.java b/src/main/java/seng202/group9/GUI/RouteFilterController.java new file mode 100644 index 0000000..56836fb --- /dev/null +++ b/src/main/java/seng202/group9/GUI/RouteFilterController.java @@ -0,0 +1,62 @@ +package seng202.group9.GUI; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.control.TextField; +import seng202.group9.Controller.Dataset; +import seng202.group9.Controller.RouteFilter; +import seng202.group9.Core.Route; + +/** + * Created by Sunguin on 2016/09/23. + */ +public class RouteFilterController extends Controller { + //Setting up text fields for filtering data + @FXML + private TextField rAirlineFilter; + @FXML + private TextField rSourceFilter; + @FXML + private TextField rDestFilter; + @FXML + private TextField rCodeshareFilter; + @FXML + private TextField rStopsFilter; + @FXML + private TextField rEquipmentFilter; + + private Dataset theDataSet = null; + + /** + * Filters the routes table by any field. + * These are specified by what the user has typed in the filter boxes. + * Updates the GUI accordingly. + * @see RouteFilter + */ + public void filterRoutes(){ + //The filter function also operates like a search function + RouteFilter filter = new RouteFilter(theDataSet.getRoutes()); + if (rAirlineFilter.getText() != null) { + filter.filterAirline(rAirlineFilter.getText()); + } + if (rSourceFilter.getText() != null) { + filter.filterSourceAirport(rSourceFilter.getText()); + } + if (rDestFilter.getText() != null) { + filter.filterDestinationAirport(rDestFilter.getText()); + } + if (rCodeshareFilter.getText() != null) { + filter.filterCodeshare(rCodeshareFilter.getText()); + } + if (rStopsFilter.getText() != null) { + filter.filterDestinationStops(rStopsFilter.getText()); + } + if (rEquipmentFilter.getText() != null) { + filter.filterEquipment(rEquipmentFilter.getText()); + } + } + + public void load() { + theDataSet = getParent().getCurrentDataset(); + } +} diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index a9ce868..accf21b 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -37,34 +37,6 @@ public class RouteRDController extends Controller { @FXML private TableColumn rEquipmentCol; - //Setting up text fields for adding data - @FXML - private TextField rAirlineBox; - @FXML - private TextField rSourceBox; - @FXML - private TextField rDestBox; - @FXML - private ComboBox rCodeshareCBox; - @FXML - private TextField rStopsBox; - @FXML - private TextField rEquipmentBox; - - //Setting up text fields for filtering data - @FXML - private TextField rAirlineFilter; - @FXML - private TextField rSourceFilter; - @FXML - private TextField rDestFilter; - @FXML - private TextField rCodeshareFilter; - @FXML - private TextField rStopsFilter; - @FXML - private TextField rEquipmentFilter; - //Set an empty Dataset to be assigned later private Dataset theDataSet = null; @@ -87,44 +59,15 @@ public class RouteRDController extends Controller { //Assigning the Dataset to the current Dataset's routes and displaying it in a table theDataSet = getParent().getCurrentDataset(); tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); + } - //Initializes the value for the drop-down menu for Codeshare for adding a new Route - rCodeshareCBox.setValue(""); - rCodeshareCBox.getItems().addAll("Y", ""); + public void openAdd() { + createPopUpStage(SceneCode.ROUTE_ADD, 600, 330); + tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); } - /** - * Adds a single route entry in the database. - * Takes in values from the GUI the user has typed in. - * @see Dataset - */ - public void addRouteSingle() { - //Tries to add a new route and clears the fields to their initial state if successful. - //Otherwise an error message will pop up with what is wrong with the manual data. - try { - theDataSet.addRoute( - rAirlineBox.getText(), - rSourceBox.getText(), - rDestBox.getText(), - rCodeshareCBox.getSelectionModel().getSelectedItem().toString(), - rStopsBox.getText(), - rEquipmentBox.getText() - ); - rAirlineBox.clear(); - rSourceBox.clear(); - rDestBox.clear(); - rCodeshareCBox.getSelectionModel().clearSelection(); - rCodeshareCBox.setValue(""); - rStopsBox.clear(); - rEquipmentBox.clear(); - tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); - } catch ( Exception 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(); - } + public void openFilter() { + createPopUpStage(SceneCode.ROUTE_FILTER, 600, 330); } /** @@ -132,43 +75,13 @@ public class RouteRDController extends Controller { * Updates the GUI accordingly. * @see Dataset */ - public void deleteRoute(){ + public void deleteRoute() { //Gets a route from the table and deletes it before updating the table Route toDelete = tableViewRouteRD.getSelectionModel().getSelectedItem(); theDataSet.deleteRoute(toDelete); tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); } - /** - * Filters the routes table by any field. - * These are specified by what the user has typed in the filter boxes. - * Updates the GUI accordingly. - * @see RouteFilter - */ - public void filterRoutes(){ - //The filter function also operates like a search function - RouteFilter filter = new RouteFilter(theDataSet.getRoutes()); - if (rAirlineFilter.getText() != null) { - filter.filterAirline(rAirlineFilter.getText()); - } - if (rSourceFilter.getText() != null) { - filter.filterSourceAirport(rSourceFilter.getText()); - } - if (rDestFilter.getText() != null) { - filter.filterDestinationAirport(rDestFilter.getText()); - } - if (rCodeshareFilter.getText() != null) { - filter.filterCodeshare(rCodeshareFilter.getText()); - } - if (rStopsFilter.getText() != null) { - filter.filterDestinationStops(rStopsFilter.getText()); - } - if (rEquipmentFilter.getText() != null) { - filter.filterEquipment(rEquipmentFilter.getText()); - } - //Sets the data according to the criteria specified by the user - tableViewRouteRD.setItems(FXCollections.observableArrayList(filter.getFilteredData())); - } /** * Analyses the current data and creates a graph based on the data. @@ -177,4 +90,8 @@ public class RouteRDController extends Controller { public void analyse_Button() { replaceSceneContent(SceneCode.ROUTE_ANALYSER); } + + public void routeSummaryButton() { + replaceSceneContent(SceneCode.ROUTE_SUMMARY); + } } diff --git a/src/main/resources/airline_add_form.fxml b/src/main/resources/airline_add_form.fxml index 8945ab5..59a34e0 100644 --- a/src/main/resources/airline_add_form.fxml +++ b/src/main/resources/airline_add_form.fxml @@ -77,6 +77,9 @@ - diff --git a/src/main/resources/airport_add_form.fxml b/src/main/resources/airport_add_form.fxml new file mode 100644 index 0000000..420ffb2 --- /dev/null +++ b/src/main/resources/airport_add_form.fxml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + diff --git a/src/main/resources/route_add_form.fxml b/src/main/resources/route_add_form.fxml new file mode 100644 index 0000000..fd6cc58 --- /dev/null +++ b/src/main/resources/route_add_form.fxml @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + From e19c59d66b7ab88b21fccb51814ee562ab7568a2 Mon Sep 17 00:00:00 2001 From: YaFedImYaEatIm Date: Fri, 23 Sep 2016 09:45:33 +1200 Subject: [PATCH 05/21] Initial Point Ordering Commit --- .../seng202/group9/Controller/Dataset.java | 52 ++++++++++++++++--- 1 file changed, 45 insertions(+), 7 deletions(-) diff --git a/src/main/java/seng202/group9/Controller/Dataset.java b/src/main/java/seng202/group9/Controller/Dataset.java index 00b9277..e25f782 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`"; + String queryFlightPath = "SELECT * FROM `"+this.name+"_Flight_Path` ORDER BY `Index_ID` ASC, `Order` ASC"; rs = stmt.executeQuery(queryFlightPath); while ( rs.next() ){ //FlightPath(int ID, String departureAirport, String arrivalAirport) @@ -690,7 +690,7 @@ public class Dataset { flightPathToAdd.setID(flightPathId); //ADDED String insertFlightPointQuery = "INSERT INTO `" + this.name + "_Flight_Points` (`Index_ID`, `Name`, `Type`," + - " `Altitude`, `Latitude`, `Longitude`) VALUES "; + " `Altitude`, `Latitude`, `Longitude`, `Order`) VALUES "; int numOfFlights = 0; for (int i = 0; i < flightPointsToImport.size(); i ++){ String flightPointIdentifier = flightPointsToImport.get(i).getType() + flightPointsToImport.get(i).getName() + @@ -707,7 +707,7 @@ public class Dataset { insertFlightPointQuery += ","; } insertFlightPointQuery += "(" + flightPathId +", \""+ flightName +"\", \"" + flightType + "\", "+ flightAltitude + ", " + - "" + flightLatitude + ", " + flightLongitude + ")"; + "" + flightLatitude + ", " + flightLongitude + ", "+numOfFlights+")"; flightPointsToImport.get(i).setID(nextID); flightPointsToImport.get(i).setIndexID(flightPathId); //add data to dataset array. @@ -1229,16 +1229,24 @@ public class Dataset { stmt = c.createStatement(); String insertFlightPointQuery = "INSERT INTO `" + this.name + "_Flight_Points` (`Index_ID`, `Name`, `Type`," + - " `Altitude`, `Latitude`, `Longitude`, `Heading`, `Tot_Dist`, `Leg_Dist`, `Via`) VALUES "; + " `Altitude`, `Latitude`, `Longitude`, `Heading`, `Tot_Dist`, `Leg_Dist`, `Via`, `Order`) VALUES "; String flightType = type.replace("\"", "\"\""); String flightName = name.replace("\"", "\"\""); insertFlightPointQuery += "(" + id +", \""+ flightName +"\", \"" + flightType + "\", "+ altitudeVal + ", " + "" + latitudeVal + ", " + longitudeVal + ", " + headingVal + ", " + totalDistVal + ", " + legDistVal + - ", \"" + via + "\")"; + ", \"" + via + "\", "+index+")"; stmt.execute(insertFlightPointQuery); stmt.close(); - - + //move all the points after this forward + stmt = c.createStatement(); + 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()+";"; + } + stmt.execute(updatePointOrderQuery); + stmt.close(); + c.close(); } catch ( Exception e ) { System.err.println( e.getClass().getName() + ": " + e.getMessage() ); System.exit(0); @@ -1931,4 +1939,34 @@ public class Dataset { createDataLinks(); } + + public void moveFlightPoint(FlightPoint flightPoint, int index) throws DataException { + //remove and add it to the arraylist first + FlightPath flightPath = flightPathDictionary.get(flightPoint.getIndexID()); + int curIndex = flightPath.getFlightPoints().indexOf(flightPoint); + flightPath.getFlightPoints().remove(flightPoint); + int indexToAdd = index; + if (curIndex > index){ + indexToAdd --; + } + flightPath.getFlightPoints().add(indexToAdd, flightPoint); + + Connection c = null; + Statement stmt; + try { + c = DriverManager.getConnection("jdbc:sqlite:res/userdb.db"); + //move all the points after this forward + 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()+";"; + } + stmt.execute(updatePointOrderQuery); + stmt.close(); + c.close(); + } catch ( Exception e ) { + System.err.println( e.getClass().getName() + ": " + e.getMessage() ); + System.exit(0); + } + } } From ed15c2bd761fe61992673aab5df936480b2f1a09 Mon Sep 17 00:00:00 2001 From: YaFedImYaEatIm Date: Fri, 23 Sep 2016 10:16:56 +1200 Subject: [PATCH 06/21] Added Change Path Source and Destination Airports on changing the first or last entry in the flight points --- res/userdb.db | Bin 8387584 -> 8387584 bytes .../java/seng202/group9/Controller/App.java | 1 + .../seng202/group9/Controller/Dataset.java | 67 +++++++++++++++--- 3 files changed, 60 insertions(+), 8 deletions(-) diff --git a/res/userdb.db b/res/userdb.db index 4ed487654814cd8370c1674f904d118286f24358..52a9ddc9252c8c7337f24c2149ae15435fe52550 100644 GIT binary patch delta 3062 zcmeHJYfKbZ6rQ0= zm0k&U<>D`bgfjXCR_`AcAKg43t5~ z;KSg{;K$(45Wo<~5X2D75W+BvVKzf3Ll{FigBmMxXdpr_W*DfB)9cHemZBQF-5$ts z98d3Y^q!jbE!uZ0$Y%wmJ`?m9`weu{G3uo0)Sp}?17t6$C(DQ*|2_W!ukcQOF|Xr( z;0Cz8oXeAT!Y_HX;0WOjTm;8a&d-m9wp(pgjsmO9y*@G=9Tyk$*=z5LbqQ7WTbt_i zW_t)9F-7Ycw&|n0B85tA2y026RO$_pkeb|co4+o)GTu5~`K2ymVZ|dYuRcz4luEWq z?H{76r{V_2o(MPFw9m0v%c{#O)r^+(f7)j1Hj3;2RHVDN&x8r(A&=rsr0;Q6=uO$7 zLYbC!SW8Q--jtUAl5}C;+@oSc)tvjfGbd*!m4@(PQ%`lQLT_xHC6s7G6iX#lh29XE z*EX=LMQk)IV^?~JP^{J3%1iRAz1plBp6at%Tg1lv){)USxnNd&jtzFYeT6)&*0aE_ zH?8!Ew>+ka+D=s^?hfzVAMjv2w4M`Ba*%Gxy z1E{5lbpzisoIk7#?sWT$%{|+0+{@gbkQ2h|)%WPH%KWK1GLp?PoPTO<<`>0{mh zKc2pf|2lo$qn4zhQH!}hh2PQb-eMkdZ%KA>}g*U;J16L3*AZ zp`Fx5j;OclY+d|nVYy}-kQtn5jyYYk`pAScWk(Ckv>|42CZmw1)lN7`m!2HqQl|JL zk%}GVdFn#L`=4Cu2$rgU;zVcH8(G7r(+Dvy(Wdc4pd9VG- z?W|$3c6{j0NMcc#jtNsI+-YL@@x*iUL9(HhGMe)>a0{0{N?Ns3@=tbZ5K)lsnvRV$CFKAu|mc)`XfeX&lOf`X}gqbE%9#q&$I7KA*6e1rmoLWCj&E5cfYVuTWeQiL*uas(Sf1wti) z9l?Q6g;0%9gCHZ+A~+G&A=Dwb5Y{8qBQzj1A~Yd9i|`ymGr|UhjR-9WtqAN0n-JO% vo=12AVKc%OgsliKBD5oPAiRX|GQu{5?Fc&%UO{*jp%Y;z!mbaYtAFfo3%?O! delta 2596 zcmeH|YfKbZ6vyw(U04?6;V$C>i%=BTSy4b+o<*2pc`7Um3&=xYfr5C71q-d(LfxoG zlE$_2DDz5kv0pX-`_LS2kr6Ia_8ZslrEIzJB#*+=Lfbc|l21N0-hkLK`a=D$ax^qY^w z>(l-PNr%tqzv2^kcVCqdtR=1xZ<@f({RoK^yy$veXH!S#>W;dc*6rI`I_vE9oh|zZ z3_Sw|j=?i1L&NZ5cr&yNABK+M%kX0?VfZrw7=er+#!`l!q4WwK954t{vXRpeL9kU> z^R_q~4qrkDM;{aVcoBB~(XzWeS+g>kQk~9guIDVf`nu>Wb<#Ad=kM^}@*na$`CNWE z_kg?1ea7wPY@C^+WR#pFJ?{7+ttCY?`s<9uKnNvTEg_Dw!pyRq{0eelWZ2*pF;qO| zlB!Rg>>6KpS6rs5bnmbWra-gcuQM#%?*8RhOK6}Ntgh7EvY0kR8J>w8TSzV~lEMR$gEd4d+(OgZ0WQ6lnuJmi`lYbkXi&LCawzf*DYPxi|i;bDp7nSU75L{ zsXie&&xCDU*E1~!sP8>L*U(=rPBF1jT%r3#_D^QoDn+RwX3yCRA0IONsy()q2%)uRol4v+m)f#2m90zHXHSez?2#HS z_q%R3#jo;FIdoKd97@y2@26(8N)6)|!#gbxMXhQ#?z<&|sYdixiS~lB+^1&b@4tJ0 ztN5qXSnlV%|Fv_4*Fq()yb=XPHjf$Wz1!)dmB+|2QL|8^JQZ*VroAFniRH2_>**5N z34fi9`{bI`6yqH|78f4PdyMdNZ=E%d8R2?|vxg6U)9vz+ntFFl&7>TS=KOVn@<4s& zs+0i9_R`_(bDL7GbOlLGeT3+KFe-V9q_ID$MjwyphxpdYzu4?>-Nt65Z#4 z^bFbmE0A^naUgppt*Zwotz!RLuDi$8E)KfdEv~lyR?CgS8*42h{X%ow5)$mg4-xtk zJdTx` z)uT&SFXr0CFjb}7`J08EQlV<`5EIvkAu7=!XXY1pdIlK|{&;VT|0NQqF)pN zVGTkI!dirN2(bup2=NH(5jG&ai0~3Z0zx7}5<)UU3PLKv%Lr)*8xhhGG7uyL86gwF zijaknjgW(oi;#zqkFW`0GeQAEA%YE|2*Hj}j8KB$Kqy5hLnuesf>41_iBN@5jj$D= z2B8+A4#9~~kI;b7i0}$R6GAh>HiQ<0?Fh`ms|c+KI}lz&XhUd6*op8uLI*-8!W#&0 bBJ4ugjj#vdErhobx)8b%-Z>3>`)B_KSktaF 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() ); From ac7a4514d0d10dde62802e3e881415fa50e86a16 Mon Sep 17 00:00:00 2001 From: Sunguin Peng Date: Fri, 23 Sep 2016 10:29:25 +1200 Subject: [PATCH 07/21] Updated add and filter for airlines. Working on serialisable file --- res/userdb.db | Bin 8387584 -> 8387584 bytes .../java/seng202/group9/Controller/App.java | 10 +++++- .../seng202/group9/Controller/Session.java | 14 +++++--- .../group9/GUI/AirlineAddController.java | 15 ++++++++ .../group9/GUI/AirlineFilterController.java | 32 +++++++++++++++++- .../group9/GUI/AirlineRDController.java | 13 +++---- src/main/resources/airline_add_form.fxml | 2 +- src/main/resources/airline_filter_form.fxml | 2 +- 8 files changed, 72 insertions(+), 16 deletions(-) diff --git a/res/userdb.db b/res/userdb.db index 0ce9c895e567374bfeb211d0189593beed6e8c87..1222444fa8476463644b88670b5f83ef38094555 100644 GIT binary patch delta 647 zcmW;HM>7Kf7>Dsqq7zvbLA0pRd+(wrLiFBuqea;bt25)^%E^omVa6$+#UV2eK7fOR z8xJ$@Z{|Hbm;deekLeZPLi_!4d2!WUPxkXCFqn=>u4qHBt#>ar^9s_xqgtosyMQRTqd=A1_m z1c&{_O>8H&SxEjW`TuykXL{GPQ_T~6{t|aTVqI2Oq{(Qsx~=Ye@ht&~kdTCAq`-<) zq#+$PWFQk+$VLwA$VDFVQGh}e!GU6wpcG{&M+GWTg=*BG7Immc0~*nUX0)IcZD>aa zI?;u0^uUQ;^r0UE7{m~U;lkhE5qL0)F?cbK2~1)N)0n|5<}i;1EMf`ESivgRu#OFE sLWTk#wy=#I>|zgo?Bf83ID!fd0UYB5I!uad9=^9fzlK{pD0=aj+M^dQ>pn?uy9-M9K}nAg7!Zmugd+lxFd_=kh=B>QFb9H? zW$fMH)2;f;CuS>Km1mn#CtFP>lVWxVrz$*7m#PVm<3D!gdBCVsWUkeGA{?qya|u=R z3e}~#z4pM?Vh=+s($VfyIl3_&(6r>^z>BvAPvXG4&d3kq73DzKqabBjT+RV4)th2Bbv~R7PO)b?dU)!y3mat^r8>_7=R6f7{V|{Fp4pZ zV*-A`wuxg0dD{R diff --git a/src/main/java/seng202/group9/Controller/App.java b/src/main/java/seng202/group9/Controller/App.java index 99d83be..a04c6f2 100644 --- a/src/main/java/seng202/group9/Controller/App.java +++ b/src/main/java/seng202/group9/Controller/App.java @@ -131,8 +131,16 @@ public class App extends Application return (Initializable) loader.getController(); } + /** + * Gets the current session. + * @return + */ + public Session getSession() { + return this.session; + } + /** - * Returns the Menu COntroller of the App. + * Returns the Menu Controller of the App. * @return */ public MenuController getMenuController() { diff --git a/src/main/java/seng202/group9/Controller/Session.java b/src/main/java/seng202/group9/Controller/Session.java index ba375a5..1f769d2 100644 --- a/src/main/java/seng202/group9/Controller/Session.java +++ b/src/main/java/seng202/group9/Controller/Session.java @@ -1,8 +1,10 @@ package seng202.group9.Controller; import javafx.collections.ObservableList; +import seng202.group9.Core.Airline; import java.io.Serializable; +import java.util.HashMap; /** * Created by fwy13 on 16/09/16. @@ -10,7 +12,7 @@ import java.io.Serializable; */ public class Session implements Serializable { private SceneCode sceneDisplayed; - private ObservableList filteredAirlines; + private HashMap filteredAirlines; /** * Constructor for a new session @@ -44,7 +46,11 @@ public class Session implements Serializable { return sceneDisplayed; } -// public void setFilteredAirlines(ObservableList airlines) { -// this.filteredAirlines = airlines; -// } + public void setFilteredAirlines(HashMap airlines) { + this.filteredAirlines = airlines; + } + + public HashMap getFilteredAirlines() { + return filteredAirlines; + } } diff --git a/src/main/java/seng202/group9/GUI/AirlineAddController.java b/src/main/java/seng202/group9/GUI/AirlineAddController.java index df08e75..8d08691 100644 --- a/src/main/java/seng202/group9/GUI/AirlineAddController.java +++ b/src/main/java/seng202/group9/GUI/AirlineAddController.java @@ -3,7 +3,9 @@ package seng202.group9.GUI; import javafx.collections.FXCollections; import javafx.fxml.FXML; import javafx.scene.control.Alert; +import javafx.scene.control.Button; import javafx.scene.control.TextField; +import javafx.stage.Stage; import seng202.group9.Controller.Dataset; /** @@ -25,6 +27,8 @@ public class AirlineAddController extends Controller { private TextField airlCountryAdd; @FXML private TextField airlActiveAdd; + @FXML + private Button addButton; private Dataset theDataSet = null; @@ -53,6 +57,16 @@ public class AirlineAddController extends Controller { airlCallsignAdd.clear(); airlCountryAdd.clear(); airlActiveAdd.clear(); + + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setTitle("Airline Add Successful"); + alert.setHeaderText("New Airline added!"); + alert.setContentText("Your new airline has been successfully added into the database."); + alert.showAndWait(); + + Stage stage = (Stage) addButton.getScene().getWindow(); + stage.close(); + } catch (Exception e) { Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle("Airline Data Error"); @@ -60,6 +74,7 @@ public class AirlineAddController extends Controller { alert.setContentText(e.getMessage()); alert.showAndWait(); } + } public void load() { diff --git a/src/main/java/seng202/group9/GUI/AirlineFilterController.java b/src/main/java/seng202/group9/GUI/AirlineFilterController.java index 4192699..7c516b7 100644 --- a/src/main/java/seng202/group9/GUI/AirlineFilterController.java +++ b/src/main/java/seng202/group9/GUI/AirlineFilterController.java @@ -3,11 +3,19 @@ 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.Button; import javafx.scene.control.TextField; +import javafx.stage.Stage; import seng202.group9.Controller.AirlineFilter; import seng202.group9.Controller.Dataset; +import seng202.group9.Controller.Session; import seng202.group9.Core.Airline; +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; + /** * Created by Sunguin on 2016/09/22. */ @@ -28,8 +36,11 @@ public class AirlineFilterController extends Controller { private TextField airlCountryFilter; @FXML private TextField airlActiveFilter; + @FXML + private Button applyButton; private Dataset theDataSet = null; + private Session currentSession = null; /** * Filters airlines by any field. @@ -61,10 +72,29 @@ public class AirlineFilterController extends Controller { if (airlActiveFilter.getText() != null) { filter.filterActive(airlActiveFilter.getText()); } - //session.setFilteredAirlines(FXCollections.observableArrayList(filter.getFilteredData())); + + Alert alert = new Alert(Alert.AlertType.INFORMATION); + alert.setTitle("Airline Filter Successful"); + alert.setHeaderText("Airline data filtered!"); + alert.setContentText("Your airline data has been successfully filtered."); + alert.showAndWait(); + + //currentSession.setFilteredAirlines(FXCollections.observableArrayList(filter.getFilteredData())); + + HashMap airlinesHM = new HashMap(); + ArrayList airlines = filter.getFilteredData(); + for (Airline airline: airlines) { + airlinesHM.put(airline.getName(), airline); + } + currentSession.setFilteredAirlines(airlinesHM); + + Stage stage = (Stage) applyButton.getScene().getWindow(); + stage.close(); + } public void load() { theDataSet = getParent().getCurrentDataset(); + currentSession = getParent().getSession(); } } diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index 6c47d28..06036e9 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -12,10 +12,7 @@ import javafx.scene.layout.Pane; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.StageStyle; -import seng202.group9.Controller.AirlineFilter; -import seng202.group9.Controller.App; -import seng202.group9.Controller.Dataset; -import seng202.group9.Controller.SceneCode; +import seng202.group9.Controller.*; import seng202.group9.Core.Airline; import javax.swing.*; @@ -47,11 +44,9 @@ public class AirlineRDController extends Controller { @FXML private TableColumn airlActiveCol; - //Set an empty Dataset to be assigned later. private Dataset theDataSet = null; - - private ObservableList dataL = null; + private Session currentSession = null; /** * Loads the initial airline data to the GUI table. @@ -71,6 +66,8 @@ public class AirlineRDController extends Controller { //Assigning the Dataset to the current Dataset's airlines and displaying it in a table theDataSet = getParent().getCurrentDataset(); tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + + currentSession = getParent().getSession(); } @@ -87,7 +84,7 @@ public class AirlineRDController extends Controller { */ public void openFilter() { createPopUpStage(SceneCode.AIRLINE_FILTER, 600, 370); - //tableViewAirlineRD.setItems(FXCollections.observableArrayList(theDataSet.getAirlines())); + tableViewAirlineRD.setItems(FXCollections.observableArrayList(currentSession.getFilteredAirlines().values())); } diff --git a/src/main/resources/airline_add_form.fxml b/src/main/resources/airline_add_form.fxml index 59a34e0..9184f85 100644 --- a/src/main/resources/airline_add_form.fxml +++ b/src/main/resources/airline_add_form.fxml @@ -69,7 +69,7 @@ -