diff --git a/src/main/java/seng202/group9/GUI/RouteAnalyser.java b/src/main/java/seng202/group9/GUI/RouteAnalyser.java new file mode 100644 index 0000000..f1e7234 --- /dev/null +++ b/src/main/java/seng202/group9/GUI/RouteAnalyser.java @@ -0,0 +1,81 @@ +package seng202.group9.GUI; + +import javafx.collections.FXCollections; +import javafx.fxml.FXML; +import javafx.scene.chart.BarChart; +import javafx.scene.chart.CategoryAxis; +import javafx.scene.chart.NumberAxis; +import javafx.scene.chart.XYChart; +import javafx.scene.control.Alert; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; +import javafx.scene.control.cell.PropertyValueFactory; +import seng202.group9.Controller.App; +import seng202.group9.Controller.Dataset; +import seng202.group9.Core.Route; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; + +/** + * Created by michael on 16/09/2016. + */ +public class RouteAnalyser extends MenuController { + @FXML + private BarChart analyserGraph; + + App parent; + private ArrayList current_routes; + + public void setApp(App parent){ + this.parent = parent; + } + + private Dataset Data = null; + private HashMap useddata = new HashMap(); + + public void build_graph(Dataset current_data){ + current_routes = current_data.getRoutes(); + datasetup(current_routes); + XYChart.Series seriesArivals = new XYChart.Series(); + XYChart.Series seriesDeparts = new XYChart.Series(); + seriesArivals.setName("Arriving routes"); + seriesDeparts.setName("Departs routes"); + System.out.println(useddata.keySet().size()); + for (String airport : useddata.keySet()){ + ArrayList temp = useddata.get(airport); + seriesArivals.getData().add(new XYChart.Data(airport,temp.get(0))); + seriesDeparts.getData().add(new XYChart.Data(airport,temp.get(1))); + } + analyserGraph.getData().addAll(seriesArivals,seriesDeparts); + } + + private void datasetup(ArrayList current_routes){ + for (Route entry : current_routes){ + String departs = entry.getDepartureAirport(); + String arives = entry.getArrivalAirport(); + if (useddata.containsKey(departs)){ + ArrayList temp = useddata.get(departs); + temp.add(1,temp.get(1)+1); + useddata.replace(departs,temp); + }else { + ArrayList temp = new ArrayList(2); + temp.add(0); + temp.add(1); + useddata.put(departs,temp); + } + if (useddata.containsKey(arives)){ + ArrayList temp = useddata.get(arives); + temp.add(0,temp.get(0)+1); + useddata.replace(arives,temp); + }else { + ArrayList temp = new ArrayList(2); + temp.add(1); + temp.add(0); + useddata.put(arives,temp); + } + } + } +} diff --git a/src/main/java/seng202/group9/GUI/RouteRDController.java b/src/main/java/seng202/group9/GUI/RouteRDController.java index f2994b8..9c6fbca 100644 --- a/src/main/java/seng202/group9/GUI/RouteRDController.java +++ b/src/main/java/seng202/group9/GUI/RouteRDController.java @@ -2,7 +2,10 @@ package seng202.group9.GUI; import javafx.collections.FXCollections; import javafx.fxml.FXML; -import javafx.scene.control.*; +import javafx.scene.control.Alert; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.TextField; import javafx.scene.control.cell.PropertyValueFactory; import seng202.group9.Controller.App; import seng202.group9.Controller.Dataset; @@ -11,7 +14,7 @@ import seng202.group9.Core.Route; /** * Created by Sunguin on 2016/09/14. */ -public class RouteRDController extends Controller { +public class RouteRDController extends MenuController { @FXML private TableView tableViewRouteRD; @@ -37,32 +40,60 @@ public class RouteRDController extends Controller { @FXML private TextField rAirlineBox; @FXML + private TextField rAirlineIDBox; + @FXML private TextField rSourceBox; @FXML + private TextField rSourceIDBox; + @FXML private TextField rDestBox; @FXML - private ComboBox rCodeshareCBox; + private TextField rDestIDBox; + @FXML + private TextField rCodeshareBox; @FXML private TextField rStopsBox; @FXML private TextField rEquipmentBox; + + App parent; + + public void setApp(App parent){ + this.parent = parent; + } + private Dataset theDataSet = null; + public void loadTables() { + rAirlineCol.setCellValueFactory(new PropertyValueFactory("Airline")); + //rAirlineIDCol.setCellValueFactory(new PropertyValueFactory("AirlineID")); + rSourceCol.setCellValueFactory(new PropertyValueFactory("DepartureAirport")); + //rSourceIDCol.setCellValueFactory(new PropertyValueFactory("SourceID")); + rDestCol.setCellValueFactory(new PropertyValueFactory("ArrivalAirport")); + //rDestIDCol.setCellValueFactory(new PropertyValueFactory("DestID")); + rCodeshareCol.setCellValueFactory(new PropertyValueFactory("Code")); + rStopsCol.setCellValueFactory(new PropertyValueFactory("Stops")); + rEquipmentCol.setCellValueFactory(new PropertyValueFactory("Equipment")); + + theDataSet = this.parent.getCurrentDataset(); + tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); + } + public void addRouteSingle() { try { theDataSet.addRoute( rAirlineBox.getText(), rSourceBox.getText(), rDestBox.getText(), - rCodeshareCBox.getSelectionModel().getSelectedItem().toString(), + rCodeshareBox.getText(), rStopsBox.getText(), rEquipmentBox.getText() ); rAirlineBox.clear(); rSourceBox.clear(); rDestBox.clear(); - rCodeshareCBox.getSelectionModel().clearSelection(); + rCodeshareBox.clear(); rStopsBox.clear(); rEquipmentBox.clear(); tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); @@ -74,21 +105,15 @@ public class RouteRDController extends Controller { alert.showAndWait(); } } - - public void load() { - rAirlineCol.setCellValueFactory(new PropertyValueFactory("AirlineName")); - rAirlineIDCol.setCellValueFactory(new PropertyValueFactory("AirlineID")); - rSourceCol.setCellValueFactory(new PropertyValueFactory("DepartureAirport")); - rSourceIDCol.setCellValueFactory(new PropertyValueFactory("SourceID")); - rDestCol.setCellValueFactory(new PropertyValueFactory("ArrivalAirport")); - rDestIDCol.setCellValueFactory(new PropertyValueFactory("DestID")); - rCodeshareCol.setCellValueFactory(new PropertyValueFactory("Code")); - rStopsCol.setCellValueFactory(new PropertyValueFactory("Stops")); - rEquipmentCol.setCellValueFactory(new PropertyValueFactory("Equipment")); - - theDataSet = getParent().getCurrentDataset(); - tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes())); - - rCodeshareCBox.getItems().addAll("Y", ""); + public void analyse_Button() { + try { + RouteAnalyser graphController = (RouteAnalyser) + parent.replaceSceneContent("route_analyser.fxml"); + graphController.setApp(parent); + graphController.build_graph(theDataSet); + } + catch (Exception e) { + e.printStackTrace(); + } } } diff --git a/src/main/resources/route_analyser.fxml b/src/main/resources/route_analyser.fxml new file mode 100644 index 0000000..85a86f8 --- /dev/null +++ b/src/main/resources/route_analyser.fxml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/route_raw_data.fxml b/src/main/resources/route_raw_data.fxml index 22b41c0..a1d0de7 100644 --- a/src/main/resources/route_raw_data.fxml +++ b/src/main/resources/route_raw_data.fxml @@ -13,7 +13,7 @@ - + @@ -30,7 +30,7 @@ -