diff --git a/res/userdb.db b/res/userdb.db index d91c022..0ce9c89 100644 Binary files a/res/userdb.db and b/res/userdb.db differ 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 @@ -