Example #1
0
 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
Example #2
0
    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
Example #3
0
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
Example #4
0
 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=[]
Example #5
0
 def __init__(self):
     self.__utils = utils.Utility()  # Utility Object for formatted Prints
Example #6
0
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)