_ums_

Task 5

May 23rd, 2022
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.71 KB | None | 0 0
  1. public class FileBackedTasksManager extends InMemoryTaskManager {
  2.     private final Path pathToSave;
  3.     private static final String HEADER = "ID,TYPE,NAME,STATUS,DESCRIPTION,EPIC\n";
  4.     private static int id = 0;
  5.  
  6.     private FileBackedTasksManager(String file) {
  7.         this.pathToSave = Paths.get(file);
  8.     }
  9.  
  10.     public static void main(String[] args) throws IOException {
  11.         FileBackedTasksManager fileBackedTasksManager = new FileBackedTasksManager("src/files/file.csv");
  12.  
  13.         // Создаем экземпляры задач
  14.         Task task1 = new Task(fileBackedTasksManager.calcId(), "taskName_1", "taskDescription_1");
  15.         Task task2 = new Task(fileBackedTasksManager.calcId(), "taskName_2", "taskDescription_2");
  16.         Epic epic1 = new Epic(fileBackedTasksManager.calcId(), "epicTaskName_1", "epicTaskDescription_1");
  17.         Subtask subtask11 = new Subtask(fileBackedTasksManager.calcId(), "subTaskName_11", "subTaskDescription_11");
  18.         Subtask subtask12 = new Subtask(fileBackedTasksManager.calcId(), "subTaskName_12", "subTaskDescription_12");
  19.         Task task3 = new Task(fileBackedTasksManager.calcId(), "taskName_3", "taskDescription_3");
  20.  
  21.         // Добавляем задачи в мапы
  22.         fileBackedTasksManager.putTask(task1);
  23.         fileBackedTasksManager.putTask(task2);
  24.         fileBackedTasksManager.putTask(task3);
  25.         fileBackedTasksManager.putEpicTask(epic1);
  26.         fileBackedTasksManager.putSubTask(epic1, subtask11);
  27.         fileBackedTasksManager.putSubTask(epic1, subtask12);
  28.  
  29.         // Обновляем задачи
  30.         fileBackedTasksManager.updateTask(1, task1, Status.IN_PROGRESS);
  31.         fileBackedTasksManager.updateEpicTask(3, epic1);
  32.         fileBackedTasksManager.updateSubTask(4, subtask11, Status.IN_PROGRESS);
  33.  
  34.         // Печатаем списки задачи
  35.         System.out.println("Печать списков задач после изменений");
  36.         fileBackedTasksManager.getTaskMap().forEach((key, value) -> System.out.println(key + " " + value));
  37.         fileBackedTasksManager.getEpicTaskMap().forEach((key, value) -> System.out.println(key + " " + value));
  38.         fileBackedTasksManager.getSubTaskMap().forEach((key, value) -> System.out.println(key + " " + value));
  39.         System.out.println();
  40.  
  41.         //Вызов истории
  42.         fileBackedTasksManager.getTaskByID(1);
  43.         fileBackedTasksManager.getTaskByID(3);
  44.         fileBackedTasksManager.getTaskByID(4);
  45.         fileBackedTasksManager.getTaskByID(1);
  46.         fileBackedTasksManager.getTaskByID(6);
  47.  
  48.         System.out.println("Печать истории");
  49.         fileBackedTasksManager.history().forEach(System.out::println);
  50.         System.out.println();
  51.  
  52.         fileBackedTasksManager.removeFromHistory(6);
  53.         System.out.println("Печать истории после удаления задачи id 6 из истории");
  54.         fileBackedTasksManager.history().forEach(System.out::println);
  55.         System.out.println();
  56.  
  57.         // Восстанавливаем менеджер из файла
  58.         System.out.println("Восстанавливаем менеджер задач");
  59.         File file = new File("src/files/file.csv");
  60.         FileBackedTasksManager restoredManager = loadFromFile(file);
  61.  
  62.         System.out.println("Печать восстановленных задач (проверка)");
  63.         restoredManager.getTaskMap().forEach((key, value) -> System.out.println(key + " " + value));
  64.         restoredManager.getEpicTaskMap().forEach((key, value) -> System.out.println(key + " " + value));
  65.         restoredManager.getSubTaskMap().forEach((key, value) -> System.out.println(key + " " + value));
  66.         System.out.println();
  67.  
  68.         System.out.println("Печать строки истории просмотров");
  69.         System.out.println(toString(fileBackedTasksManager.history));
  70.         System.out.println(fromStringHistory(toString(fileBackedTasksManager.history)));
  71.         System.out.println();
  72.  
  73.         System.out.println("Печать восстановленной истории просмотров");
  74.         restoredManager.history().forEach(System.out::println);
  75.         System.out.println();
  76.  
  77.         System.out.println("Печать нового id, с которого начнется отсчет новых задач");
  78.         System.out.println(id);
  79.         System.out.println();
  80.  
  81.         System.out.println("Для проверки создадим новую задачу taskName_7 в restoredManager и распечатаем все задачи");
  82.         Task task7 = new Task(restoredManager.calcId(), "taskName_7", "task_Description_7");
  83.         restoredManager.putTask(task7);
  84.         restoredManager.getAllTasks().forEach((key, value) -> System.out.println(key + " " + value));
  85.     }
  86.  
  87.     private static FileBackedTasksManager loadFromFile(File file) throws IOException {
  88.         FileBackedTasksManager restoredManager = new FileBackedTasksManager(file.getPath());
  89.         List<String> fileLines = Files.readAllLines(Path.of(file.getPath()));
  90.         for (int i = 1; i < (fileLines.size()); i++) {
  91.             if (i < fileLines.size() - 2) {
  92.                 addTask(restoredManager, fileLines.get(i));
  93.             } else if (i == (fileLines.size() - 1)) {
  94.                 List<Integer> history = fromStringHistory(fileLines.get(i));
  95.                 for (Integer elem : history) {
  96.                     restoredManager.getTaskByID(elem);
  97.                 }
  98.             }
  99.         }
  100.         String[] lastTaskLine = fileLines.get(fileLines.size() - 3).trim().split(",");
  101.         id = Integer.parseInt(lastTaskLine[0]);
  102.         return restoredManager;
  103.     }
  104. }
  105.  
  106.  
Advertisement
Add Comment
Please, Sign In to add comment