/// <summary> /// Load the database into Airport/Airplane/Airroute objects /// </summary> private void Initialise() { try { //initialise objects m_SimTime = 0; int[] airportList; m_airports = new List<Airport>(); m_airportAllocationQueue = new Queue<Airport>(); //create new database object ATCDatabase.ATCDB initialDB = new ATCDatabase.ATCDB(); //get number of airports m_numAirports = initialDB.GetNumAirports(); //get list of airports airportList = initialDB.GetAirportIDList(); //iterate through each airport and get all the data associated with the airport and instanciate those objects foreach (int airportID in airportList) { //declarations string airportName; int[] airplaneList, airRouteList; Queue<Airplane> landedList = new Queue<Airplane>(); Queue<AirRoute> departingRoutes = new Queue<AirRoute>(); List<AirRoute> incomingRoutes = new List<AirRoute>(); //get all airplane ids in current airport airplaneList = initialDB.GetAirplaneIDsForAirport(airportID); //get all the departing AirRoutes for the airport airRouteList = initialDB.GetDepartingAirRouteIDsForAirport(airportID); //go through each airplane, get it's info and construct the object foreach (int airplaneID in airplaneList) { string planeType; double cruisingKPH, fuelConsPerHour; int initAirportID; initialDB.LoadAirplane(airplaneID, out planeType, out cruisingKPH, out fuelConsPerHour, out initAirportID); landedList.Enqueue(new Airplane(airplaneID, planeType, cruisingKPH, fuelConsPerHour, airportID)); } //go through each departing AirRoute and construct the AirRoute object foreach (int airRouteID in airRouteList) { int fromAirportID, toAirportID; double distanceKM; initialDB.LoadAirRoute(airRouteID, out fromAirportID, out toAirportID, out distanceKM); departingRoutes.Enqueue(new AirRoute(airRouteID, fromAirportID, toAirportID, distanceKM)); } //go through each airport, get all the departing AirRoutes and if the destination is the current airport //then add it to the incomingRoutes list foreach (int id in airportList) { int[] routeList = initialDB.GetDepartingAirRouteIDsForAirport(id); foreach (int airRouteID in routeList) { int fromAirportID, toAirportID; double distanceKM; initialDB.LoadAirRoute(airRouteID, out fromAirportID, out toAirportID, out distanceKM); if (toAirportID == airportID) { incomingRoutes.Add(new AirRoute(airRouteID, fromAirportID, toAirportID, distanceKM)); } } } //finally load the airport name and then add it to the list of airports to be allocated initialDB.LoadAirport(airportID, out airportName); m_airportAllocationQueue.Enqueue(new Airport(airportID, airportName, landedList, departingRoutes, incomingRoutes)); } } catch (Exception exception) { System.Console.WriteLine(exception.Message); Initialise(); } }
//Constructor. public ATCBizControllerMasterImpl() { m_db = new ATCDatabase.ATCDB(); //Create database object. m_routes = new List <AirRoute>(); System.Console.WriteLine("ATC Master running"); }
/// <summary> /// Load the database into Airport/Airplane/Airroute objects /// </summary> private void Initialise() { try { //initialise objects m_SimTime = 0; int[] airportList; m_airports = new List <Airport>(); m_airportAllocationQueue = new Queue <Airport>(); //create new database object ATCDatabase.ATCDB initialDB = new ATCDatabase.ATCDB(); //get number of airports m_numAirports = initialDB.GetNumAirports(); //get list of airports airportList = initialDB.GetAirportIDList(); //iterate through each airport and get all the data associated with the airport and instanciate those objects foreach (int airportID in airportList) { //declarations string airportName; int[] airplaneList, airRouteList; Queue <Airplane> landedList = new Queue <Airplane>(); Queue <AirRoute> departingRoutes = new Queue <AirRoute>(); List <AirRoute> incomingRoutes = new List <AirRoute>(); //get all airplane ids in current airport airplaneList = initialDB.GetAirplaneIDsForAirport(airportID); //get all the departing AirRoutes for the airport airRouteList = initialDB.GetDepartingAirRouteIDsForAirport(airportID); //go through each airplane, get it's info and construct the object foreach (int airplaneID in airplaneList) { string planeType; double cruisingKPH, fuelConsPerHour; int initAirportID; initialDB.LoadAirplane(airplaneID, out planeType, out cruisingKPH, out fuelConsPerHour, out initAirportID); landedList.Enqueue(new Airplane(airplaneID, planeType, cruisingKPH, fuelConsPerHour, airportID)); } //go through each departing AirRoute and construct the AirRoute object foreach (int airRouteID in airRouteList) { int fromAirportID, toAirportID; double distanceKM; initialDB.LoadAirRoute(airRouteID, out fromAirportID, out toAirportID, out distanceKM); departingRoutes.Enqueue(new AirRoute(airRouteID, fromAirportID, toAirportID, distanceKM)); } //go through each airport, get all the departing AirRoutes and if the destination is the current airport //then add it to the incomingRoutes list foreach (int id in airportList) { int[] routeList = initialDB.GetDepartingAirRouteIDsForAirport(id); foreach (int airRouteID in routeList) { int fromAirportID, toAirportID; double distanceKM; initialDB.LoadAirRoute(airRouteID, out fromAirportID, out toAirportID, out distanceKM); if (toAirportID == airportID) { incomingRoutes.Add(new AirRoute(airRouteID, fromAirportID, toAirportID, distanceKM)); } } } //finally load the airport name and then add it to the list of airports to be allocated initialDB.LoadAirport(airportID, out airportName); m_airportAllocationQueue.Enqueue(new Airport(airportID, airportName, landedList, departingRoutes, incomingRoutes)); } } catch (Exception exception) { System.Console.WriteLine(exception.Message); Initialise(); } }