Merge branch 'Analyser'
Conflicts: src/main/java/seng202/group9/GUI/RouteRDController.java
This commit is contained in:
@@ -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<Route> current_routes;
|
||||||
|
|
||||||
|
public void setApp(App parent){
|
||||||
|
this.parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dataset Data = null;
|
||||||
|
private HashMap<String, ArrayList> useddata = new HashMap<String, ArrayList>();
|
||||||
|
|
||||||
|
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<Integer> 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<Route> current_routes){
|
||||||
|
for (Route entry : current_routes){
|
||||||
|
String departs = entry.getDepartureAirport();
|
||||||
|
String arives = entry.getArrivalAirport();
|
||||||
|
if (useddata.containsKey(departs)){
|
||||||
|
ArrayList<Integer> temp = useddata.get(departs);
|
||||||
|
temp.add(1,temp.get(1)+1);
|
||||||
|
useddata.replace(departs,temp);
|
||||||
|
}else {
|
||||||
|
ArrayList<Integer> temp = new ArrayList<Integer>(2);
|
||||||
|
temp.add(0);
|
||||||
|
temp.add(1);
|
||||||
|
useddata.put(departs,temp);
|
||||||
|
}
|
||||||
|
if (useddata.containsKey(arives)){
|
||||||
|
ArrayList<Integer> temp = useddata.get(arives);
|
||||||
|
temp.add(0,temp.get(0)+1);
|
||||||
|
useddata.replace(arives,temp);
|
||||||
|
}else {
|
||||||
|
ArrayList<Integer> temp = new ArrayList<Integer>(2);
|
||||||
|
temp.add(1);
|
||||||
|
temp.add(0);
|
||||||
|
useddata.put(arives,temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,10 @@ package seng202.group9.GUI;
|
|||||||
|
|
||||||
import javafx.collections.FXCollections;
|
import javafx.collections.FXCollections;
|
||||||
import javafx.fxml.FXML;
|
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 javafx.scene.control.cell.PropertyValueFactory;
|
||||||
import seng202.group9.Controller.App;
|
import seng202.group9.Controller.App;
|
||||||
import seng202.group9.Controller.Dataset;
|
import seng202.group9.Controller.Dataset;
|
||||||
@@ -11,7 +14,7 @@ import seng202.group9.Core.Route;
|
|||||||
/**
|
/**
|
||||||
* Created by Sunguin on 2016/09/14.
|
* Created by Sunguin on 2016/09/14.
|
||||||
*/
|
*/
|
||||||
public class RouteRDController extends Controller {
|
public class RouteRDController extends MenuController {
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private TableView<Route> tableViewRouteRD;
|
private TableView<Route> tableViewRouteRD;
|
||||||
@@ -37,32 +40,60 @@ public class RouteRDController extends Controller {
|
|||||||
@FXML
|
@FXML
|
||||||
private TextField rAirlineBox;
|
private TextField rAirlineBox;
|
||||||
@FXML
|
@FXML
|
||||||
|
private TextField rAirlineIDBox;
|
||||||
|
@FXML
|
||||||
private TextField rSourceBox;
|
private TextField rSourceBox;
|
||||||
@FXML
|
@FXML
|
||||||
|
private TextField rSourceIDBox;
|
||||||
|
@FXML
|
||||||
private TextField rDestBox;
|
private TextField rDestBox;
|
||||||
@FXML
|
@FXML
|
||||||
private ComboBox<String> rCodeshareCBox;
|
private TextField rDestIDBox;
|
||||||
|
@FXML
|
||||||
|
private TextField rCodeshareBox;
|
||||||
@FXML
|
@FXML
|
||||||
private TextField rStopsBox;
|
private TextField rStopsBox;
|
||||||
@FXML
|
@FXML
|
||||||
private TextField rEquipmentBox;
|
private TextField rEquipmentBox;
|
||||||
|
|
||||||
|
|
||||||
|
App parent;
|
||||||
|
|
||||||
|
public void setApp(App parent){
|
||||||
|
this.parent = parent;
|
||||||
|
}
|
||||||
|
|
||||||
private Dataset theDataSet = null;
|
private Dataset theDataSet = null;
|
||||||
|
|
||||||
|
public void loadTables() {
|
||||||
|
rAirlineCol.setCellValueFactory(new PropertyValueFactory<Route, String>("Airline"));
|
||||||
|
//rAirlineIDCol.setCellValueFactory(new PropertyValueFactory<Route, String>("AirlineID"));
|
||||||
|
rSourceCol.setCellValueFactory(new PropertyValueFactory<Route, String>("DepartureAirport"));
|
||||||
|
//rSourceIDCol.setCellValueFactory(new PropertyValueFactory<Route, String>("SourceID"));
|
||||||
|
rDestCol.setCellValueFactory(new PropertyValueFactory<Route, String>("ArrivalAirport"));
|
||||||
|
//rDestIDCol.setCellValueFactory(new PropertyValueFactory<Route, String>("DestID"));
|
||||||
|
rCodeshareCol.setCellValueFactory(new PropertyValueFactory<Route, String>("Code"));
|
||||||
|
rStopsCol.setCellValueFactory(new PropertyValueFactory<Route, String>("Stops"));
|
||||||
|
rEquipmentCol.setCellValueFactory(new PropertyValueFactory<Route, String>("Equipment"));
|
||||||
|
|
||||||
|
theDataSet = this.parent.getCurrentDataset();
|
||||||
|
tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes()));
|
||||||
|
}
|
||||||
|
|
||||||
public void addRouteSingle() {
|
public void addRouteSingle() {
|
||||||
try {
|
try {
|
||||||
theDataSet.addRoute(
|
theDataSet.addRoute(
|
||||||
rAirlineBox.getText(),
|
rAirlineBox.getText(),
|
||||||
rSourceBox.getText(),
|
rSourceBox.getText(),
|
||||||
rDestBox.getText(),
|
rDestBox.getText(),
|
||||||
rCodeshareCBox.getSelectionModel().getSelectedItem().toString(),
|
rCodeshareBox.getText(),
|
||||||
rStopsBox.getText(),
|
rStopsBox.getText(),
|
||||||
rEquipmentBox.getText()
|
rEquipmentBox.getText()
|
||||||
);
|
);
|
||||||
rAirlineBox.clear();
|
rAirlineBox.clear();
|
||||||
rSourceBox.clear();
|
rSourceBox.clear();
|
||||||
rDestBox.clear();
|
rDestBox.clear();
|
||||||
rCodeshareCBox.getSelectionModel().clearSelection();
|
rCodeshareBox.clear();
|
||||||
rStopsBox.clear();
|
rStopsBox.clear();
|
||||||
rEquipmentBox.clear();
|
rEquipmentBox.clear();
|
||||||
tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes()));
|
tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes()));
|
||||||
@@ -74,21 +105,15 @@ public class RouteRDController extends Controller {
|
|||||||
alert.showAndWait();
|
alert.showAndWait();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public void analyse_Button() {
|
||||||
public void load() {
|
try {
|
||||||
rAirlineCol.setCellValueFactory(new PropertyValueFactory<Route, String>("AirlineName"));
|
RouteAnalyser graphController = (RouteAnalyser)
|
||||||
rAirlineIDCol.setCellValueFactory(new PropertyValueFactory<Route, String>("AirlineID"));
|
parent.replaceSceneContent("route_analyser.fxml");
|
||||||
rSourceCol.setCellValueFactory(new PropertyValueFactory<Route, String>("DepartureAirport"));
|
graphController.setApp(parent);
|
||||||
rSourceIDCol.setCellValueFactory(new PropertyValueFactory<Route, String>("SourceID"));
|
graphController.build_graph(theDataSet);
|
||||||
rDestCol.setCellValueFactory(new PropertyValueFactory<Route, String>("ArrivalAirport"));
|
}
|
||||||
rDestIDCol.setCellValueFactory(new PropertyValueFactory<Route, String>("DestID"));
|
catch (Exception e) {
|
||||||
rCodeshareCol.setCellValueFactory(new PropertyValueFactory<Route, String>("Code"));
|
e.printStackTrace();
|
||||||
rStopsCol.setCellValueFactory(new PropertyValueFactory<Route, String>("Stops"));
|
}
|
||||||
rEquipmentCol.setCellValueFactory(new PropertyValueFactory<Route, String>("Equipment"));
|
|
||||||
|
|
||||||
theDataSet = getParent().getCurrentDataset();
|
|
||||||
tableViewRouteRD.setItems(FXCollections.observableArrayList(theDataSet.getRoutes()));
|
|
||||||
|
|
||||||
rCodeshareCBox.getItems().addAll("Y", "");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<?import javafx.scene.chart.BarChart?>
|
||||||
|
<?import javafx.scene.chart.CategoryAxis?>
|
||||||
|
<?import javafx.scene.chart.NumberAxis?>
|
||||||
|
<?import javafx.scene.control.Label?>
|
||||||
|
<?import javafx.scene.layout.ColumnConstraints?>
|
||||||
|
<?import javafx.scene.layout.GridPane?>
|
||||||
|
<?import javafx.scene.layout.Pane?>
|
||||||
|
<?import javafx.scene.layout.RowConstraints?>
|
||||||
|
<?import javafx.scene.text.Font?>
|
||||||
|
|
||||||
|
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="568.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.45" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng202.group9.GUI.RouteAnalyser">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints maxHeight="457.0" minHeight="10.0" prefHeight="403.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints maxHeight="457.0" minHeight="10.0" prefHeight="403.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<Pane prefHeight="510.0" prefWidth="800.0" GridPane.columnSpan="2" GridPane.rowSpan="2">
|
||||||
|
<children>
|
||||||
|
<Label layoutX="14.0" layoutY="14.0" text="Route Analyser">
|
||||||
|
<font>
|
||||||
|
<Font size="29.0" />
|
||||||
|
</font>
|
||||||
|
</Label>
|
||||||
|
<Pane layoutX="16.0" layoutY="53.0" prefHeight="403.0" prefWidth="765.0">
|
||||||
|
<children>
|
||||||
|
<BarChart fx:id="analyserGraph" prefHeight="403.0" prefWidth="740.0" title="Routes Arriving at or Departing from each Airport">
|
||||||
|
<xAxis>
|
||||||
|
<CategoryAxis label="Airports" side="BOTTOM" />
|
||||||
|
</xAxis>
|
||||||
|
<yAxis>
|
||||||
|
<NumberAxis label="Number" side="LEFT" />
|
||||||
|
</yAxis>
|
||||||
|
</BarChart>
|
||||||
|
</children>
|
||||||
|
</Pane>
|
||||||
|
</children>
|
||||||
|
</Pane>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<?import javafx.scene.layout.RowConstraints?>
|
<?import javafx.scene.layout.RowConstraints?>
|
||||||
<?import javafx.scene.text.Font?>
|
<?import javafx.scene.text.Font?>
|
||||||
|
|
||||||
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="568.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.60" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng202.group9.GUI.RouteRDController">
|
<GridPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="568.0" prefWidth="800.0" xmlns="http://javafx.com/javafx/8.0.45" xmlns:fx="http://javafx.com/fxml/1" fx:controller="seng202.group9.GUI.RouteRDController">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
<Font size="29.0" />
|
<Font size="29.0" />
|
||||||
</font>
|
</font>
|
||||||
</Label>
|
</Label>
|
||||||
<Button layoutX="14.0" layoutY="524.0" mnemonicParsing="false" prefHeight="25.0" prefWidth="125.0" text="Analyse" />
|
<Button layoutX="14.0" layoutY="524.0" mnemonicParsing="false" onAction="#analyse_Button" prefHeight="25.0" prefWidth="125.0" text="Analyse" />
|
||||||
<Button layoutX="656.0" layoutY="524.0" mnemonicParsing="false" onAction="#addRouteSingle" prefHeight="25.0" prefWidth="125.0" text="Add" />
|
<Button layoutX="656.0" layoutY="524.0" mnemonicParsing="false" onAction="#addRouteSingle" prefHeight="25.0" prefWidth="125.0" text="Add" />
|
||||||
<Pane layoutX="16.0" layoutY="53.0" prefHeight="403.0" prefWidth="765.0">
|
<Pane layoutX="16.0" layoutY="53.0" prefHeight="403.0" prefWidth="765.0">
|
||||||
<children>
|
<children>
|
||||||
|
|||||||
Reference in New Issue
Block a user