def runApplicationWithUndo(): settings = Settings() undoController = UndoController() if str(settings.mode_repository) == "inmemory": student_repository = Repository(StudentValidator) discipline_repository = Repository(DisciplineValidator) grade_repository = Repository(GradeValidator) elif settings.mode_repository == "textfiles": student_repository = FileRepository(StudentValidator, settings.students, Student) discipline_repository = FileRepository(DisciplineValidator, settings.disciplines, Discipline) grade_repository = FileRepository(GradeValidator, settings.grades, Grade) elif settings.mode_repository == "binaryfiles": student_repository = BinaryRepository(StudentValidator, settings.students, Student) discipline_repository = BinaryRepository(DisciplineValidator, settings.disciplines, Discipline) grade_repository = BinaryRepository(GradeValidator, settings.grades, Grade) elif settings.mode_repository == "sqlfiles": student_repository = SQLRepository(StudentValidator, settings.students, Student, "Students", 1) discipline_repository = SQLRepository(DisciplineValidator, settings.disciplines, Discipline, "Disciplines", 1) grade_repository = SQLRepository(GradeValidator, settings.grades, Grade, "Grades", 2) elif settings.mode_repository == "jsonfiles": student_repository = JSONRepository(StudentValidator, settings.students, Student) discipline_repository = JSONRepository(DisciplineValidator, settings.disciplines, Discipline) grade_repository = JSONRepository(GradeValidator, settings.grades, Grade) else: print("You have to insert a valid repository mode!!!") student_controller = StudentController(student_repository, undoController) discipline_controller = DisciplineController(discipline_repository, undoController) grade_controller = GradeController(grade_repository, student_repository, discipline_repository, undoController) if settings.interface_mode == "gui": ui_gui = GUI(student_controller, discipline_controller, grade_controller, undoController) ui_gui.run_app() elif settings.interface_mode == "console": console = Console(student_controller, discipline_controller, grade_controller, undoController) console.runApp() else: print("You have to insert a valid interface!!!")