From 25dd70e668ecfa89d81878c8241998af5ba15a78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BB=D0=B0=D0=B2=D0=B0?= Date: Sat, 30 Nov 2024 19:28:47 +0400 Subject: [PATCH 1/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=A2=D0=97=207=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Main.java | 26 ++- src/manager/FileBackedTaskManager.java | 191 ++++++++++++++++++++ src/manager/TaskType.java | 5 + src/task/Epic.java | 15 ++ src/task/Subtask.java | 17 ++ src/task/Task.java | 14 ++ test/manager/FileBackedTaskManagerTest.java | 70 +++++++ test/manager/TestFile.csv | 7 + 8 files changed, 339 insertions(+), 6 deletions(-) create mode 100644 src/manager/FileBackedTaskManager.java create mode 100644 src/manager/TaskType.java create mode 100644 test/manager/FileBackedTaskManagerTest.java create mode 100644 test/manager/TestFile.csv diff --git a/src/Main.java b/src/Main.java index beead38..d4628ed 100644 --- a/src/Main.java +++ b/src/Main.java @@ -2,25 +2,39 @@ import task.Epic; import task.Status; import task.Subtask; +import task.Task; + +import java.io.File; +import java.nio.file.Path; +import java.nio.file.Paths; public class Main { public static void main(String[] args) { - TaskManager taskManager = Managers.getDefault(); - Epic epic1 = new Epic("Epic-1","Epic-1",Status.NEW); + + File file = new File("src/loadFile.csv"); + System.out.println(FileBackedTaskManager.loadFromFile(file).getHistory()); + FileBackedTaskManager taskManager = new FileBackedTaskManager(Managers.getDefaultHistory()); + Epic epic1 = new Epic("Epic-1","Epic-1",Status.IN_PROGRESS); Epic epic2 = new Epic("Epic-2","Epic-2",Status.NEW); + Task task1 = new Task("Task-1","description for task-1",Status.NEW); - Subtask subtask1 = new Subtask("Subtask-1","Subtask-1 for Epic-1",Status.NEW,epic1); - Subtask subtask2 = new Subtask("Subtask-2","Subtask-2 for Epic-1",Status.NEW,epic1); + + Subtask subtask1 = new Subtask("Subtask-1","Subtask-1 for Epic-1",Status.DONE,epic1); + Subtask subtask2 = new Subtask("Subtask-2","Subtask-2 for Epic-1",Status.IN_PROGRESS,epic1); Subtask subtask3 = new Subtask("Subtask-3","Subtask-3 for Epic-1",Status.NEW,epic1); + taskManager.createTask(task1); taskManager.createEpic(epic1); taskManager.createEpic(epic2); + taskManager.createSubtask(subtask1); taskManager.createSubtask(subtask2); taskManager.createSubtask(subtask3); - taskManager.getEpic(1); + + + /* taskManager.getEpic(1); System.out.println(taskManager.getHistory()); taskManager.getSubtask(3); System.out.println(taskManager.getHistory()); @@ -37,7 +51,7 @@ public static void main(String[] args) { taskManager.deleteSubtask(4); System.out.println(taskManager.getHistory()); taskManager.deleteEpic(1); - System.out.println(taskManager.getHistory()); + System.out.println(taskManager.getHistory());*/ } diff --git a/src/manager/FileBackedTaskManager.java b/src/manager/FileBackedTaskManager.java new file mode 100644 index 0000000..055e965 --- /dev/null +++ b/src/manager/FileBackedTaskManager.java @@ -0,0 +1,191 @@ +package manager; + +import task.Epic; +import task.Status; +import task.Subtask; +import task.Task; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + +public class FileBackedTaskManager extends InMemoryTaskManager implements TaskManager{ + private String pathToFile = "src/file.csv"; + private Path file; + + + public Path getFile() { + return file; + } + + public String getPathToFile() { + return pathToFile; + } + + public FileBackedTaskManager(HistoryManager defaultHistory, Path file) { + super(defaultHistory); + this.pathToFile = file.toAbsolutePath().toString(); + this.file = file; + } + + public FileBackedTaskManager(HistoryManager defaultHistory) { + super(defaultHistory); + this.file = Paths.get(pathToFile); + + } + + + + + @Override + public Task createTask(Task task) { + super.createTask(task); + + save(); + return task; + } + + @Override + public Task createEpic(Epic epic) { + super.createEpic(epic); + + save(); + return epic; + + + } + + @Override + public Task createSubtask(Subtask subtask) { + super.createSubtask(subtask); + + save(); + return subtask; + + } + + + public String toString(Task task) { + return task.getId()+","+task.getType() + "," + task.getName() + "," + task.getDescription() + "," + task.getStatus(); + } + + /* public void save(Task task){ + + + try (BufferedWriter writer = new BufferedWriter(new FileWriter(pathToFile,true))){ + + writer.write(toString(task)+"\n"); + + + + } catch (IOException e) { + throw new RuntimeException(e); + } + + + }*/ + public void save(){ + try (BufferedWriter bw = new BufferedWriter(new FileWriter(pathToFile))){ + + bw.write("id,type,name,status,description,epic\n"); + for (Task task : getTasks()){ + bw.write(toString(task)+"\n"); + } + for (Task epic : getEpics()){ + bw.write(toString(epic)+"\n"); + } + for (Subtask subtask : getSubtasks()){ + bw.write(toString(subtask)+","+subtask.getEpic().getId()+"\n"); + } + + + } catch (IOException e) { + throw new ManagerSaveException(e); + } + + } + + public Task fromString(String value){ + String[] mass = value.split(","); + + if (mass[1].equals("TASK")){ + Status status; + if (mass[4].equals("NEW")){ + status = Status.NEW; + } + else if (mass[4].equals("DONE")){ + status = Status.DONE; + } + else { status = Status.IN_PROGRESS;} + Task task = new Task(Integer.parseInt(mass[0]),mass[2],mass[3], status ); + task.setType(TaskType.TASK); + createTask(task); + return task; + } + else if (mass[1].equals("EPIC")){ + Status status; + if (mass[4].equals("NEW")){ + status = Status.NEW; + } + else if (mass[4].equals("DONE")){ + status = Status.DONE; + } + else { status = Status.IN_PROGRESS;} + Epic epic = new Epic(Integer.parseInt(mass[0]),mass[2],mass[3], status ); + epic.setType(TaskType.EPIC); + createEpic(epic); + return epic; + } + else { + Status status; + if (mass[4].equals("NEW")){ + status = Status.NEW; + } + else if (mass[4].equals("DONE")){ + status = Status.DONE; + } + else { status = Status.IN_PROGRESS;} + Subtask subtask = new Subtask(Integer.parseInt(mass[0]),mass[2],mass[3], status,getEpic(Integer.parseInt(mass[5])) ); + subtask.setType(TaskType.SUBTASK); + createSubtask(subtask); + return subtask; + } + + + } + public static FileBackedTaskManager loadFromFile(File file){ + FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory()); + try { + List lines = Files.readAllLines(file.toPath()); + for (String string : lines){ + if (!string.equals(lines.get(0))){ + fileBackedTaskManager.fromString(string); + } + } + } catch (IOException e) { + throw new RuntimeException(e); + } + + + return fileBackedTaskManager; + } + public class ManagerSaveException extends RuntimeException{ + + + public ManagerSaveException(final Throwable cause) { + super(cause); + } + + + + + } + + +} diff --git a/src/manager/TaskType.java b/src/manager/TaskType.java new file mode 100644 index 0000000..22f3a01 --- /dev/null +++ b/src/manager/TaskType.java @@ -0,0 +1,5 @@ +package manager; + +public enum TaskType { + TASK,SUBTASK,EPIC +} diff --git a/src/task/Epic.java b/src/task/Epic.java index fd9d807..38ac560 100644 --- a/src/task/Epic.java +++ b/src/task/Epic.java @@ -1,19 +1,34 @@ package task; +import manager.TaskType; + import java.util.HashMap; import java.util.Map; public class Epic extends Task { protected Map subtaskList = new HashMap<>(); + TaskType type; public Epic(String name, String description, Status status) { super(name, description, status); + this.type = TaskType.EPIC; + + } + + @Override + public void setType(TaskType type) { + this.type = type; + } + @Override + public TaskType getType() { + return type; } public Epic(Integer id, String name, String description, Status status) { super(id, name, description, status); + this.type = TaskType.EPIC; } diff --git a/src/task/Subtask.java b/src/task/Subtask.java index 36fd11d..c694b3a 100644 --- a/src/task/Subtask.java +++ b/src/task/Subtask.java @@ -1,17 +1,34 @@ package task; +import manager.TaskType; + public class Subtask extends Task { Epic epic; + @Override + public TaskType getType() { + return type; + } + + TaskType type; + public Subtask(String name, String description, Status status, Epic epic) { super(name, description, status); this.epic = epic; + this.type = TaskType.SUBTASK; } public Subtask(Integer id, String name, String description, Status status, Epic epic) { super(id, name, description, status); this.epic = epic; + this.type = TaskType.SUBTASK; + + } + + @Override + public void setType(TaskType type) { + this.type = type; } public void setEpic(Epic epic) { diff --git a/src/task/Task.java b/src/task/Task.java index 9493958..dfd908a 100644 --- a/src/task/Task.java +++ b/src/task/Task.java @@ -1,5 +1,7 @@ package task; +import manager.TaskType; + import java.util.Objects; public class Task { @@ -7,11 +9,14 @@ public class Task { private String name; private String description; private Status status; + private TaskType type; + public Task(String name, String descriprion, Status status) { this.name = name; this.description = descriprion; this.status = status; + this.type = TaskType.TASK; } public Task(Integer id, String name, String descriprion, Status status) { @@ -19,6 +24,7 @@ public Task(Integer id, String name, String descriprion, Status status) { this.name = name; this.description = descriprion; this.status = status; + this.type = TaskType.TASK; } public void setId(Integer id) { @@ -50,6 +56,14 @@ public int hashCode() { return Objects.hashCode(id); } + public void setType(TaskType type) { + this.type = type; + } + + public TaskType getType() { + return type; + } + public Integer getId() { return id; } diff --git a/test/manager/FileBackedTaskManagerTest.java b/test/manager/FileBackedTaskManagerTest.java new file mode 100644 index 0000000..017c41c --- /dev/null +++ b/test/manager/FileBackedTaskManagerTest.java @@ -0,0 +1,70 @@ +package manager; +import org.junit.jupiter.api.Test; +import task.Epic; +import task.Status; +import task.Subtask; +import task.Task; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class FileBackedTaskManagerTest { + @Test + void saveInFile(){ + + + try { + FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory(), + Files.createTempFile("testFile",".csv")); + Epic epic1 = new Epic("Epic-1","Epic-1",Status.IN_PROGRESS); + Epic epic2 = new Epic("Epic-2","Epic-2",Status.NEW); + Task task1 = new Task("Task-1","description for task-1",Status.NEW); + + + Subtask subtask1 = new Subtask("Subtask-1","Subtask-1 for Epic-1",Status.DONE,epic1); + Subtask subtask2 = new Subtask("Subtask-2","Subtask-2 for Epic-1",Status.IN_PROGRESS,epic1); + Subtask subtask3 = new Subtask("Subtask-3","Subtask-3 for Epic-1",Status.NEW,epic1); + fileBackedTaskManager.createTask(task1); + fileBackedTaskManager.createEpic(epic1); + fileBackedTaskManager.createEpic(epic2); + + fileBackedTaskManager.createSubtask(subtask1); + fileBackedTaskManager.createSubtask(subtask2); + fileBackedTaskManager.createSubtask(subtask3); + List newFile = Files.readAllLines(fileBackedTaskManager.getFile()); + List testFile = Files.readAllLines(Paths.get("test/manager/testFile.csv")); + for (int i = 0; i < testFile.size(); i++){ + assertTrue(newFile.get(i).equals(testFile.get(i)), newFile.get(i)+" : "+testFile.get(i)); + } + assertEquals(newFile.size(),7); + + } catch (IOException e) { + throw new RuntimeException(e); + } + + + + + } + @Test + void loadFromFile(){ + FileBackedTaskManager.loadFromFile(new File("test/manager/TestFile.csv")); + try { + List newFile = Files.readAllLines(Paths.get("src/file.csv")); + List loadFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); + for (int i = 0; i < loadFile.size(); i++){ + assertTrue(newFile.get(i).equals(loadFile.get(i)), newFile.get(i)+" : "+loadFile.get(i)); + } + assertEquals(newFile.size(),loadFile.size()); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } +} diff --git a/test/manager/TestFile.csv b/test/manager/TestFile.csv new file mode 100644 index 0000000..0438837 --- /dev/null +++ b/test/manager/TestFile.csv @@ -0,0 +1,7 @@ +id,type,name,status,description,epic +1,TASK,Task-1,description for task-1,NEW +2,EPIC,Epic-1,Epic-1,IN_PROGRESS +3,EPIC,Epic-2,Epic-2,NEW +4,SUBTASK,Subtask-1,Subtask-1 for Epic-1,DONE,2 +5,SUBTASK,Subtask-2,Subtask-2 for Epic-1,IN_PROGRESS,2 +6,SUBTASK,Subtask-3,Subtask-3 for Epic-1,NEW,2 From 761e4ca5e3dc0f42d739a3bca8ab44d56ee5642a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BB=D0=B0=D0=B2=D0=B0?= Date: Sat, 30 Nov 2024 19:33:45 +0400 Subject: [PATCH 2/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=A2=D0=97=207=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B0.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=B0?= =?UTF-8?q?=D0=B2=D1=82=D0=BE-=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Main.java | 14 ++- src/manager/FileBackedTaskManager.java | 96 +++++++++------------ src/manager/TaskType.java | 2 +- test/manager/FileBackedTaskManagerTest.java | 36 ++++---- 4 files changed, 64 insertions(+), 84 deletions(-) diff --git a/src/Main.java b/src/Main.java index d4628ed..4b1cca9 100644 --- a/src/Main.java +++ b/src/Main.java @@ -5,8 +5,6 @@ import task.Task; import java.io.File; -import java.nio.file.Path; -import java.nio.file.Paths; public class Main { @@ -16,14 +14,14 @@ public static void main(String[] args) { File file = new File("src/loadFile.csv"); System.out.println(FileBackedTaskManager.loadFromFile(file).getHistory()); FileBackedTaskManager taskManager = new FileBackedTaskManager(Managers.getDefaultHistory()); - Epic epic1 = new Epic("Epic-1","Epic-1",Status.IN_PROGRESS); - Epic epic2 = new Epic("Epic-2","Epic-2",Status.NEW); - Task task1 = new Task("Task-1","description for task-1",Status.NEW); + Epic epic1 = new Epic("Epic-1", "Epic-1", Status.IN_PROGRESS); + Epic epic2 = new Epic("Epic-2", "Epic-2", Status.NEW); + Task task1 = new Task("Task-1", "description for task-1", Status.NEW); - Subtask subtask1 = new Subtask("Subtask-1","Subtask-1 for Epic-1",Status.DONE,epic1); - Subtask subtask2 = new Subtask("Subtask-2","Subtask-2 for Epic-1",Status.IN_PROGRESS,epic1); - Subtask subtask3 = new Subtask("Subtask-3","Subtask-3 for Epic-1",Status.NEW,epic1); + Subtask subtask1 = new Subtask("Subtask-1", "Subtask-1 for Epic-1", Status.DONE, epic1); + Subtask subtask2 = new Subtask("Subtask-2", "Subtask-2 for Epic-1", Status.IN_PROGRESS, epic1); + Subtask subtask3 = new Subtask("Subtask-3", "Subtask-3 for Epic-1", Status.NEW, epic1); taskManager.createTask(task1); taskManager.createEpic(epic1); taskManager.createEpic(epic2); diff --git a/src/manager/FileBackedTaskManager.java b/src/manager/FileBackedTaskManager.java index 055e965..eed8ca0 100644 --- a/src/manager/FileBackedTaskManager.java +++ b/src/manager/FileBackedTaskManager.java @@ -15,9 +15,9 @@ import java.nio.file.Paths; import java.util.List; -public class FileBackedTaskManager extends InMemoryTaskManager implements TaskManager{ - private String pathToFile = "src/file.csv"; - private Path file; +public class FileBackedTaskManager extends InMemoryTaskManager implements TaskManager { + private String pathToFile = "src/file.csv"; + private Path file; public Path getFile() { @@ -41,8 +41,6 @@ public FileBackedTaskManager(HistoryManager defaultHistory) { } - - @Override public Task createTask(Task task) { super.createTask(task); @@ -72,36 +70,22 @@ public Task createSubtask(Subtask subtask) { public String toString(Task task) { - return task.getId()+","+task.getType() + "," + task.getName() + "," + task.getDescription() + "," + task.getStatus(); + return task.getId() + "," + task.getType() + "," + task.getName() + "," + task.getDescription() + "," + task.getStatus(); } - /* public void save(Task task){ - - - try (BufferedWriter writer = new BufferedWriter(new FileWriter(pathToFile,true))){ - - writer.write(toString(task)+"\n"); - - - - } catch (IOException e) { - throw new RuntimeException(e); - } - - }*/ - public void save(){ - try (BufferedWriter bw = new BufferedWriter(new FileWriter(pathToFile))){ + public void save() { + try (BufferedWriter bw = new BufferedWriter(new FileWriter(pathToFile))) { bw.write("id,type,name,status,description,epic\n"); - for (Task task : getTasks()){ - bw.write(toString(task)+"\n"); + for (Task task : getTasks()) { + bw.write(toString(task) + "\n"); } - for (Task epic : getEpics()){ - bw.write(toString(epic)+"\n"); + for (Task epic : getEpics()) { + bw.write(toString(epic) + "\n"); } - for (Subtask subtask : getSubtasks()){ - bw.write(toString(subtask)+","+subtask.getEpic().getId()+"\n"); + for (Subtask subtask : getSubtasks()) { + bw.write(toString(subtask) + "," + subtask.getEpic().getId() + "\n"); } @@ -111,47 +95,45 @@ public void save(){ } - public Task fromString(String value){ + public Task fromString(String value) { String[] mass = value.split(","); - if (mass[1].equals("TASK")){ + if (mass[1].equals("TASK")) { Status status; - if (mass[4].equals("NEW")){ - status = Status.NEW; - } - else if (mass[4].equals("DONE")){ - status = Status.DONE; + if (mass[4].equals("NEW")) { + status = Status.NEW; + } else if (mass[4].equals("DONE")) { + status = Status.DONE; + } else { + status = Status.IN_PROGRESS; } - else { status = Status.IN_PROGRESS;} - Task task = new Task(Integer.parseInt(mass[0]),mass[2],mass[3], status ); + Task task = new Task(Integer.parseInt(mass[0]), mass[2], mass[3], status); task.setType(TaskType.TASK); createTask(task); return task; - } - else if (mass[1].equals("EPIC")){ + } else if (mass[1].equals("EPIC")) { Status status; - if (mass[4].equals("NEW")){ + if (mass[4].equals("NEW")) { status = Status.NEW; - } - else if (mass[4].equals("DONE")){ + } else if (mass[4].equals("DONE")) { status = Status.DONE; + } else { + status = Status.IN_PROGRESS; } - else { status = Status.IN_PROGRESS;} - Epic epic = new Epic(Integer.parseInt(mass[0]),mass[2],mass[3], status ); + Epic epic = new Epic(Integer.parseInt(mass[0]), mass[2], mass[3], status); epic.setType(TaskType.EPIC); createEpic(epic); return epic; - } - else { + } else { Status status; - if (mass[4].equals("NEW")){ + if (mass[4].equals("NEW")) { status = Status.NEW; - } - else if (mass[4].equals("DONE")){ + } else if (mass[4].equals("DONE")) { status = Status.DONE; + } else { + status = Status.IN_PROGRESS; } - else { status = Status.IN_PROGRESS;} - Subtask subtask = new Subtask(Integer.parseInt(mass[0]),mass[2],mass[3], status,getEpic(Integer.parseInt(mass[5])) ); + Subtask subtask = new Subtask(Integer.parseInt(mass[0]), mass[2], mass[3], status, getEpic(Integer.parseInt(mass[5]))); subtask.setType(TaskType.SUBTASK); createSubtask(subtask); return subtask; @@ -159,12 +141,13 @@ else if (mass[4].equals("DONE")){ } - public static FileBackedTaskManager loadFromFile(File file){ + + public static FileBackedTaskManager loadFromFile(File file) { FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory()); try { List lines = Files.readAllLines(file.toPath()); - for (String string : lines){ - if (!string.equals(lines.get(0))){ + for (String string : lines) { + if (!string.equals(lines.get(0))) { fileBackedTaskManager.fromString(string); } } @@ -175,7 +158,8 @@ public static FileBackedTaskManager loadFromFile(File file){ return fileBackedTaskManager; } - public class ManagerSaveException extends RuntimeException{ + + public class ManagerSaveException extends RuntimeException { public ManagerSaveException(final Throwable cause) { @@ -183,8 +167,6 @@ public ManagerSaveException(final Throwable cause) { } - - } diff --git a/src/manager/TaskType.java b/src/manager/TaskType.java index 22f3a01..575ce98 100644 --- a/src/manager/TaskType.java +++ b/src/manager/TaskType.java @@ -1,5 +1,5 @@ package manager; public enum TaskType { - TASK,SUBTASK,EPIC + TASK, SUBTASK, EPIC } diff --git a/test/manager/FileBackedTaskManagerTest.java b/test/manager/FileBackedTaskManagerTest.java index 017c41c..e943df6 100644 --- a/test/manager/FileBackedTaskManagerTest.java +++ b/test/manager/FileBackedTaskManagerTest.java @@ -1,4 +1,5 @@ package manager; + import org.junit.jupiter.api.Test; import task.Epic; import task.Status; @@ -16,20 +17,20 @@ public class FileBackedTaskManagerTest { @Test - void saveInFile(){ + void saveInFile() { try { - FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory(), - Files.createTempFile("testFile",".csv")); - Epic epic1 = new Epic("Epic-1","Epic-1",Status.IN_PROGRESS); - Epic epic2 = new Epic("Epic-2","Epic-2",Status.NEW); - Task task1 = new Task("Task-1","description for task-1",Status.NEW); + FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory(), + Files.createTempFile("testFile", ".csv")); + Epic epic1 = new Epic("Epic-1", "Epic-1", Status.IN_PROGRESS); + Epic epic2 = new Epic("Epic-2", "Epic-2", Status.NEW); + Task task1 = new Task("Task-1", "description for task-1", Status.NEW); - Subtask subtask1 = new Subtask("Subtask-1","Subtask-1 for Epic-1",Status.DONE,epic1); - Subtask subtask2 = new Subtask("Subtask-2","Subtask-2 for Epic-1",Status.IN_PROGRESS,epic1); - Subtask subtask3 = new Subtask("Subtask-3","Subtask-3 for Epic-1",Status.NEW,epic1); + Subtask subtask1 = new Subtask("Subtask-1", "Subtask-1 for Epic-1", Status.DONE, epic1); + Subtask subtask2 = new Subtask("Subtask-2", "Subtask-2 for Epic-1", Status.IN_PROGRESS, epic1); + Subtask subtask3 = new Subtask("Subtask-3", "Subtask-3 for Epic-1", Status.NEW, epic1); fileBackedTaskManager.createTask(task1); fileBackedTaskManager.createEpic(epic1); fileBackedTaskManager.createEpic(epic2); @@ -39,29 +40,28 @@ void saveInFile(){ fileBackedTaskManager.createSubtask(subtask3); List newFile = Files.readAllLines(fileBackedTaskManager.getFile()); List testFile = Files.readAllLines(Paths.get("test/manager/testFile.csv")); - for (int i = 0; i < testFile.size(); i++){ - assertTrue(newFile.get(i).equals(testFile.get(i)), newFile.get(i)+" : "+testFile.get(i)); + for (int i = 0; i < testFile.size(); i++) { + assertTrue(newFile.get(i).equals(testFile.get(i)), newFile.get(i) + " : " + testFile.get(i)); } - assertEquals(newFile.size(),7); + assertEquals(newFile.size(), 7); } catch (IOException e) { throw new RuntimeException(e); } - - } + @Test - void loadFromFile(){ + void loadFromFile() { FileBackedTaskManager.loadFromFile(new File("test/manager/TestFile.csv")); try { List newFile = Files.readAllLines(Paths.get("src/file.csv")); List loadFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); - for (int i = 0; i < loadFile.size(); i++){ - assertTrue(newFile.get(i).equals(loadFile.get(i)), newFile.get(i)+" : "+loadFile.get(i)); + for (int i = 0; i < loadFile.size(); i++) { + assertTrue(newFile.get(i).equals(loadFile.get(i)), newFile.get(i) + " : " + loadFile.get(i)); } - assertEquals(newFile.size(),loadFile.size()); + assertEquals(newFile.size(), loadFile.size()); } catch (IOException e) { throw new RuntimeException(e); } From 1faae45bdce600550e7f33af92d5618f0425c747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BB=D0=B0=D0=B2=D0=B0?= Date: Sat, 30 Nov 2024 19:37:48 +0400 Subject: [PATCH 3/5] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B2=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=A2=D0=97=207=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B0.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B4=D0=BB=D1=8F=20=D0=B0?= =?UTF-8?q?=D0=B2=D1=82=D0=BE-=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/manager/FileBackedTaskManagerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/manager/FileBackedTaskManagerTest.java b/test/manager/FileBackedTaskManagerTest.java index e943df6..be16eab 100644 --- a/test/manager/FileBackedTaskManagerTest.java +++ b/test/manager/FileBackedTaskManagerTest.java @@ -39,7 +39,7 @@ void saveInFile() { fileBackedTaskManager.createSubtask(subtask2); fileBackedTaskManager.createSubtask(subtask3); List newFile = Files.readAllLines(fileBackedTaskManager.getFile()); - List testFile = Files.readAllLines(Paths.get("test/manager/testFile.csv")); + List testFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); for (int i = 0; i < testFile.size(); i++) { assertTrue(newFile.get(i).equals(testFile.get(i)), newFile.get(i) + " : " + testFile.get(i)); } From 27ff82396ed4375293d8a89e47591dd53428e864 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BB=D0=B0=D0=B2=D0=B0?= Date: Mon, 2 Dec 2024 14:41:16 +0400 Subject: [PATCH 4/5] =?UTF-8?q?=D0=92=D1=82=D0=BE=D1=80=D0=B0=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=A2=D0=97=207=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B0.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/manager/FileBackedTaskManager.java | 77 ++++++++++++--------- test/manager/FileBackedTaskManagerTest.java | 32 +++++++-- test/manager/TestFile.csv | 2 +- test/manager/emptyFile.csv | 0 4 files changed, 75 insertions(+), 36 deletions(-) create mode 100644 test/manager/emptyFile.csv diff --git a/src/manager/FileBackedTaskManager.java b/src/manager/FileBackedTaskManager.java index eed8ca0..71e7281 100644 --- a/src/manager/FileBackedTaskManager.java +++ b/src/manager/FileBackedTaskManager.java @@ -77,7 +77,7 @@ public String toString(Task task) { public void save() { try (BufferedWriter bw = new BufferedWriter(new FileWriter(pathToFile))) { - bw.write("id,type,name,status,description,epic\n"); + bw.write("id,type,name,description,status,epic\n"); for (Task task : getTasks()) { bw.write(toString(task) + "\n"); } @@ -97,43 +97,50 @@ public void save() { public Task fromString(String value) { String[] mass = value.split(","); - - if (mass[1].equals("TASK")) { - Status status; - if (mass[4].equals("NEW")) { - status = Status.NEW; - } else if (mass[4].equals("DONE")) { - status = Status.DONE; + int id = Integer.parseInt(mass[0]); + String type = mass[1]; + String name = mass[2]; + String description = mass[3]; + String status = mass[4]; + + + if (type.equals("TASK")) { + Status taskStatus; + if (status.equals("NEW")) { + taskStatus = Status.NEW; + } else if (status.equals("DONE")) { + taskStatus = Status.DONE; } else { - status = Status.IN_PROGRESS; + taskStatus = Status.IN_PROGRESS; } - Task task = new Task(Integer.parseInt(mass[0]), mass[2], mass[3], status); + Task task = new Task(id, name, description, taskStatus); task.setType(TaskType.TASK); createTask(task); return task; - } else if (mass[1].equals("EPIC")) { - Status status; - if (mass[4].equals("NEW")) { - status = Status.NEW; - } else if (mass[4].equals("DONE")) { - status = Status.DONE; + } else if (type.equals("EPIC")) { + Status taskStatus; + if (status.equals("NEW")) { + taskStatus = Status.NEW; + } else if (status.equals("DONE")) { + taskStatus = Status.DONE; } else { - status = Status.IN_PROGRESS; + taskStatus = Status.IN_PROGRESS; } - Epic epic = new Epic(Integer.parseInt(mass[0]), mass[2], mass[3], status); + Epic epic = new Epic(id, name, description, taskStatus); epic.setType(TaskType.EPIC); createEpic(epic); return epic; } else { - Status status; - if (mass[4].equals("NEW")) { - status = Status.NEW; - } else if (mass[4].equals("DONE")) { - status = Status.DONE; + Status taskStatus; + int epicId = Integer.parseInt(mass[5]); + if (status.equals("NEW")) { + taskStatus = Status.NEW; + } else if (status.equals("DONE")) { + taskStatus = Status.DONE; } else { - status = Status.IN_PROGRESS; + taskStatus = Status.IN_PROGRESS; } - Subtask subtask = new Subtask(Integer.parseInt(mass[0]), mass[2], mass[3], status, getEpic(Integer.parseInt(mass[5]))); + Subtask subtask = new Subtask(id, name, description, taskStatus, getEpic(epicId)); subtask.setType(TaskType.SUBTASK); createSubtask(subtask); return subtask; @@ -143,16 +150,16 @@ public Task fromString(String value) { } public static FileBackedTaskManager loadFromFile(File file) { - FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory()); + FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory(),Paths.get(file.getPath())); + //теперь запись будет происходит в тот-же файл из которого была загрузка, а не в "file.csv" try { List lines = Files.readAllLines(file.toPath()); - for (String string : lines) { - if (!string.equals(lines.get(0))) { - fileBackedTaskManager.fromString(string); - } + for (int i = 1; i < lines.size(); i++) { + fileBackedTaskManager.fromString(lines.get(i)); } + } catch (IOException e) { - throw new RuntimeException(e); + throw new ManagerLoadException(e); } @@ -169,5 +176,13 @@ public ManagerSaveException(final Throwable cause) { } + public static class ManagerLoadException extends RuntimeException { + + + public ManagerLoadException(final Throwable cause) { + super(cause); + } + + } } diff --git a/test/manager/FileBackedTaskManagerTest.java b/test/manager/FileBackedTaskManagerTest.java index be16eab..24be148 100644 --- a/test/manager/FileBackedTaskManagerTest.java +++ b/test/manager/FileBackedTaskManagerTest.java @@ -9,6 +9,7 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; @@ -46,7 +47,7 @@ void saveInFile() { assertEquals(newFile.size(), 7); } catch (IOException e) { - throw new RuntimeException(e); + //если полностью удалить try-catch, то выдаст ошибку( } @@ -54,10 +55,16 @@ void saveInFile() { @Test void loadFromFile() { + List loadFile = null; + try { + loadFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); + } catch (IOException e) { + throw new RuntimeException(e); + } FileBackedTaskManager.loadFromFile(new File("test/manager/TestFile.csv")); try { - List newFile = Files.readAllLines(Paths.get("src/file.csv")); - List loadFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); + List newFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); + for (int i = 0; i < loadFile.size(); i++) { assertTrue(newFile.get(i).equals(loadFile.get(i)), newFile.get(i) + " : " + loadFile.get(i)); } @@ -65,6 +72,23 @@ void loadFromFile() { } catch (IOException e) { throw new RuntimeException(e); } + } + + @Test + void loadFromEmptyFile(){ + FileBackedTaskManager.loadFromFile(new File("test/manager/emptyFile.csv")); + + try { + List newFile = Files.readAllLines(Paths.get("test/manager/emptyFile.csv")); + + assertEquals(newFile.size(),0); + + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + } -} + diff --git a/test/manager/TestFile.csv b/test/manager/TestFile.csv index 0438837..0cfd080 100644 --- a/test/manager/TestFile.csv +++ b/test/manager/TestFile.csv @@ -1,4 +1,4 @@ -id,type,name,status,description,epic +id,type,name,description,status,epic 1,TASK,Task-1,description for task-1,NEW 2,EPIC,Epic-1,Epic-1,IN_PROGRESS 3,EPIC,Epic-2,Epic-2,NEW diff --git a/test/manager/emptyFile.csv b/test/manager/emptyFile.csv new file mode 100644 index 0000000..e69de29 From 3ef903974db59fa1114dd26ddaab8ec0f44a7464 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=BB=D0=B0=D0=B2=D0=B0?= Date: Tue, 3 Dec 2024 00:05:11 +0400 Subject: [PATCH 5/5] =?UTF-8?q?=D0=A2=D1=80=D0=B5=D1=82=D1=8C=D1=8F=20?= =?UTF-8?q?=D1=80=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=A2=D0=97=207=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BD=D1=82=D0=B0=20=D1=81=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D0=B9=20=D0=B2=20=D1=82?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B0=D1=85.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/manager/FileBackedTaskManagerTest.java | 100 +++++++++----------- 1 file changed, 44 insertions(+), 56 deletions(-) diff --git a/test/manager/FileBackedTaskManagerTest.java b/test/manager/FileBackedTaskManagerTest.java index 24be148..41ba3b1 100644 --- a/test/manager/FileBackedTaskManagerTest.java +++ b/test/manager/FileBackedTaskManagerTest.java @@ -9,7 +9,6 @@ import java.io.File; import java.io.IOException; import java.nio.file.Files; -import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; @@ -18,77 +17,66 @@ public class FileBackedTaskManagerTest { @Test - void saveInFile() { - - - try { - FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory(), - Files.createTempFile("testFile", ".csv")); - Epic epic1 = new Epic("Epic-1", "Epic-1", Status.IN_PROGRESS); - Epic epic2 = new Epic("Epic-2", "Epic-2", Status.NEW); - Task task1 = new Task("Task-1", "description for task-1", Status.NEW); - - - Subtask subtask1 = new Subtask("Subtask-1", "Subtask-1 for Epic-1", Status.DONE, epic1); - Subtask subtask2 = new Subtask("Subtask-2", "Subtask-2 for Epic-1", Status.IN_PROGRESS, epic1); - Subtask subtask3 = new Subtask("Subtask-3", "Subtask-3 for Epic-1", Status.NEW, epic1); - fileBackedTaskManager.createTask(task1); - fileBackedTaskManager.createEpic(epic1); - fileBackedTaskManager.createEpic(epic2); - - fileBackedTaskManager.createSubtask(subtask1); - fileBackedTaskManager.createSubtask(subtask2); - fileBackedTaskManager.createSubtask(subtask3); - List newFile = Files.readAllLines(fileBackedTaskManager.getFile()); - List testFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); - for (int i = 0; i < testFile.size(); i++) { - assertTrue(newFile.get(i).equals(testFile.get(i)), newFile.get(i) + " : " + testFile.get(i)); - } - assertEquals(newFile.size(), 7); - - } catch (IOException e) { - //если полностью удалить try-catch, то выдаст ошибку( + void saveInFile() throws IOException { + + + FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory(), + Files.createTempFile("testFile", ".csv")); + Epic epic1 = new Epic("Epic-1", "Epic-1", Status.IN_PROGRESS); + Epic epic2 = new Epic("Epic-2", "Epic-2", Status.NEW); + Task task1 = new Task("Task-1", "description for task-1", Status.NEW); + + + Subtask subtask1 = new Subtask("Subtask-1", "Subtask-1 for Epic-1", Status.DONE, epic1); + Subtask subtask2 = new Subtask("Subtask-2", "Subtask-2 for Epic-1", Status.IN_PROGRESS, epic1); + Subtask subtask3 = new Subtask("Subtask-3", "Subtask-3 for Epic-1", Status.NEW, epic1); + fileBackedTaskManager.createTask(task1); + fileBackedTaskManager.createEpic(epic1); + fileBackedTaskManager.createEpic(epic2); + + fileBackedTaskManager.createSubtask(subtask1); + fileBackedTaskManager.createSubtask(subtask2); + fileBackedTaskManager.createSubtask(subtask3); + List newFile = Files.readAllLines(fileBackedTaskManager.getFile()); + List testFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); + for (int i = 0; i < testFile.size(); i++) { + assertTrue(newFile.get(i).equals(testFile.get(i)), newFile.get(i) + " : " + testFile.get(i)); } - + assertEquals(newFile.size(), 7); } + @Test - void loadFromFile() { + void loadFromFile() throws IOException { List loadFile = null; - try { - loadFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); - } catch (IOException e) { - throw new RuntimeException(e); - } + + loadFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); + FileBackedTaskManager.loadFromFile(new File("test/manager/TestFile.csv")); - try { - List newFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); - for (int i = 0; i < loadFile.size(); i++) { - assertTrue(newFile.get(i).equals(loadFile.get(i)), newFile.get(i) + " : " + loadFile.get(i)); - } + List newFile = Files.readAllLines(Paths.get("test/manager/TestFile.csv")); + + for (int i = 0; i < loadFile.size(); i++) { + assertTrue(newFile.get(i).equals(loadFile.get(i)), newFile.get(i) + " : " + loadFile.get(i)); + assertEquals(newFile.size(), loadFile.size()); - } catch (IOException e) { - throw new RuntimeException(e); } } - @Test - void loadFromEmptyFile(){ - FileBackedTaskManager.loadFromFile(new File("test/manager/emptyFile.csv")); + @Test + void loadFromEmptyFile() throws IOException { + FileBackedTaskManager.loadFromFile(new File("test/manager/emptyFile.csv")); - try { - List newFile = Files.readAllLines(Paths.get("test/manager/emptyFile.csv")); - assertEquals(newFile.size(),0); + List newFile = Files.readAllLines(Paths.get("test/manager/emptyFile.csv")); + + assertEquals(newFile.size(), 0); + + } +} - } catch (IOException e) { - throw new RuntimeException(e); - } - } - }