/
main.py
76 lines (66 loc) · 3.02 KB
/
main.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
65
66
67
68
69
70
71
72
73
74
75
76
import mysql.connector
from ui.ui import Ui
from service.rental_service import RentalService
from service.movie_service import MovieService
from service.client_service import ClientService
from service.statistics_service import StatisticsService
from repository.repository1 import Repository
from service.undo_service import UndoService
from repository.file_repository import FileRepository
from repository.binary_file_repository import BinaryRepository
from repository.json_repository import JSONRepository
from repository.db_repository import DatabaseRepository
def read_settings():
f = open("settings.properties", "r")
line = f.readline().strip()
settings_dict = dict()
while line != "":
if line[0] != "#":
line = line.split("=")
settings_dict[line[0].strip()] = line[1].strip().strip('"')
line = f.readline().strip()
f.close()
if len(settings_dict) == 0:
raise Exception("Empty settings file")
return settings_dict
def set_classes(settings_dict):
repositories = {
'inmemory': Repository,
'textfiles': FileRepository,
'binaryfiles': BinaryRepository,
'jsonfiles': JSONRepository,
'database' : DatabaseRepository
}
return repositories[settings_dict["repository"]]
if __name__ == '__main__':
try:
settings = read_settings()
repository_type = set_classes(settings)
if repository_type == Repository:
client_repository = Repository()
movie_repository = Repository()
rental_repository = Repository()
elif repository_type == DatabaseRepository:
database = mysql.connector.connect(
host="127.0.0.1",
user="root",
passwd="juneAd@^^2019",
database="mydatabase"
)
cursor = database.cursor()
client_repository = DatabaseRepository(database, cursor, 'clients', ["idClient", "name"])
movie_repository = DatabaseRepository(database, cursor, 'movies', ["id_movie", "title", "description", "genre"])
rental_repository = DatabaseRepository(database, cursor, 'rentals', ["id_client", "id_movie", "rented_date", "due_data", "returned_date"])
else:
client_repository = repository_type(settings["clients"])
movie_repository = repository_type(settings["movies"])
rental_repository = repository_type(settings["rentals"])
undo_service = UndoService()
client_service = ClientService(client_repository, undo_service)
movie_service = MovieService(movie_repository, undo_service)
rental_service = RentalService(rental_repository, client_repository, movie_repository, client_service, movie_service, undo_service)
statistics_service = StatisticsService(client_repository, movie_repository, rental_repository)
ui = Ui(client_service, movie_service, rental_service, statistics_service, undo_service, settings["init_list"])
ui.start()
except Exception as ex:
print(ex)