def __init__(self): self.__linkList = [] # A list to hold a node of a linked List # A node represented as a list # A node will have two values [pointer,value] # Pointer will point to the next node in the list # If pointer is 0 it is the head of the linked list self.__utils = utils.Utility( ) # Utility Object to display printed Messages
def __init__(self): self.__airports = {} # -------- Dictionary of airports provided self.__allAirports = [] # ----- List of Dictionaries of all the airports from the DB self.__itenerary = [] # ------- List of all airports with their calculated distance and from Euro value self.__utils = utils.Utility() # Utility Object for formatted Prints self.__radiusEarth = 6371 # radius of earth in km
def test_IsAircraft(): utils_obj = utils.Utility() aircraft_obj = aircraft.Aircraft() aircrafts = aircraft_obj.get_AircraftData('./FC2/data/aircraft.csv') _aircraftsDict = aircrafts.set_index('code').to_dict(orient='index') cleanInput = (['BOS', 'DFW', 'ORD', 'SFO', 'ATL'],'777') airCRange, aircraft_type = utils_obj.isAircraft( cleanInput, _aircraftsDict) assert 9700 == airCRange assert aircraft_type == aircraft_type
def __init__(self): self.__airports = [] # List of all the airports provided in the input self.__airportCost = [] # This is a list of linkedLists thay will hold each airports cost to another airports # Airport Cost is actually a representation of a directed graph. # If on index 0 in airports we have 'Dublin' # Then on index 0 of airports cose we will have the edge values from 'Dublin' to other airports # Similarly for all other airports self.__visited = [] # An array of all visited airports self.__unvisited = [] # An array of all unvisited airports self.__utils = utils.Utility() self.__minDist=[]
def __init__(self): self.__utils = utils.Utility() # Utility Object for formatted Prints
def main(file): # Creating the required Objects airport_obj = airport.Airport() aircraft_obj = aircraft.Aircraft() currency_obj = currency.Currency() country_obj = country.Country() utils_obj = utils.Utility() it_obj = itenerary.Itenerary() # Getting the data airports = airport_obj.get_AirportData( os.path.join(FC2.__path__[0], 'data', 'airports_new.csv')) curr = currency_obj.get_CurrencyData( os.path.join(FC2.__path__[0], 'data', 'currencyrates.csv')) countries = country_obj.get_CountryData( os.path.join(FC2.__path__[0], 'data', 'countrycurrency.csv')) aircrafts = aircraft_obj.get_AircraftData( os.path.join(FC2.__path__[0], 'data', 'aircraft.csv')) _aircraftsDict = aircrafts.set_index('code').to_dict(orient='index') # Pass this file to Utility to check for errors utils_obj.displayStatusFormatMessage("\tParsing Inputs for Errors") testRoutes = utils_obj.handleTestInput(file) mergedData = utils_obj.getDict( airports, curr, countries[['name', 'currency_alphabetic_code']]) utils_obj.displaySuccessFormatMessage( "\tParsing Inputs for Errors -- COMPLETE") if len(testRoutes) == 0: print("None of the Test Lists had unique airports. Please try again") else: finalCSV = [] for routes in testRoutes: _route = routing.Routes() locations = [] utils_obj.displayStatusFormatMessage( "\tCleaning Individual Inputs") cleanedInput = utils_obj.checkInputErrors(routes, airports, aircrafts) utils_obj.displaySuccessFormatMessage( "\tCleaning Individual Inputs -- COMPLETE") hashes = '#' * 150 utils_obj.displayManFormatMessage( "{} \n\t\t\tCalculating Shortest Route for {}\n{}".format( hashes, cleanedInput, hashes)) utils_obj.displayManFormatMessage("\t\t[Generating Intinerary]", color="cyan") filteredData = it_obj.getIteneraryData(cleanedInput, mergedData) for locs in cleanedInput[0]: locations.append((filteredData.get(locs).get('Latitude'), filteredData.get(locs).get('Longitude'))) airportAdjGraph = it_obj.getAdjacencyGraph(locations) utils_obj.displayManFormatMessage("\t\t[Intinerary Generated]", color="cyan") utils_obj.displayManFormatMessage( "\t\t[Finding Route -----------------------]", color="cyan") airCRange, aircraft_type = utils_obj.isAircraft( cleanedInput, _aircraftsDict) routeList, routeDistances, Ngraph = _route.getRoute( airportAdjGraph, cleanedInput, filteredData) utils_obj.drawGraph(cleanedInput, Ngraph) if not airCRange == None: isRoutePossible = _route.isPossible(airCRange, routeDistances) if isRoutePossible: finalRoute, finalDistances = _route.getFinalAcRoute( airCRange, routeList, routeDistances) totalDistance = sum(finalDistances) _price = price.Price() finalRoute, finalPrice = _price.getPrice( finalRoute, finalDistances, filteredData, airCRange) finalRoute.append(aircraft_type) finalRoute.append(finalPrice) finalCSV.append(finalRoute) utils_obj.displayManFormatMessage("{}".format(hashes)) utils_obj.displayManFormatMessage( "\tROUTE GENERATED: {} CALCULATED PRICE: \u20ac{:.2f}". format(finalRoute[:-1], finalRoute[-1]), color="green") utils_obj.displayManFormatMessage("{}".format(hashes)) else: total_distance = "Route Not Possible" ogRoute = list(cleanedInput[0]) ogRoute.append(aircraft_type) ogRoute.append("No Route") finalCSV.append(ogRoute) utils_obj.displayManFormatMessage("{}".format(hashes)) utils_obj.displayManFormatMessage( "\t ROUTE: {} AIRCRAFT CANNOT MAKE THE JOURNEY TRY AGAIN" .format(ogRoute[:-1]), color="red") utils_obj.displayManFormatMessage("{}".format(hashes)) else: total_distance = sum(routeDistances) routeList.append(total_distance) finalCSV.append(routeList) utils_obj.displayManFormatMessage("{}".format(hashes)) utils_obj.displayManFormatMessage( "\tROUTE GENERATED: {} No Aircraft. CALCULATED DISTANCE: {:.2f}km" .format(routeList[:-1], routeList[-1]), color="yellow") utils_obj.displayManFormatMessage("{}".format(hashes)) if not finalCSV == []: utils_obj.to_csv(finalCSV)