package ru.khasang.cachoeira.data; import javafx.collections.FXCollections; import ru.khasang.cachoeira.commands.CommandExecutor; import ru.khasang.cachoeira.model.IProject; import ru.khasang.cachoeira.model.ITask; import ru.khasang.cachoeira.model.Project; import ru.khasang.cachoeira.properties.RecentProjectsController; import ru.khasang.cachoeira.viewcontroller.MainWindowController; import java.io.File; public class DataService { private static DataService instance; private DataStoreInterface storeInterface; private DataService() { storeInterface = new DBSchemeManager(); } public static DataService getInstance() { if (instance == null) { instance = new DataService(); } return instance; } public void loadProject(File projectFile) { if (projectFile.exists()) { IProject project = storeInterface.getProjectFromFile(projectFile, new Project()); project.setResourceList(FXCollections.observableArrayList(storeInterface.getResourceListFromFile(projectFile))); project.setTaskList(FXCollections.observableArrayList(storeInterface.getTaskListFromFile(projectFile))); for (ITask task : project.getTaskList()) { task.setResourceList(FXCollections.observableArrayList(storeInterface.getResourceListByTaskFromFile(projectFile, project, task))); } for (ITask task : project.getTaskList()) { task.setParentTasks(FXCollections.observableArrayList(storeInterface.getParentTaskListByTaskFromFile(projectFile, project, task))); } for (ITask task : project.getTaskList()) { task.setChildTasks(FXCollections.observableArrayList(storeInterface.getChildTaskListByTaskFromFile(projectFile, project, task))); } RecentProjectsController.getInstance().addRecentProject(projectFile); MainWindowController mainWindowController = new MainWindowController(projectFile, project, new CommandExecutor()); mainWindowController.launch(); mainWindowController.refreshInformation(); } } public void createProject(IProject project, File newProjectFile) { // Создаем файл storeInterface.createProjectFile(newProjectFile.getPath(), project); // Очищаем файл проекта на тот случай, если файл перезаписывается storeInterface.eraseAllTables(newProjectFile); storeInterface.saveProjectToFile(newProjectFile, project); RecentProjectsController.getInstance().addRecentProject(newProjectFile); MainWindowController mainWindowController = new MainWindowController(newProjectFile, project, new CommandExecutor()); mainWindowController.launch(); } public void saveProject(File projectFile, IProject project) { //сохранение проекта storeInterface.saveProjectToFile(projectFile, project); storeInterface.saveTasksToFile(projectFile, project); storeInterface.saveResourcesToFile(projectFile, project); storeInterface.saveParentTasksToFile(projectFile, project); storeInterface.saveChildTasksToFile(projectFile, project); storeInterface.saveResourcesByTask(projectFile, project); } public void saveProjectAs(File projectFile, IProject project) { storeInterface.createProjectFile(projectFile.getPath(), project); storeInterface.saveProjectToFile(projectFile, project); storeInterface.saveTasksToFile(projectFile, project); storeInterface.saveResourcesToFile(projectFile, project); storeInterface.saveParentTasksToFile(projectFile, project); storeInterface.saveChildTasksToFile(projectFile, project); storeInterface.saveResourcesByTask(projectFile, project); RecentProjectsController.getInstance().addRecentProject(projectFile); } }