Skip to content
Merged
36 changes: 13 additions & 23 deletions src/Main.java
Original file line number Diff line number Diff line change
@@ -1,55 +1,45 @@
import exception.IntersectionException;
import manager.*;
import task.Epic;
import task.Status;
import task.Subtask;
import task.Task;

import java.io.File;
import java.time.Duration;
import java.time.LocalDateTime;


public class Main {

public static void main(String[] args) {
public static void main(String[] args) throws IntersectionException {

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);
Task task1 = new Task("Task-1", "description for task-1", Status.NEW, LocalDateTime.of(2024, 3, 13, 14, 20), Duration.ofMinutes(10));


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, LocalDateTime.of(2024, 2, 10, 15, 40), Duration.ofMinutes(10));
Subtask subtask2 = new Subtask("Subtask-2", "Subtask-2 for Epic-1", Status.IN_PROGRESS, epic1, LocalDateTime.of(2024, 1, 24, 22, 5), Duration.ofMinutes(10));
Subtask subtask3 = new Subtask("Subtask-3", "Subtask-3 for Epic-1", Status.NEW, epic1, LocalDateTime.of(2024, 2, 5, 10, 0), Duration.ofMinutes(10));
taskManager.createTask(task1);
taskManager.createEpic(epic1);
taskManager.createEpic(epic2);

taskManager.createSubtask(subtask1);
taskManager.createSubtask(subtask2);
taskManager.createSubtask(subtask3);
System.out.println(epic1);
taskManager.deleteSubtask(4);
System.out.println(epic1);
System.out.println(taskManager.getHistory());


System.out.println(taskManager.getPrioritizedTasks());

/* taskManager.getEpic(1);
System.out.println(taskManager.getHistory());
taskManager.getSubtask(3);
System.out.println(taskManager.getHistory());
taskManager.getSubtask(5);
System.out.println(taskManager.getHistory());
taskManager.getEpic(1);
System.out.println(taskManager.getHistory());
taskManager.deleteTask(4);
System.out.println(taskManager.getHistory());
taskManager.getSubtask(4);
System.out.println(taskManager.getHistory());
taskManager.getEpic(2);
System.out.println(taskManager.getHistory());
taskManager.deleteSubtask(4);
System.out.println(taskManager.getHistory());
taskManager.deleteEpic(1);
System.out.println(taskManager.getHistory());*/

}

Expand Down
9 changes: 9 additions & 0 deletions src/exception/IntersectionException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package exception;

public class IntersectionException extends Exception {


public IntersectionException(String message) {
super(message);
}
}
11 changes: 11 additions & 0 deletions src/exception/ManagerLoadException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package exception;

public class ManagerLoadException extends RuntimeException {


public ManagerLoadException(final Throwable cause) {
super(cause);
}


}
31 changes: 19 additions & 12 deletions src/manager/FileBackedTaskManager.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package manager;

import exception.IntersectionException;
import exception.ManagerLoadException;
import task.Epic;
import task.Status;
import task.Subtask;
Expand All @@ -13,6 +15,8 @@

import java.nio.file.Path;
import java.nio.file.Paths;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;

public class FileBackedTaskManager extends InMemoryTaskManager implements TaskManager {
Expand Down Expand Up @@ -42,7 +46,7 @@ public FileBackedTaskManager(HistoryManager defaultHistory) {


@Override
public Task createTask(Task task) {
public Task createTask(Task task) throws IntersectionException {
super.createTask(task);

save();
Expand All @@ -60,7 +64,7 @@ public Task createEpic(Epic epic) {
}

@Override
public Task createSubtask(Subtask subtask) {
public Task createSubtask(Subtask subtask) throws IntersectionException {
super.createSubtask(subtask);

save();
Expand All @@ -70,14 +74,14 @@ 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() + "," + task.getStartTime() + "," + task.getDuration() + "," + task.getEndTime();
}


public void save() {
try (BufferedWriter bw = new BufferedWriter(new FileWriter(pathToFile))) {

bw.write("id,type,name,description,status,epic\n");
bw.write("id,type,name,description,status,epic,start time, duration, end Time\n");
for (Task task : getTasks()) {
bw.write(toString(task) + "\n");
}
Expand All @@ -95,13 +99,16 @@ public void save() {

}

public Task fromString(String value) {
public Task fromString(String value) throws IntersectionException {
String[] mass = value.split(",");
int id = Integer.parseInt(mass[0]);
String type = mass[1];
String name = mass[2];
String description = mass[3];
String status = mass[4];
LocalDateTime startTime = LocalDateTime.parse(mass[5]);
Duration duration = Duration.parse(mass[6]);
LocalDateTime endTime = LocalDateTime.parse(mass[7]);


if (type.equals("TASK")) {
Expand All @@ -113,7 +120,7 @@ public Task fromString(String value) {
} else {
taskStatus = Status.IN_PROGRESS;
}
Task task = new Task(id, name, description, taskStatus);
Task task = new Task(id, name, description, taskStatus, startTime, duration);
task.setType(TaskType.TASK);
createTask(task);
return task;
Expand All @@ -132,15 +139,15 @@ public Task fromString(String value) {
return epic;
} else {
Status taskStatus;
int epicId = Integer.parseInt(mass[5]);
int epicId = Integer.parseInt(mass[8]);
if (status.equals("NEW")) {
taskStatus = Status.NEW;
} else if (status.equals("DONE")) {
taskStatus = Status.DONE;
} else {
taskStatus = Status.IN_PROGRESS;
}
Subtask subtask = new Subtask(id, name, description, taskStatus, getEpic(epicId));
Subtask subtask = new Subtask(id, name, description, taskStatus, getEpic(epicId), startTime, duration);
subtask.setType(TaskType.SUBTASK);
createSubtask(subtask);
return subtask;
Expand All @@ -149,8 +156,8 @@ public Task fromString(String value) {

}

public static FileBackedTaskManager loadFromFile(File file) {
FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory(),Paths.get(file.getPath()));
public static FileBackedTaskManager loadFromFile(File file) throws IntersectionException {
FileBackedTaskManager fileBackedTaskManager = new FileBackedTaskManager(Managers.getDefaultHistory(), Paths.get(file.getPath()));
//теперь запись будет происходит в тот-же файл из которого была загрузка, а не в "file.csv"
try {
List<String> lines = Files.readAllLines(file.toPath());
Expand All @@ -176,13 +183,13 @@ public ManagerSaveException(final Throwable cause) {

}

public static class ManagerLoadException extends RuntimeException {
/* public static class ManagerLoadException extends RuntimeException {


public ManagerLoadException(final Throwable cause) {
super(cause);
}


}
}*/
}
2 changes: 1 addition & 1 deletion src/manager/InMemoryHistoryManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ public void linkLast(Node node) {

}

private static class Node {
private static class Node {
Node previous;
Node next;
Task value;
Expand Down
Loading
Loading