class MasterController:
    def __init__(self, recv_queue, send_queue, total_workers):
        self.protocol = Protocol(recv_queue, send_queue, total_workers)

    def start(self):
        #self.protocol.start_connection(self.data_read)
        self.protocol.start_connection()
class Worker:
    def __init__(self, recv_queue, send_queue, status_queue,
                 data_cluster_write, data_cluster_read):
        self.protocol = Protocol(recv_queue, send_queue, status_queue,
                                 data_cluster_write, data_cluster_read)

        self.results_per_date = {}

    def start(self):
        self.protocol.start_connection(self.data_read, self.process_results,
                                       self.load_data, self.reset_data,
                                       self.save_data)

    def data_read(self, date, result):
        if date not in self.results_per_date:
            self.results_per_date[date] = [0, 0]

        if result == "positivi":
            self.results_per_date[date][0] += 1
        else:
            self.results_per_date[date][1] += 1

    def process_results(self):
        self.protocol.send_data(self.results_per_date)

    def load_data(self, date_results):
        self.results_per_date = date_results

    def reset_data(self):
        self.results_per_date = {}

    def save_data(self):
        return self.results_per_date
class TopCitiesController:
    def __init__(self, recv_queue, send_queue, total_workers, status_queue,
                 data_cluster_write, data_cluster_read):
        self.protocol = Protocol(recv_queue, send_queue, total_workers,
                                 status_queue, data_cluster_write,
                                 data_cluster_read)

        self.cities_data = {}

    def start(self):
        self.protocol.start_connection(self.data_read, self.process_results,
                                       self.load_data, self.reset_data,
                                       self.save_data)

    def data_read(self, cities_data):
        self.cities_data.update(cities_data)

    def process_results(self):
        top_cities = dict(Counter(self.cities_data).most_common(3))

        self.protocol.send_data(top_cities)

    def load_data(self, cities_data):
        self.cities_data = cities_data

    def reset_data(self):
        self.cities_data = {}

    def save_data(self):
        return self.cities_data
Example #4
0
class DateSorter:
    def __init__(self, recv_queue, send_queue, total_workers, status_queue,
                 data_cluster_write, data_cluster_read):
        self.protocol = Protocol(recv_queue, send_queue, total_workers,
                                 status_queue, data_cluster_write,
                                 data_cluster_read)

        self.date_data = OrderedDict()

    def start(self):
        self.protocol.start_connection(self.data_read, self.process_results,
                                       self.load_data, self.reset_data,
                                       self.save_data)

    def data_read(self, data):
        self.date_data.update(sorted(data.items()))

    def process_results(self):
        self.protocol.send_data(self.date_data)

    def load_data(self, date_data):
        self.date_data = date_data

    def reset_data(self):
        self.date_data = OrderedDict()

    def save_data(self):
        return self.date_data
Example #5
0
class Worker:
    def __init__(self, recv_queue, send_queue, status_queue,
                 data_cluster_write, data_cluster_read):
        self.protocol = Protocol(recv_queue, send_queue, status_queue,
                                 data_cluster_write, data_cluster_read)
        self.positives_per_city = {}

    def start(self):
        self.protocol.start_connection(self.data_read, self.process_results,
                                       self.load_data, self.reset_data,
                                       self.save_data)

    def data_read(self, place):
        if place not in self.positives_per_city:
            self.positives_per_city[place] = 0

        self.positives_per_city[place] += 1
        print("Positive of {}".format(place))

    def load_data(self, positives_per_city):
        self.positives_per_city = positives_per_city

    def reset_data(self):
        self.positives_per_city = {}

    def save_data(self):
        return self.positives_per_city

    def process_results(self):
        self.protocol.send_data(self.positives_per_city)
Example #6
0
class SummaryController:
    def __init__(self, recv_queue, status_queue, data_cluster_write,
                 data_cluster_read, coordinator_queue):
        self.protocol = Protocol(recv_queue, status_queue, data_cluster_write,
                                 data_cluster_read, coordinator_queue)

        self.top_cities = None
        self.date_data = None
        self.percentage = None

    def start(self):
        self.protocol.start_connection(self.top_cities_read,
                                       self.date_data_read, self.count_read,
                                       self.write_summary, self.load_data,
                                       self.reset_data, self.save_data)

    def top_cities_read(self, top_cities):
        self.top_cities = top_cities

    def date_data_read(self, date_data):
        self.date_data = date_data

    def count_read(self, percentage):
        if percentage.isdigit():
            self.percentage = float(percentage) * 100
        else:
            self.percentage = percentage

    def write_summary(self, conn_id):
        print("Starting to write file {}".format(FOLDER_WRITE + 'summary_' +
                                                 conn_id + '.txt'))
        with open(FOLDER_WRITE + 'summary_' + conn_id + '.txt', 'w') as file:
            file.write("date - totale_positivi - totale_deceduti\n")
            for date in self.date_data:
                file.write(date + " - " + str(self.date_data[date][0]) +
                           " - " + str(self.date_data[date][1]) + "\n")

            file.write("\nTop 3 cities - totale positivi\n")
            for place in self.top_cities:
                file.write(place + " - " + str(self.top_cities[place]) + "\n")

            file.write("\nPorcentuale Deceduti=")
            file.write(str(self.percentage) + "%")

    def load_data(self, data):
        self.top_cities = data[0]
        self.date_data = data[1]
        self.percentage = data[2]

    def reset_data(self):
        self.top_cities = None
        self.date_data = None
        self.percentage = None

    def save_data(self):
        return [self.top_cities, self.date_data, self.percentage]
class DateSorter:
    def __init__(self, recv_queue, send_queue, total_workers):
        self.protocol = Protocol(recv_queue, send_queue, total_workers)
        self.date_data = OrderedDict()

    def start(self):
        self.protocol.start_connection(self.data_read)

        self.process_results()

    def data_read(self, data):
        self.date_data.update(sorted(data.items()))

    def process_results(self):
        self.protocol.send_data(self.date_data)
Example #8
0
class TopCitiesController:
    def __init__(self, recv_queue, send_queue, total_workers):
        self.protocol = Protocol(recv_queue, send_queue, total_workers)
        self.cities_data = {}
        self.top_cities = {}

    def start(self):
        self.protocol.start_connection(self.data_read)
        self.process_results()

    def data_read(self, data):
        self.cities_data.update(data)
    
    def process_results(self):
        self.top_cities = dict(Counter(self.cities_data).most_common(3))

        self.protocol.send_data(self.top_cities)
Example #9
0
class SummaryController:
    def __init__(self, recv_queue):
        self.protocol = Protocol(recv_queue)

    def start(self):
        self.protocol.start_connection(
            self.top_cities_read,
            self.date_data_read,
            self.count_read
        )

        self.write_summary()

    def top_cities_read(self, top_cities):
        self.top_cities = top_cities

    def date_data_read(self, date_data):
        self.date_data = date_data

    def count_read(self, percentage):
        self.percentage = percentage * 100
    
    def write_summary(self):
        with open(WRITE_FILE, 'w') as file:
            file.write("date - totale_positivi - totale_deceduti\n")
            for date in self.date_data:
                file.write(
                    date +
                    " - " +
                    str(self.date_data[date][0]) +
                    " - " +
                    str(self.date_data[date][1]) +
                    "\n"
                )
            
            file.write("\nTop 3 cities - totale positivi\n")
            for place in self.top_cities:
                file.write(
                    place +
                    " - " +
                    str(self.top_cities[place]) +
                    "\n"
                )

            file.write("\nPorcentuale Deceduti=")
            file.write(str(self.percentage) + "%")
Example #10
0
class Worker:
    def __init__(self, recv_queue, send_queue, master_queue):
        self.protocol = Protocol(recv_queue, send_queue, master_queue)
        self.positives_per_city = {}

    def start(self):
        self.protocol.start_connection(self.data_read)

        self.process_results()

    def data_read(self, place):
        if place not in self.positives_per_city:
            self.positives_per_city[place] = 0

        self.positives_per_city[place] += 1

    def process_results(self):
        self.protocol.send_data(self.positives_per_city)
class Worker:
    def __init__(self, recv_queue, send_queue, status_queue, data_cluster_write, data_cluster_read):
        self.protocol = Protocol(
            recv_queue,
            send_queue,
            status_queue,
            data_cluster_write,
            data_cluster_read
        )

        self.total_positivi = 0
        self.total_deceduti = 0

    def start(self):
        self.protocol.start_connection(
            self.data_read,
            self.process_results,
            self.load_data,
            self.reset_data,
            self.save_data            
        )

    def data_read(self, positivi, deceduti):
        self.total_positivi += int(positivi)
        self.total_deceduti += int(deceduti)

    def process_results(self):
        result = "Not possible"

        if self.total_positivi != 0:
            result = str(self.total_deceduti / self.total_positivi)

        self.protocol.send_data(result)

    def load_data(self, data):
        self.total_positivi = data[0]
        self.total_deceduti = data[1]

    def reset_data(self):
        self.total_positivi = 0
        self.total_deceduti = 0

    def save_data(self):
        return [self.total_positivi, self.total_deceduti]
Example #12
0
class Worker:
    def __init__(self, recv_queue, send_queue):
        self.protocol = Protocol(recv_queue, send_queue)
        self.total_positivi = 0
        self.total_deceduti = 0

    def start(self):
        self.protocol.start_connection(self.data_read)

        self.process_results()

    def data_read(self, positivi, deceduti):
        self.total_positivi += positivi
        self.total_deceduti += deceduti
    
    def process_results(self):
        result = self.total_deceduti / self.total_positivi

        self.protocol.send_data(result)
Example #13
0
class Worker:
    def __init__(self, recv_queue, send_queue, master_queue):
        self.protocol = Protocol(recv_queue, send_queue, master_queue)

        self.results_per_date = {}

    def start(self):
        self.protocol.start_connection(self.data_read)

        self.process_results()

    def data_read(self, date, result):
        if date not in self.results_per_date:
            self.results_per_date[date] = [0, 0]

        if result == "positivi":
            self.results_per_date[date][0] += 1
        else:
            self.results_per_date[date][1] += 1

    def process_results(self):
        self.protocol.send_data(self.results_per_date)