Merge branch 'Analyser'

Conflicts:
	src/main/java/seng202/group9/GUI/RouteRDController.java
main
Michael Wilson 9 years ago
commit 56eeb0e9f8

@ -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>

Loading…
Cancel
Save