Bar graphs may populate correctly. Unable to test due to unrelated compliation issue.

main
Michael Wilson 9 years ago
parent 6abea16a99
commit 56b215fb9d

@ -32,17 +32,18 @@ public class BarChooserController extends Controller{
ObservableList airportOptions = FXCollections.observableArrayList("Name", "ICAO", "IATA FFA", "Altitude",
"City", "Country");
ObservableList airlineOptions = FXCollections.observableArrayList("ID", "Name", "ICAO", "IATA", "Alias",
ObservableList airlineOptions = FXCollections.observableArrayList("Name", "ICAO", "IATA", "Alias",
"Call Sign", "Active", "Country");
ObservableList routeOptions = FXCollections.observableArrayList("ID", "Stops", "Codeshare", "Equipment", "Airline",
"Departure Airport", "Arival airport");
ObservableList routeOptions = FXCollections.observableArrayList("Stops", "Codeshare", "Equipment", "Airline",
"Departure Airport", "Arrival airport");
ArrayList<ObservableList> allOptions = new ArrayList<ObservableList>();
public void buildGraph() {
Session currentsession = this.getParent().getSession();
currentsession.setSelectedgraphagainst(graph_options.getSelectionModel().getSelectedItem().toString());
ArrayList<String> temp = new ArrayList<>(graph_options.getSelectionModel().getSelectedItems());
currentsession.setSelectedgraphoptions(temp);
currentsession.setUsefilter(usefilter.isSelected());
currentsession.setForceGraph(Boolean.FALSE);
replaceSceneContent(SceneCode.ROUTE_ANALYSER);

@ -4,13 +4,18 @@ package seng202.group9.GUI;
import javafx.fxml.FXML;
import javafx.scene.chart.BarChart;
import javafx.scene.chart.XYChart;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonBar;
import javafx.scene.control.ButtonType;
import seng202.group9.Controller.Dataset;
import seng202.group9.Controller.SceneCode;
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;
import java.util.Optional;
/**
@ -34,6 +39,18 @@ public class BarGraphController extends Controller {
private HashMap<String, Integer> departureAirportData = new HashMap<String, Integer>();
private HashMap<String, Integer> arrivalAirportData = new HashMap<String, Integer>();
private HashMap<String, Integer> nameData = new HashMap<String, Integer>();
private HashMap<String, Integer> ICAOData = new HashMap<String, Integer>();
private HashMap<String, Integer> IATAData = new HashMap<String, Integer>();
private HashMap<String, Integer> altitudeData = new HashMap<String, Integer>();
private HashMap<String, Integer> cityData = new HashMap<String, Integer>();
private HashMap<String, Integer> countryData = new HashMap<String, Integer>();
private HashMap<String, Integer> aliasData = new HashMap<String, Integer>();
private HashMap<String, Integer> callSignData = new HashMap<String, Integer>();
private HashMap<String, Integer> activeData = new HashMap<String, Integer>();
private void datasetupCustomRoute(ArrayList<Route> current_routes){
//Takes out the specified field then adds to the used data dict.
for (Route entry : current_routes){
@ -88,9 +105,287 @@ public class BarGraphController extends Controller {
seriesArivals.setName("Arrivals");
seriesDeparts.setName("Departures");
//Gives the formatted data to the graph.
analyserGraph.getData().add(seriesDeparts);
for (String entry : stopsData.keySet()){
seriesStops.getData().add(new XYChart.Data(entry,stopsData.get(entry)));
}
for (String entry : codeShareData.keySet()){
seriesCode.getData().add(new XYChart.Data(entry,codeShareData.get(entry)));
}
for (String entry : equipmentData.keySet()){
seriesEquipment.getData().add(new XYChart.Data(entry,equipmentData.get(entry)));
}
for (String entry : airlineData.keySet()){
seriesAirline.getData().add(new XYChart.Data(entry,airlineData.get(entry)));
}
for (String entry : arrivalAirportData.keySet()){
seriesArivals.getData().add(new XYChart.Data(entry,arrivalAirportData.get(entry)));
}
for (String entry : departureAirportData.keySet()){
seriesDeparts.getData().add(new XYChart.Data(entry,departureAirportData.get(entry)));
}
if (stopsData.keySet().size() > 125 && !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<ButtonType> result = alert.showAndWait();
if (result.isPresent() && result.get() == no) {
replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER);
}
}
else {
if (currentsession.getSelectedgraphoptions().contains("Stops")) {
analyserGraph.getData().add(seriesStops);
}
if (currentsession.getSelectedgraphoptions().contains("Codeshare")) {
analyserGraph.getData().add(seriesCode);
}
if (currentsession.getSelectedgraphoptions().contains("Equipment")) {
analyserGraph.getData().add(seriesEquipment);
}
if (currentsession.getSelectedgraphoptions().contains("Airline")) {
analyserGraph.getData().add(seriesAirline);
}
if (currentsession.getSelectedgraphoptions().contains("Arrival airport")) {
analyserGraph.getData().add(seriesArivals);
}
if (currentsession.getSelectedgraphoptions().contains("Departure Airport")) {
analyserGraph.getData().add(seriesDeparts);
}
}
}
private void datasetupCustomAirport(ArrayList<Airport> current_airports){
//Takes out the specified field then adds to the used data dict.
for (Airport entry : current_airports){
if (nameData.containsKey(entry.getName())){
nameData.replace(String.valueOf(entry.getName()),nameData.get(entry.getName())+1);
}else {
nameData.put(String.valueOf(entry.getName()),1);
}
if (ICAOData.containsKey(entry.getICAO())){
ICAOData.replace(String.valueOf(entry.getICAO()),ICAOData.get(entry.getICAO())+1);
}else {
ICAOData.put(String.valueOf(entry.getICAO()),1);
}
if (IATAData.containsKey(entry.getIATA_FFA())){
IATAData.replace(String.valueOf(entry.getIATA_FFA()),IATAData.get(entry.getIATA_FFA())+1);
}else {
IATAData.put(String.valueOf(entry.getIATA_FFA()),1);
}
if (altitudeData.containsKey(entry.getAltitude())){
altitudeData.replace(String.valueOf(entry.getAltitude()), altitudeData.get(entry.getAltitude())+1);
}else {
altitudeData.put(String.valueOf(entry.getAltitude()),1);
}
if (cityData.containsKey(entry.getCityName())){
cityData.replace(String.valueOf(entry.getCityName()),cityData.get(entry.getCityName())+1);
}else {
departureAirportData.put(String.valueOf(entry.getCityName()),1);
}
if (countryData.containsKey(entry.getCountryName())){
countryData.replace(String.valueOf(entry.getCountryName()),countryData.get(entry.getCountryName())+1);
}else {
countryData.put(String.valueOf(entry.getCountryName()),1);
}
}
}
/**
* Takes data from the current dataset and places it into the displayed bar graph.
*/
public void buildAirportGraph(){
XYChart.Series seriesName = new XYChart.Series();
XYChart.Series seriesICAO = new XYChart.Series();
XYChart.Series seriesIATA = new XYChart.Series();
XYChart.Series seriesAltitude = new XYChart.Series();
XYChart.Series seriesCity = new XYChart.Series();
XYChart.Series seriesCountry = new XYChart.Series();
seriesName.setName("Name");
seriesICAO.setName("ICAO");
seriesIATA.setName("IATA FFA");
seriesAltitude.setName("Altitude");
seriesCity.setName("City");
seriesCountry.setName("Country");
//Gives the formatted data to the graph.
for (String entry : nameData.keySet()){
seriesName.getData().add(new XYChart.Data(entry,nameData.get(entry)));
}
for (String entry : ICAOData.keySet()){
seriesICAO.getData().add(new XYChart.Data(entry,ICAOData.get(entry)));
}
for (String entry : IATAData.keySet()){
seriesIATA.getData().add(new XYChart.Data(entry,IATAData.get(entry)));
}
for (String entry : altitudeData.keySet()){
seriesAltitude.getData().add(new XYChart.Data(entry,altitudeData.get(entry)));
}
for (String entry : cityData.keySet()){
seriesCity.getData().add(new XYChart.Data(entry,cityData.get(entry)));
}
for (String entry : countryData.keySet()){
seriesCountry.getData().add(new XYChart.Data(entry,countryData.get(entry)));
}
if (nameData.keySet().size() > 125 && !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<ButtonType> result = alert.showAndWait();
if (result.isPresent() && result.get() == no) {
replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER);
}
}
else {
if (currentsession.getSelectedgraphoptions().contains("Name")) {
analyserGraph.getData().add(seriesName);
}
if (currentsession.getSelectedgraphoptions().contains("ICAO")) {
analyserGraph.getData().add(seriesIATA);
}
if (currentsession.getSelectedgraphoptions().contains("IATA FFA")) {
analyserGraph.getData().add(seriesIATA);
}
if (currentsession.getSelectedgraphoptions().contains("Altitude")) {
analyserGraph.getData().add(seriesAltitude);
}
if (currentsession.getSelectedgraphoptions().contains("City")) {
analyserGraph.getData().add(seriesCity);
}
if (currentsession.getSelectedgraphoptions().contains("Country")) {
analyserGraph.getData().add(seriesCountry);
}
}
}
private void datasetupCustomAirline(ArrayList<Airline> current_airlines){
//Takes out the specified field then adds to the used data dict.
for (Airline entry : current_airlines){
if (nameData.containsKey(entry.getName())){
nameData.replace(String.valueOf(entry.getName()),nameData.get(entry.getName())+1);
}else {
nameData.put(String.valueOf(entry.getName()),1);
}
if (ICAOData.containsKey(entry.getICAO())){
ICAOData.replace(String.valueOf(entry.getICAO()),ICAOData.get(entry.getICAO())+1);
}else {
ICAOData.put(String.valueOf(entry.getICAO()),1);
}
if (IATAData.containsKey(entry.getIATA())){
IATAData.replace(String.valueOf(entry.getIATA()),IATAData.get(entry.getIATA())+1);
}else {
IATAData.put(String.valueOf(entry.getIATA()),1);
}
if (altitudeData.containsKey(entry.getAlias())){
aliasData.replace(String.valueOf(entry.getAlias()), aliasData.get(entry.getAlias())+1);
}else {
aliasData.put(String.valueOf(entry.getAlias()),1);
}
if (cityData.containsKey(entry.getCallSign())){
callSignData.replace(String.valueOf(entry.getCallSign()),cityData.get(entry.getCallSign())+1);
}else {
departureAirportData.put(String.valueOf(entry.getCallSign()),1);
}
if (activeData.containsKey(entry.getCallSign())){
activeData.replace(String.valueOf(entry.getActive()),activeData.get(entry.getActive())+1);
}else {
activeData.put(String.valueOf(entry.getActive()),1);
}
if (countryData.containsKey(entry.getCountryName())){
countryData.replace(String.valueOf(entry.getCountryName()),countryData.get(entry.getCountryName())+1);
}else {
countryData.put(String.valueOf(entry.getCountryName()),1);
}
}
}
/**
* Takes data from the current dataset and places it into the displayed bar graph.
*/
public void buildAirlineGraph(){
XYChart.Series seriesName = new XYChart.Series();
XYChart.Series seriesICAO = new XYChart.Series();
XYChart.Series seriesIATA = new XYChart.Series();
XYChart.Series seriesAlias = new XYChart.Series();
XYChart.Series seriesCallsign = new XYChart.Series();
XYChart.Series seriesActive = new XYChart.Series();
XYChart.Series seriesCountry = new XYChart.Series();
seriesName.setName("Name");
seriesICAO.setName("ICAO");
seriesIATA.setName("IATA");
seriesAlias.setName("Alias");
seriesCallsign.setName("Call sign");
seriesActive.setName("Active");
seriesCountry.setName("Country");
//Gives the formatted data to the graph.
for (String entry : nameData.keySet()){
seriesName.getData().add(new XYChart.Data(entry,nameData.get(entry)));
}
for (String entry : ICAOData.keySet()){
seriesICAO.getData().add(new XYChart.Data(entry,ICAOData.get(entry)));
}
for (String entry : IATAData.keySet()){
seriesIATA.getData().add(new XYChart.Data(entry,IATAData.get(entry)));
}
for (String entry : aliasData.keySet()){
seriesAlias.getData().add(new XYChart.Data(entry,aliasData.get(entry)));
}
for (String entry : callSignData.keySet()){
seriesCallsign.getData().add(new XYChart.Data(entry,callSignData.get(entry)));
}
for (String entry : activeData.keySet()){
seriesActive.getData().add(new XYChart.Data(entry,activeData.get(entry)));
}
for (String entry : countryData.keySet()){
seriesCountry.getData().add(new XYChart.Data(entry,countryData.get(entry)));
}
if (nameData.keySet().size() > 125 && !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<ButtonType> result = alert.showAndWait();
if (result.isPresent() && result.get() == no) {
replaceSceneContent(SceneCode.PIE_GRAPH_CHOOSER);
}
}
else {
if (currentsession.getSelectedgraphoptions().contains("Name")) {
analyserGraph.getData().add(seriesName);
}
if (currentsession.getSelectedgraphoptions().contains("ICAO")) {
analyserGraph.getData().add(seriesIATA);
}
if (currentsession.getSelectedgraphoptions().contains("IATA FFA")) {
analyserGraph.getData().add(seriesIATA);
}
if (currentsession.getSelectedgraphoptions().contains("Altitude")) {
analyserGraph.getData().add(seriesAlias);
}
if (currentsession.getSelectedgraphoptions().contains("Call Sign")) {
analyserGraph.getData().add(seriesCallsign);
}
if (currentsession.getSelectedgraphoptions().contains("Active")) {
analyserGraph.getData().add(seriesActive);
}
if (currentsession.getSelectedgraphoptions().contains("Country")) {
analyserGraph.getData().add(seriesCountry);
}
}
}
/**
* Takes the current dataset then loads the data to the graph using build graph.
@ -112,7 +407,8 @@ public class BarGraphController extends Controller {
else{
d = currentdata.getAirports();
}
//datasetupCustomarAirport(d);
datasetupCustomAirport(d);
buildAirportGraph();
}
else if (temp == "Airlines"){
ArrayList<Airline> d = new ArrayList();

Loading…
Cancel
Save