-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dispatcher.py
64 lines (52 loc) · 2.05 KB
/
Dispatcher.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# encoding: utf-8
""" Dispatcher.py """
from logging.config import fileConfig
from FileSystemWorker import create_or_check_path
from Database import Database
from EventProcessor import EventProcessor
from Parser import Parser
from Downloader import Downloader
class Dispatcher(object):
""" Dispatcher class to control process of working. """
def __init__(self):
create_or_check_path("logs/")
fileConfig('config/logger.conf')
self.database = Database()
self.parser = Parser()
self.event_processor = EventProcessor()
self.downloader = Downloader()
self.new_events_file = None
self.new_data = None
self.new_event = None
def processor(self):
""" Process of downloading, parsing and saving information. """
download_status = True
while download_status:
getting_event_status = self.get_event()
if getting_event_status:
processing_event_status = self.process_event()
if processing_event_status:
self.process_data()
else:
download_status = self.download()
def get_event(self):
""" Asks Parser for a new event.
:return: False if getting event failed else True
"""
self.new_event = self.parser.get_event(self.new_events_file)
return False if self.new_event is None else True
def download(self):
""" Sends a request to Downloader.
:return: False if downloading failed else True
"""
self.new_events_file = self.downloader.download_archive()
return False if self.new_events_file is None else True
def process_event(self):
""" Asks EventProcessor to get data from event.
:return: False if processing event failed else True
"""
self.new_data = self.event_processor.process_event(self.new_event)
return False if self.new_data is None else True
def process_data(self):
""" Sends data to Database. """
self.database.process_data(self.new_data)