diff --git a/src/main/java/seng202/group9/Controller/App.java b/src/main/java/seng202/group9/Controller/App.java index d61cccd..351d622 100644 --- a/src/main/java/seng202/group9/Controller/App.java +++ b/src/main/java/seng202/group9/Controller/App.java @@ -8,6 +8,7 @@ import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.ArrayList; +import java.util.HashMap; import javafx.application.Application; import javafx.fxml.FXMLLoader; @@ -22,6 +23,8 @@ import javafx.scene.layout.BorderPane; import javafx.scene.layout.VBox; import javafx.stage.Modality; import javafx.stage.Stage; +import seng202.group9.Core.Airline; +import seng202.group9.Core.Airport; import seng202.group9.Core.FlightPath; import seng202.group9.GUI.*; @@ -97,6 +100,29 @@ public class App extends Application for (int i = 0; i < datasets.size(); i ++) { if (datasets.get(i).getName().equals(session.getCurrentDataset())) { currentDataset = datasets.get(i); + + HashMap airlinesHM = new HashMap(); + ArrayList airlines = currentDataset.getAirlines(); + for (int index = 0; index < airlines.size(); index++) { + try { + airlinesHM.put(index, airlines.get(index).getID()); + } catch (DataException e) { + e.printStackTrace(); + } + } + session.setFilteredAirlines(airlinesHM); + + HashMap airportsHM = new HashMap(); + ArrayList airports = currentDataset.getAirports(); + for (int index = 0; index < airports.size(); index++) { + try { + airportsHM.put(index, airports.get(index).getID()); + } catch (DataException e) { + e.printStackTrace(); + } + } + session.setFilteredAirports(airportsHM); + //session.setFilteredRoutes(); } } } diff --git a/src/main/java/seng202/group9/Controller/Dataset.java b/src/main/java/seng202/group9/Controller/Dataset.java index c3c10b7..d7af044 100644 --- a/src/main/java/seng202/group9/Controller/Dataset.java +++ b/src/main/java/seng202/group9/Controller/Dataset.java @@ -62,6 +62,7 @@ public class Dataset { }else if (action == createNew){ createTables(); } + } /** diff --git a/src/main/java/seng202/group9/Controller/SceneCode.java b/src/main/java/seng202/group9/Controller/SceneCode.java index 8f1e7e4..fa3bf8d 100644 --- a/src/main/java/seng202/group9/Controller/SceneCode.java +++ b/src/main/java/seng202/group9/Controller/SceneCode.java @@ -13,9 +13,9 @@ public enum SceneCode { AIRPORT_ADD("airport_add_form.fxml"), AIRPORT_FILTER("airport_filter_form.fxml"), ROUTE_ADD("route_add_form.fxml"), ROUTE_FILTER("route_filter_form.fxml"), AIRLINE_EDIT("airline_edit_form.fxml"), AIRPORT_EDIT("airport_edit_form.fxml"), ROUTE_EDIT("route_edit_form.fxml"), FLIGHT_EDITOR("flight_editor_form.fxml"), DATASET_CONTROLLER("dataset_editor.fxml"), HELP("help.fxml"), - FLIGHT_ADD("flight_add_form.fxml"), ROUTE_BY_AIRPORT("airport_map_routes.fxml"), ROUTE_BY_EQUIP("route_by_equip.fxml"), ANALYSER_TAB("analyser_main_page.fxml"), CHART_ERROR("too_many_options_pie.fxml"), - BAR_GRAPH_CHOOSER("bar_graph_chooser.fxml"), PIE_GRAPH_CHOOSER("pie_graph_chooser.fxml"), FLIGHT_PATH_ADD("new_flight_path.fxml"), - POP_UP_AIRPORT_MAP("pop_up_airport_map.fxml"), POP_UP_ROUTE_MAP("pop_up_route_map.fxml"); + FLIGHT_ADD("flight_add_form.fxml"), ROUTE_BY_AIRPORT("airport_map_routes.fxml"), ROUTE_BY_EQUIP("route_by_equip.fxml"), + FLIGHT_PATH_ADD("new_flight_path.fxml"), POP_UP_AIRPORT_MAP("pop_up_airport_map.fxml"), POP_UP_ROUTE_MAP("pop_up_route_map.fxml"), + AIRPORT_GRAPHS("airport_graphs.fxml"), AIRLINE_GRAPHS("airline_graphs.fxml"), ROUTE_GRAPHS("route_graphs.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 10db795..c1eecff 100644 --- a/src/main/java/seng202/group9/Controller/Session.java +++ b/src/main/java/seng202/group9/Controller/Session.java @@ -19,17 +19,12 @@ public class Session implements Serializable { private int currentFlightPointID;//current selected flight point private int currentFlightPathID;//cureselected flight path - private HashMap filteredAirlines;//current filtered airlines - private HashMap filteredAirports;//current filtered airports - private HashMap filteredRoutes;//current filtered routes + private HashMap filteredAirlines;//current filtered airlines + private HashMap filteredAirports;//current filtered airports + private HashMap filteredRoutes;//current filtered routes private HashMap airportFilter;//storage for filter values for airports private HashMap airlineFilter;//storage for filter values for airports private HashMap routeFilter;//storage for filter values for airports - private String selectedgraphagainst; - private ArrayList selectedgraphoptions; - private Boolean usefilter; - private Boolean forceGraph; - private String selectedDataToGraph; private String airlineToEdit; private String airportToEdit; private String routeToEdit; @@ -88,7 +83,7 @@ public class Session implements Serializable { this.filteredAirlines = airlines; } - public HashMap getFilteredAirlines() { + public HashMap getFilteredAirlines() { return filteredAirlines; } @@ -96,7 +91,7 @@ public class Session implements Serializable { this.filteredAirports = airports; } - public HashMap getFilteredAirports() { + public HashMap getFilteredAirports() { return filteredAirports; } @@ -104,7 +99,7 @@ public class Session implements Serializable { this.filteredRoutes = routes; } - public HashMap getFilteredRoutes() { + public HashMap getFilteredRoutes() { return filteredRoutes; } @@ -164,47 +159,6 @@ public class Session implements Serializable { return currentFlightPathID; } - - public Boolean getForceGraph() { - return forceGraph; - } - - public void setForceGraph(Boolean forceGraph) { - this.forceGraph = forceGraph; - } - - public String getSelectedDataToGraph() { - return selectedDataToGraph; - } - - public void setSelectedDataToGraph(String selectedDataToGraph) { - this.selectedDataToGraph = selectedDataToGraph; - } - - public String getSelectedgraphagainst() { - return selectedgraphagainst; - } - - public void setSelectedgraphagainst(String selectedgraphagainst) { - this.selectedgraphagainst = selectedgraphagainst; - } - - public ArrayList getSelectedgraphoptions() { - return selectedgraphoptions; - } - - public void setSelectedgraphoptions(ArrayList selectedgraphoptions) { - this.selectedgraphoptions = selectedgraphoptions; - } - - public Boolean getUsefilter() { - return usefilter; - } - - public void setUsefilter(Boolean usefilter) { - this.usefilter = usefilter; - } - public HashMap getAirportFilter() { return airportFilter; } diff --git a/src/main/java/seng202/group9/GUI/AirlineFilterController.java b/src/main/java/seng202/group9/GUI/AirlineFilterController.java index 02ae8c0..aa7ea48 100644 --- a/src/main/java/seng202/group9/GUI/AirlineFilterController.java +++ b/src/main/java/seng202/group9/GUI/AirlineFilterController.java @@ -12,6 +12,7 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.GridPane; import javafx.stage.Stage; import seng202.group9.Controller.AirlineFilter; +import seng202.group9.Controller.DataException; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.Session; import seng202.group9.Core.Airline; @@ -129,10 +130,14 @@ public class AirlineFilterController extends Controller { //Creates a new hashmap for airlines and fills it with airlines that fit the criteria specified by the user. //Saves it into the current session. - HashMap airlinesHM = new HashMap(); + HashMap airlinesHM = new HashMap(); ArrayList airlines = filter.getFilteredData(); for (int index = 0; index < airlines.size(); index++) { - airlinesHM.put(index, airlines.get(index).getName()); + try { + airlinesHM.put(index, airlines.get(index).getID()); + } catch (DataException e) { + e.printStackTrace(); + } } currentSession.setFilteredAirlines(airlinesHM); diff --git a/src/main/java/seng202/group9/GUI/AirlineGraphController.java b/src/main/java/seng202/group9/GUI/AirlineGraphController.java new file mode 100644 index 0000000..0d88c7d --- /dev/null +++ b/src/main/java/seng202/group9/GUI/AirlineGraphController.java @@ -0,0 +1,18 @@ +package seng202.group9.GUI; + +import seng202.group9.Controller.SceneCode; + +/** + * Created by Gondr on 2/10/2016. + */ +public class AirlineGraphController extends Controller{ + + @Override + public void load() { + + } + + public void goToRawData(){ + replaceSceneContent(SceneCode.AIRLINE_RAW_DATA); + } +} diff --git a/src/main/java/seng202/group9/GUI/AirlineRDController.java b/src/main/java/seng202/group9/GUI/AirlineRDController.java index 8c161c3..1c65546 100644 --- a/src/main/java/seng202/group9/GUI/AirlineRDController.java +++ b/src/main/java/seng202/group9/GUI/AirlineRDController.java @@ -85,8 +85,14 @@ public class AirlineRDController extends Controller { public void openFilter() { createPopUpStage(SceneCode.AIRLINE_FILTER, 600, 370); ArrayList d = new ArrayList(); - for (int key: currentSession.getFilteredAirlines().keySet()){ - d.add(theDataSet.getAirlineDictionary().get(currentSession.getFilteredAirlines().get(key))); + for (Airline airline : theDataSet.getAirlines()){ + try { + if (currentSession.getFilteredAirlines().containsValue(airline.getID())){ + d.add(airline); + } + } catch (DataException e) { + e.printStackTrace(); + } } tableViewAirlineRD.setItems(FXCollections.observableArrayList(d)); } diff --git a/src/main/java/seng202/group9/GUI/AirportFilterController.java b/src/main/java/seng202/group9/GUI/AirportFilterController.java index 595feee..1e944fa 100644 --- a/src/main/java/seng202/group9/GUI/AirportFilterController.java +++ b/src/main/java/seng202/group9/GUI/AirportFilterController.java @@ -11,6 +11,7 @@ import javafx.scene.input.KeyEvent; import javafx.scene.layout.GridPane; import javafx.stage.Stage; import seng202.group9.Controller.AirportFilter; +import seng202.group9.Controller.DataException; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.Session; import seng202.group9.Core.Airport; @@ -117,10 +118,14 @@ public class AirportFilterController extends Controller { alert.setContentText("Your airport data has been successfully filtered."); alert.showAndWait(); - HashMap airportsHM = new HashMap(); + HashMap airportsHM = new HashMap(); ArrayList airports = filter.getFilteredData(); for (int index = 0; index < airports.size(); index++) { - airportsHM.put(index, airports.get(index).getName()); + try { + airportsHM.put(index, airports.get(index).getID()); + } catch (DataException e) { + e.printStackTrace(); + } } currentSession.setFilteredAirports(airportsHM); diff --git a/src/main/java/seng202/group9/GUI/AirportGraphController.java b/src/main/java/seng202/group9/GUI/AirportGraphController.java new file mode 100644 index 0000000..133a28b --- /dev/null +++ b/src/main/java/seng202/group9/GUI/AirportGraphController.java @@ -0,0 +1,7 @@ +package seng202.group9.GUI; + +/** + * Created by Gondr on 2/10/2016. + */ +public class AirportGraphController { +} diff --git a/src/main/java/seng202/group9/GUI/AirportRDController.java b/src/main/java/seng202/group9/GUI/AirportRDController.java index bd76be4..70babd7 100644 --- a/src/main/java/seng202/group9/GUI/AirportRDController.java +++ b/src/main/java/seng202/group9/GUI/AirportRDController.java @@ -6,6 +6,7 @@ import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; import javafx.stage.Stage; +import seng202.group9.Controller.DataException; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.SceneCode; import seng202.group9.Controller.Session; @@ -93,8 +94,14 @@ public class AirportRDController extends Controller{ public void openFilter() { createPopUpStage(SceneCode.AIRPORT_FILTER, 600, 480); ArrayList d = new ArrayList(); - for (int key: currentSession.getFilteredAirports().keySet()){ - d.add(theDataSet.getAirportDictionary().get(currentSession.getFilteredAirports().get(key))); + for (Airport airport: theDataSet.getAirports()){ + try { + if (currentSession.getFilteredAirports().containsValue(airport.getID())) { + d.add(airport); + } + } catch (DataException e) { + e.printStackTrace(); + } } tableViewAirportRD.setItems(FXCollections.observableArrayList(d)); } @@ -131,9 +138,9 @@ public class AirportRDController extends Controller{ /** * Analyses the current data and creates a graph based on the data. - * @see PieGraphController + * */ - public void analyse_Button(){ replaceSceneContent(SceneCode.AIRPORT_ANALYSER);} + public void analyse_Button(){ replaceSceneContent(SceneCode.AIRPORT_GRAPHS);} public void airportSummaryButton() { replaceSceneContent(SceneCode.AIRPORT_SUMMARY); diff --git a/src/main/java/seng202/group9/GUI/AnalyserController.java b/src/main/java/seng202/group9/GUI/AnalyserController.java deleted file mode 100644 index 671547c..0000000 --- a/src/main/java/seng202/group9/GUI/AnalyserController.java +++ /dev/null @@ -1,19 +0,0 @@ -package seng202.group9.GUI; - -import seng202.group9.Controller.SceneCode; - -/** - * Created by michael on 24/09/2016. - */ -public class AnalyserController extends Controller{ - - public void barGraphButton(){ - replaceSceneContent(SceneCode.BAR_GRAPH_CHOOSER); - } - - public void pieGraphButton(){ - replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER); - } - - public void load() {} -} diff --git a/src/main/java/seng202/group9/GUI/BarChartErrorController.java b/src/main/java/seng202/group9/GUI/BarChartErrorController.java deleted file mode 100644 index 52d2498..0000000 --- a/src/main/java/seng202/group9/GUI/BarChartErrorController.java +++ /dev/null @@ -1,23 +0,0 @@ -package seng202.group9.GUI; - -import seng202.group9.Controller.SceneCode; -import seng202.group9.Controller.Session; - -/** - * Created by michael on 2/10/2016. - */ -public class BarChartErrorController extends Controller { - private Session currentSession; - - public void load(){ - currentSession = this.getParent().getSession(); - } - - public void ignoredWarning() { - currentSession.setForceGraph(Boolean.TRUE); - replaceSceneContent(SceneCode.ROUTE_ANALYSER); - } - public void backToSafety(){ - replaceSceneContent(SceneCode.BAR_GRAPH_CHOOSER); - } -} diff --git a/src/main/java/seng202/group9/GUI/BarChooserController.java b/src/main/java/seng202/group9/GUI/BarChooserController.java deleted file mode 100644 index 3dfd0ef..0000000 --- a/src/main/java/seng202/group9/GUI/BarChooserController.java +++ /dev/null @@ -1,79 +0,0 @@ -package seng202.group9.GUI; - -import javafx.beans.Observable; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.control.CheckBox; -import javafx.scene.control.ChoiceBox; -import javafx.scene.control.ListView; -import javafx.scene.control.SelectionMode; -import seng202.group9.Controller.SceneCode; -import seng202.group9.Controller.Session; - -import java.util.ArrayList; - -/** - * Created by michael on 24/09/2016. - */ -public class BarChooserController extends Controller{ - - @FXML - ChoiceBox datatypechooser; - @FXML - ListView graph_against; - @FXML - ListView graph_options; - @FXML - CheckBox usefilter; - - ObservableList airportOptions = FXCollections.observableArrayList("Name", "ICAO", "IATA FFA", "Altitude", - "City", "Country"); - - ObservableList airlineOptions = FXCollections.observableArrayList("ID", "Name", "ICAO", "IATA", "Alias", - "Call Sign", "Active", "Country"); - - ObservableList routeOptions = FXCollections.observableArrayList("ID", "Stops", "Codeshare", "Equipment", "Airline", - "Departure Airport", "Arival airport"); - - ArrayList allOptions = new ArrayList(); - - public void buildGraph() { - Session currentsession = this.getParent().getSession(); - currentsession.setSelectedgraphagainst(graph_options.getSelectionModel().getSelectedItem().toString()); - currentsession.setUsefilter(usefilter.isSelected()); - currentsession.setForceGraph(Boolean.FALSE); - replaceSceneContent(SceneCode.ROUTE_ANALYSER); - } - - public void returnToSelection(){replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER);} - - public void changeTables(){ - int temp = datatypechooser.getSelectionModel().getSelectedIndex(); - graph_against.setItems(allOptions.get(temp)); - graph_options.setItems(allOptions.get(temp)); - } - - public void load(){ - if (!checkDataset()){ - return; - } - datatypechooser.setItems(FXCollections.observableArrayList("Airports","Airlines","Routes")); - datatypechooser.getSelectionModel().selectFirst(); - datatypechooser.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { - public void changed(ObservableValue observable, Number oldValue, Number newValue) { - changeTables(); - } - }); - graph_against.setItems(airportOptions); - graph_against.getSelectionModel().selectFirst(); - graph_options.setItems(airportOptions); - graph_options.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); - graph_options.getSelectionModel().selectFirst(); - allOptions.add(airportOptions); - allOptions.add(airlineOptions); - allOptions.add(routeOptions); - } -} diff --git a/src/main/java/seng202/group9/GUI/BarGraphController.java b/src/main/java/seng202/group9/GUI/BarGraphController.java deleted file mode 100644 index b96c1e4..0000000 --- a/src/main/java/seng202/group9/GUI/BarGraphController.java +++ /dev/null @@ -1,150 +0,0 @@ -package seng202.group9.GUI; - - -import javafx.fxml.FXML; -import javafx.scene.chart.BarChart; -import javafx.scene.chart.XYChart; -import seng202.group9.Controller.Dataset; -import seng202.group9.Controller.Session; -import seng202.group9.Core.Airline; -import seng202.group9.Core.Airport; -import seng202.group9.Core.Route; -import java.util.ArrayList; -import java.util.HashMap; - - -/** - * Gui controller class currently for creating the bar graph of routes arriving and departing from airports. - * Extend the class. {@link Controller} - * Created by michael on 16/09/2016. - */ -public class BarGraphController extends Controller { - //Links fxml to the controller. - @FXML - private BarChart analyserGraph; - - //Used to store the data needed for making the tables. - private ArrayList current_routes; - private Dataset currentdata = null; - private Session currentsession; - private HashMap stopsData = new HashMap(); - private HashMap codeShareData = new HashMap(); - private HashMap equipmentData = new HashMap(); - private HashMap airlineData = new HashMap(); - private HashMap departureAirportData = new HashMap(); - private HashMap arrivalAirportData = new HashMap(); - - private void datasetupCustomRoute(ArrayList current_routes){ - //Takes out the specified field then adds to the used data dict. - for (Route entry : current_routes){ - if (stopsData.containsKey(entry.getStops())){ - stopsData.replace(String.valueOf(entry.getStops()),stopsData.get(entry.getStops())+1); - }else { - stopsData.put(String.valueOf(entry.getStops()),1); - } - if (codeShareData.containsKey(entry.getCode())){ - codeShareData.replace(String.valueOf(entry.getCode()),codeShareData.get(entry.getCode())+1); - }else { - codeShareData.put(String.valueOf(entry.getStops()),1); - } - if (equipmentData.containsKey(entry.getEquipment())){ - equipmentData.replace(String.valueOf(entry.getEquipment()),equipmentData.get(entry.getEquipment())+1); - }else { - stopsData.put(String.valueOf(entry.getEquipment()),1); - } - if (airlineData.containsKey(entry.getAirlineName())){ - airlineData.replace(String.valueOf(entry.getAirlineName()), airlineData.get(entry.getAirlineName())+1); - }else { - airlineData.put(String.valueOf(entry.getAirline()),1); - } - if (departureAirportData.containsKey(entry.getDepartureAirport())){ - departureAirportData.replace(String.valueOf(entry.getDepartureAirport()),stopsData.get(entry.getDepartureAirport())+1); - }else { - departureAirportData.put(String.valueOf(entry.getDepartureAirport()),1); - } - if (arrivalAirportData.containsKey(entry.getArrivalAirport())){ - arrivalAirportData.replace(String.valueOf(entry.getArrivalAirport()),arrivalAirportData.get(entry.getArrivalAirport())+1); - }else { - arrivalAirportData.put(String.valueOf(entry.getArrivalAirport()),1); - } - } - } - - /** - * Takes data from the current dataset and places it into the displayed bar graph. - */ - public void buildRouteGraph(){ - XYChart.Series seriesStops = new XYChart.Series(); - XYChart.Series seriesCode = new XYChart.Series(); - XYChart.Series seriesEquipment = new XYChart.Series(); - XYChart.Series seriesAirline = new XYChart.Series(); - XYChart.Series seriesArivals = new XYChart.Series(); - XYChart.Series seriesDeparts = new XYChart.Series(); - - seriesStops.setName("Stops"); - seriesCode.setName("CodeShare"); - seriesEquipment.setName("Equipment"); - seriesAirline.setName("Airline"); - seriesArivals.setName("Arrivals"); - seriesDeparts.setName("Departures"); - //Gives the formatted data to the graph. - analyserGraph.getData().add(seriesDeparts); - } - - - /** - * Takes the current dataset then loads the data to the graph using build graph. - */ - public void load() { - currentdata = getParent().getCurrentDataset(); - currentsession = this.getParent().getSession(); - String temp = currentsession.getSelectedDataToGraph(); - if (temp == "Airports") { - ArrayList d = new ArrayList(); - if (currentsession.getUsefilter()){ - for(int i = 0; i < currentdata.getAirports().size(); i++) { - if (currentsession.getFilteredAirports().containsValue(currentdata.getAirports().get(i).getName()) - && currentsession.getFilteredAirports().containsKey(i)) { - d.add(currentdata.getAirports().get(i)); - } - } - } - else{ - d = currentdata.getAirports(); - } - //datasetupCustomarAirport(d); - } - else if (temp == "Airlines"){ - ArrayList d = new ArrayList(); - if (currentsession.getUsefilter()){ - for(int i = 0; i < currentdata.getAirports().size(); i++) { - if (currentsession.getFilteredAirlines().containsValue(currentdata.getAirlines().get(i).getName()) - && currentsession.getFilteredAirlines().containsKey(i)) { - d.add(currentdata.getAirlines().get(i)); - } - } - } - else{ - d = currentdata.getAirlines(); - } - //datasetupCustomarAirline(d); - } - else if (temp == "Routes") { - ArrayList d = new ArrayList(); - if (currentsession.getUsefilter()){ - for(int i = 0; i < currentdata.getRoutes().size(); i++) { - if (currentsession.getFilteredRoutes().containsValue(currentdata.getRoutes().get(i).getAirlineName()) - && currentsession.getFilteredRoutes().containsKey(i)) { - d.add(currentdata.getRoutes().get(i)); - } - } - } - else{ - d = currentdata.getRoutes(); - } - datasetupCustomRoute(d); - buildRouteGraph(); - } - } - -} diff --git a/src/main/java/seng202/group9/GUI/MenuController.java b/src/main/java/seng202/group9/GUI/MenuController.java index 7346706..d0932f4 100644 --- a/src/main/java/seng202/group9/GUI/MenuController.java +++ b/src/main/java/seng202/group9/GUI/MenuController.java @@ -67,8 +67,6 @@ public class MenuController extends Controller{ replaceSceneContent(SceneCode.ROUTE_SUMMARY); } - public void viewAnalyserMain() { replaceSceneContent(SceneCode.ANALYSER_TAB);} - /** * view Routes by the Destination / Arrival Airport */ @@ -104,7 +102,19 @@ public class MenuController extends Controller{ //nothing to load } - public void veiwDistCalc(){replaceSceneContent(SceneCode.AIRPORT_DIST_CALC);} + public void viewDistCalc(){replaceSceneContent(SceneCode.AIRPORT_DIST_CALC);} + + public void viewAirportGraphs(){ + replaceSceneContent(SceneCode.AIRPORT_GRAPHS); + } + + public void viewAirlineGraphs(){ + replaceSceneContent(SceneCode.AIRLINE_GRAPHS); + } + + public void viewRouteGraphs(){ + replaceSceneContent(SceneCode.ROUTE_GRAPHS); + } public void initialize(URL arg0, ResourceBundle arg1) { // TODO Auto-generated method stub diff --git a/src/main/java/seng202/group9/GUI/PieChartErrorController.java b/src/main/java/seng202/group9/GUI/PieChartErrorController.java deleted file mode 100644 index 33f9547..0000000 --- a/src/main/java/seng202/group9/GUI/PieChartErrorController.java +++ /dev/null @@ -1,23 +0,0 @@ -package seng202.group9.GUI; - -import seng202.group9.Controller.SceneCode; -import seng202.group9.Controller.Session; - -/** - * Created by michael on 2/10/2016. - */ -public class PieChartErrorController extends Controller { - private Session currentSession; - - public void load(){ - currentSession = this.getParent().getSession(); - } - - public void ignoredWarning() { - currentSession.setForceGraph(true); - replaceSceneContent(SceneCode.AIRPORT_ANALYSER); - } - public void backToSafety(){ - replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER); - } -} diff --git a/src/main/java/seng202/group9/GUI/PieChooserController.java b/src/main/java/seng202/group9/GUI/PieChooserController.java deleted file mode 100644 index 08f0750..0000000 --- a/src/main/java/seng202/group9/GUI/PieChooserController.java +++ /dev/null @@ -1,89 +0,0 @@ -package seng202.group9.GUI; - -import javafx.beans.Observable; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.control.CheckBox; -import javafx.scene.control.ChoiceBox; -import javafx.scene.control.ListView; -import javafx.scene.control.SelectionMode; -import seng202.group9.Controller.SceneCode; -import seng202.group9.Controller.Session; - -import java.util.ArrayList; - -/** - * Created by michael on 24/09/2016. - */ -public class PieChooserController extends Controller{ - - @FXML - ChoiceBox datatypechooser; - @FXML - ListView graph_options; - @FXML - CheckBox usefilter; - - - ObservableList airportOptions = FXCollections.observableArrayList("Name", "ICAO", "IATA/FFA", "Altitude", - "City", "Country"); - - ObservableList airlineOptions = FXCollections.observableArrayList("Name", "ICAO", "IATA", "Active", "Country"); - - ObservableList routeOptions = FXCollections.observableArrayList("Airline", "Departure Airport", "Arrival Airport", - "Codeshare", "Stops" , "Equipment"); - - ArrayList allOptions = new ArrayList(); - - - public void toBarGraphChooser(){replaceSceneContent(SceneCode.BAR_GRAPH_CHOOSER);} - - public void buildGraph() { - Session currentsession = this.getParent().getSession(); - ArrayList temp = new ArrayList(); - currentsession.setSelectedDataToGraph(datatypechooser.getSelectionModel().getSelectedItem().toString()); - currentsession.setSelectedgraphagainst(graph_options.getSelectionModel().getSelectedItem().toString()); - currentsession.setUsefilter(usefilter.isSelected()); - currentsession.setForceGraph(false); - replaceSceneContent(SceneCode.AIRPORT_ANALYSER); - } - - public void changeTables(){ - int temp = datatypechooser.getSelectionModel().getSelectedIndex(); - graph_options.setItems(allOptions.get(temp)); - } - - public void load(){ - if (!checkDataset()){ - return; - } - datatypechooser.setItems(FXCollections.observableArrayList("Airports","Airlines","Routes")); - datatypechooser.getSelectionModel().selectFirst(); - datatypechooser.getSelectionModel().selectedIndexProperty().addListener(new ChangeListener() { - public void changed(ObservableValue observable, Number oldValue, Number newValue) { - changeTables(); - } - }); - - graph_options.setItems(airportOptions); - graph_options.getSelectionModel().selectFirst(); - allOptions.add(airportOptions); - allOptions.add(airlineOptions); - allOptions.add(routeOptions); - } - - public void newFilter(){ - if (datatypechooser.getSelectionModel().getSelectedItem().toString() == "Airports"){ - createPopUpStage(SceneCode.AIRPORT_FILTER, 600, 480); - } - else if (datatypechooser.getSelectionModel().getSelectedItem().toString() == "Airlines"){ - createPopUpStage(SceneCode.AIRLINE_FILTER, 600, 370); - } - else if (datatypechooser.getSelectionModel().getSelectedItem().toString() == "Routes"){ - createPopUpStage(SceneCode.ROUTE_FILTER, 600, 330); - } - } -} \ No newline at end of file diff --git a/src/main/java/seng202/group9/GUI/PieGraphController.java b/src/main/java/seng202/group9/GUI/PieGraphController.java deleted file mode 100644 index 3798880..0000000 --- a/src/main/java/seng202/group9/GUI/PieGraphController.java +++ /dev/null @@ -1,223 +0,0 @@ -package seng202.group9.GUI; - -import javafx.fxml.FXML; -import javafx.scene.chart.BarChart; -import javafx.scene.chart.PieChart; -import javafx.scene.chart.XYChart; -import javafx.scene.control.Alert; -import javafx.scene.control.ButtonBar; -import javafx.scene.control.ButtonType; -import seng202.group9.Controller.*; -import seng202.group9.Core.Airline; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Optional; - -import javafx.application.Application; -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import javafx.scene.chart.*; -import javafx.scene.Group; -import seng202.group9.Core.Airport; -import seng202.group9.Core.Route; - -/** - * Gui controller class currently for creating the bar graph of routes arriving and departing from airports. - * Extend the class. {@link Controller} - * Created by michael on 17/09/2016. - */ -public class PieGraphController extends Controller { - //links fxml parts to the controller. - @FXML - PieChart pieGraph; - - //Used to store the data needed for making the graph. - private Dataset currentdata = null; - private HashMap useddata = new HashMap(); - private Session currentsession; - - - /** - * Takes data from the current dataset and places it into the displayed pie graph. - */ - public void build_graph(){ - //Turns the data into a usable list. - ObservableList pieChartData = FXCollections.observableArrayList(); - System.out.println(useddata.keySet().size()); - for (String airport : useddata.keySet()){ - Integer temp = useddata.get(airport); - pieChartData.add(new PieChart.Data(airport,temp)); - } - //Gives the data to the graph. - if (useddata.keySet().size() > 250 && !currentsession.getForceGraph()){ - ButtonType yes = new ButtonType("Yes", ButtonBar.ButtonData.YES); - ButtonType no = new ButtonType("No", ButtonBar.ButtonData.NO); - Alert alert = new Alert(Alert.AlertType.CONFIRMATION, "", yes, no); - alert.setTitle("Too many fields selected"); - alert.setHeaderText("You have selected too many fields to graph."); - alert.setContentText("This could potentially cause errors in the program.\nDo you want to proceed?"); - //alert.showAndWait(); - Optional result = alert.showAndWait(); - if (result.isPresent() && result.get() == no) { - replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER); - } - } - else{ - pieGraph.setData(pieChartData); - } - } - - /** - * Takes the raw list of routes and fills the used data dictionary with the appropriate data to be displayed - * @param current_air_ports - */ - private void datasetupCustomarAirport(ArrayList current_air_ports){ - //Takes out the specified field then adds to the used data dict. - for (Airport entry : current_air_ports){ - String name = "Error"; - if (currentsession.getSelectedgraphagainst() == "Name") { - name = entry.getName(); - } - else if (currentsession.getSelectedgraphagainst() == "ICAO") { - name = entry.getICAO(); - } - else if (currentsession.getSelectedgraphagainst() == "IATA FFA") { - name = entry.getIATA_FFA(); - } - else if (currentsession.getSelectedgraphagainst() == "Altitude") { - name = String.valueOf(entry.getAltitude()); - } - else if (currentsession.getSelectedgraphagainst() == "City") { - name = entry.getCityName(); - } - else if (currentsession.getSelectedgraphagainst() == "Country") { - name = entry.getCountryName(); - } - if (useddata.containsKey(name)){ - int temp = useddata.get(name); - useddata.replace(name,temp+1); - }else { - Integer temp = 1; - useddata.put(name,temp); - } - } - } - - - private void datasetupCustomarAirline(ArrayList current_air_ports){ - //Takes out the specified field then adds to the used data dict. - for (Airline entry : current_air_ports) { - String name = "Error"; - if (currentsession.getSelectedgraphagainst() == "Name") { - name = entry.getName(); - } else if (currentsession.getSelectedgraphagainst() == "ICAO") { - name = entry.getICAO(); - } else if (currentsession.getSelectedgraphagainst() == "IATA") { - name = entry.getIATA(); - } else if (currentsession.getSelectedgraphagainst() == "Country") { - name = entry.getCountryName(); - } else if (currentsession.getSelectedgraphagainst() == "Active") { - name = entry.getActive(); - } - if (useddata.containsKey(name)) { - int temp = useddata.get(name); - useddata.replace(name, temp + 1); - } else { - Integer temp = 1; - useddata.put(name, temp); - } - } - } - - - private void datasetupCustomRoute(ArrayList current_air_ports){ - //Takes out the specified field then adds to the used data dict. - for (Route entry : current_air_ports){ - String name = "Error"; - if (currentsession.getSelectedgraphagainst() == "Stops") { - name = String.valueOf(entry.getStops()); - } - else if (currentsession.getSelectedgraphagainst() == "Codeshare") { - name = entry.getCode(); - } - else if (currentsession.getSelectedgraphagainst() == "Equipment") { - name = entry.getEquipment(); - } - else if (currentsession.getSelectedgraphagainst() == "Airline") { - name = entry.getAirlineName(); - } - else if (currentsession.getSelectedgraphagainst() == "Departure Airport") { - name = entry.getDepartureAirport(); - } - else if (currentsession.getSelectedgraphagainst() == "Arival airport") { - name = entry.getArrivalAirport(); - } - if (useddata.containsKey(name)){ - int temp = useddata.get(name); - useddata.replace(name,temp+1); - }else { - Integer temp = 1; - useddata.put(name,temp); - } - } - } - - /** - * Takes the current dataset then loads the data to the graph using build graph. - */ - public void load() { - if (!checkDataset()){ - return; - } - currentdata = getParent().getCurrentDataset(); - currentsession = this.getParent().getSession(); - String temp = currentsession.getSelectedDataToGraph(); - if (temp == "Airports") { - ArrayList d = new ArrayList(); - if (currentsession.getUsefilter()){ - for(int i = 0; i < currentdata.getAirports().size(); i++) { - if (currentsession.getFilteredAirports().containsValue(currentdata.getAirports().get(i).getName()) - && currentsession.getFilteredAirports().containsKey(i)) { - d.add(currentdata.getAirports().get(i)); - } - } - } - else{ - d = currentdata.getAirports(); - } - datasetupCustomarAirport(d); - } - else if (temp == "Airlines"){ - ArrayList d = new ArrayList(); - if (currentsession.getUsefilter()){ - for(int i = 0; i < currentdata.getAirports().size(); i++) { - if (currentsession.getFilteredAirlines().containsValue(currentdata.getAirlines().get(i).getName()) - && currentsession.getFilteredAirlines().containsKey(i)) { - d.add(currentdata.getAirlines().get(i)); - } - } - } - else{ - d = currentdata.getAirlines(); - } - datasetupCustomarAirline(d); - } - else if (temp == "Routes") { - ArrayList d = new ArrayList(); - if (currentsession.getUsefilter()){ - for(int i = 0; i < currentdata.getRoutes().size(); i++) { - if (currentsession.getFilteredRoutes().containsValue(currentdata.getRoutes().get(i).getAirlineName()) - && currentsession.getFilteredRoutes().containsKey(i)) { - d.add(currentdata.getRoutes().get(i)); - } - } - } - else{ - d = currentdata.getRoutes(); - } - datasetupCustomRoute(d); - } - build_graph(); - } - -} diff --git a/src/main/java/seng202/group9/GUI/RouteFilterController.java b/src/main/java/seng202/group9/GUI/RouteFilterController.java index a9cdc41..0aaaa53 100644 --- a/src/main/java/seng202/group9/GUI/RouteFilterController.java +++ b/src/main/java/seng202/group9/GUI/RouteFilterController.java @@ -10,6 +10,7 @@ import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.layout.GridPane; import javafx.stage.Stage; +import seng202.group9.Controller.DataException; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.RouteFilter; import seng202.group9.Controller.Session; @@ -88,11 +89,14 @@ public class RouteFilterController extends Controller { //currentSession.setFilteredAirlines(FXCollections.observableArrayList(filter.getFilteredData())); //routeAirline + routeSourceAirport + routeArrvAirport + routeCodeShare + routeStops + routeEquip - HashMap routesHM = new HashMap(); + HashMap routesHM = new HashMap(); ArrayList routes = filter.getFilteredData(); for (int index = 0; index < routes.size(); index++) { - routesHM.put(index, routes.get(index).getAirlineName() + routes.get(index).getDepartureAirport() + routes.get(index).getArrivalAirport() - + routes.get(index).getCode() + routes.get(index).getStops() + routes.get(index).getEquipment()); + try { + routesHM.put(index, routes.get(index).getID()); + } catch (DataException e) { + e.printStackTrace(); + } } currentSession.setFilteredRoutes(routesHM); diff --git a/src/main/java/seng202/group9/GUI/RouteGraphController.java b/src/main/java/seng202/group9/GUI/RouteGraphController.java new file mode 100644 index 0000000..758b48a --- /dev/null +++ b/src/main/java/seng202/group9/GUI/RouteGraphController.java @@ -0,0 +1,7 @@ +package seng202.group9.GUI; + +/** + * Created by Gondr on 2/10/2016. + */ +public class RouteGraphController { +} diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index 3654737..47f28f4 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -5,6 +5,7 @@ import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.*; import javafx.scene.control.cell.PropertyValueFactory; +import seng202.group9.Controller.DataException; import seng202.group9.Controller.Dataset; import seng202.group9.Controller.SceneCode; import seng202.group9.Controller.Session; @@ -82,8 +83,14 @@ public class RouteRDController extends Controller { createPopUpStage(SceneCode.ROUTE_FILTER, 600, 330); ArrayList d = new ArrayList(); - for (int key: currentSession.getFilteredRoutes().keySet()){ - d.add(theDataSet.getRouteDictionary().get(currentSession.getFilteredRoutes().get(key))); + for (Route route: theDataSet.getRoutes()){ + try { + if (currentSession.getFilteredRoutes().containsValue(route.getID())) { + d.add(route); + } + } catch (DataException e) { + e.printStackTrace(); + } } tableViewRouteRD.setItems(FXCollections.observableArrayList(d)); } @@ -127,10 +134,10 @@ public class RouteRDController extends Controller { /** * Analyses the current data and creates a graph based on the data. - * @see BarGraphController + * */ public void analyse_Button() { - replaceSceneContent(SceneCode.ROUTE_ANALYSER); + replaceSceneContent(SceneCode.ROUTE_GRAPHS); } public void routeSummaryButton() { diff --git a/src/main/resources/airline_graphs.fxml b/src/main/resources/airline_graphs.fxml new file mode 100644 index 0000000..91258ef --- /dev/null +++ b/src/main/resources/airline_graphs.fxml @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/airport_analyser.fxml b/src/main/resources/airport_analyser.fxml deleted file mode 100644 index cf9299a..0000000 --- a/src/main/resources/airport_analyser.fxml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/airport_graphs.fxml b/src/main/resources/airport_graphs.fxml new file mode 100644 index 0000000..3757c59 --- /dev/null +++ b/src/main/resources/airport_graphs.fxml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/analyser_main_page.fxml b/src/main/resources/analyser_main_page.fxml deleted file mode 100644 index 4685dd1..0000000 --- a/src/main/resources/analyser_main_page.fxml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/route_analyser.fxml b/src/main/resources/route_analyser.fxml deleted file mode 100644 index 7d1ad30..0000000 --- a/src/main/resources/route_analyser.fxml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/route_graphs.fxml b/src/main/resources/route_graphs.fxml new file mode 100644 index 0000000..2f3c6be --- /dev/null +++ b/src/main/resources/route_graphs.fxml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/too_many_options_bar.fxml b/src/main/resources/too_many_options_bar.fxml deleted file mode 100644 index 7013c1d..0000000 --- a/src/main/resources/too_many_options_bar.fxml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -