diff --git a/.idea/libraries/gson_2_9_0.xml b/.idea/libraries/gson_2_9_0.xml
new file mode 100644
index 0000000..23433d9
--- /dev/null
+++ b/.idea/libraries/gson_2_9_0.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SaveListTask.csv b/SaveListTask.csv
index e67a40a..74cbb17 100644
--- a/SaveListTask.csv
+++ b/SaveListTask.csv
@@ -1,4 +1,2 @@
id,type,name,discribtion,status,startTime,durations,endTime,epic
-1,TASK,nameTask1,discriprionTask1,NEW,
-2,TASK,nameTask2,discriprionTask2,NEW,
-3,TASK,nameTaskTime1,discriptionTaskTime1,NEW,2025-10-15T18:45,50,2025-10-15T19:35,
+1,TASK,nameTaskTime1,discriptionTaskTime1,NEW,2025-10-15T18:45,50,2025-10-15T19:35,
diff --git a/TestSaveListTask.csv b/TestSaveListTask.csv
new file mode 100644
index 0000000..bc95e05
--- /dev/null
+++ b/TestSaveListTask.csv
@@ -0,0 +1,3 @@
+id,type,name,discribtion,status,startTime,durations,endTime,epic
+1,TASK,nameTask1,discriprionTask1,NEW
+2,TASK,nameTask2,discriprionTask2,NEW
\ No newline at end of file
diff --git a/java-kanban.iml b/java-kanban.iml
index 20864cd..2a6abdd 100644
--- a/java-kanban.iml
+++ b/java-kanban.iml
@@ -124,5 +124,6 @@
+
\ No newline at end of file
diff --git a/src/Main.java b/src/Main.java
deleted file mode 100644
index bc1109b..0000000
--- a/src/Main.java
+++ /dev/null
@@ -1,207 +0,0 @@
-// public static void main(String[] args) {
-// InMemoryTaskManager taskManager = new InMemoryTaskManager();
-// HistoryManager historyManager = Managers.getDefaultHistory();
-// //1 Epic____________________________________
-// Epic epic1 = new Epic("Переезд",
-// "Переехать в новый город");
-// taskManager.addEpic(epic1);
-// //1 Subtask_________________________________
-// SubTask subTask1ForEpic1 = new SubTask("Выбрать город",
-// "Сравнить города по климату",
-// Status.NEW,
-// epic1.getIdTask());
-// taskManager.addSubTask(subTask1ForEpic1);
-// //2 SubTask__________________________________
-// SubTask subTask2ForEpic1 = new SubTask("Выбросить всё лишнее",
-// "Собрать мусор и ненужные вещи по квартире",
-// Status.DONE,
-// epic1.getIdTask());
-// taskManager.addSubTask(subTask2ForEpic1);
-//
-// //2 Epic_____________________________________
-// Epic epic2 = new Epic("Генеральная уборка",
-// "Привести квартиру в полный порядок");
-// taskManager.addEpic(epic2);
-// //3 SubTask___________________________________
-// SubTask subTask1ForEpic2 = new SubTask("Раздать ненужные вещи",
-// "Собрать вещи и отнести в пункт приёма",
-// Status.NEW,
-// epic2.getIdTask());
-// taskManager.addSubTask(subTask1ForEpic2);
-// //1 Task______________________________________
-// Task task1 = new Task("Поздравить жену с 8 марта",
-// "Купить цветы",
-// Status.NEW);
-// taskManager.addTask(task1);
-// //2 Task_______________________________________
-// Task task2 = new Task("Сходить в магазин",
-// "Купить продукты и не забыть пиво! =)",
-// Status.NEW);
-// taskManager.addTask(task2);
-// System.out.println("\nВывод всех задач");
-// System.out.println(taskManager.getAllTask());
-// System.out.println("\nВывод всех Эпиков");// Вывод всех задач задачи
-// System.out.println(taskManager.getAllEpics());
-// System.out.println("\nВывод всех подзадач\n");// Вывод всех эпиков эпики
-// System.out.println(taskManager.getAllSubTask()); //Вывод всех подзадач
-// System.out.println("_______________________________________________");
-// //Новая задача для обновления
-// Task newStatusTask = new Task(7, "Сходить в магазин",
-// "Купить продукты и не забыть пиво! =)",
-// Status.DONE);
-//
-//
-// //Обновление задачи с существующим индексом
-// taskManager.updateTask(newStatusTask);
-// System.out.println("\nОбновленные Задачи");
-// System.out.println(taskManager.getAllTask());
-// System.out.println("________________________________________________");
-//
-//
-// // Новая подзадача для обновления
-// SubTask newStatusSubTask = new SubTask(2, "Выбрать город",
-// "Сравнить города по климату",
-// Status.IN_PROGRESS,
-// epic1.getIdTask());
-//
-// //Обновление подлзадачи с существующим индексом
-// taskManager.updateSubTask(newStatusSubTask);
-//
-// System.out.println("\nОбновленные подзадачи и Епики");
-// System.out.println(taskManager.getAllSubTask()); // Вывод
-// System.out.println(taskManager.getAllEpics()); // Вывод
-// System.out.println("________________________________________________");
-//
-//
-// //Удаление задач
-// System.out.println("\nПодзадачи и Эпики до удаления");
-// System.out.println("_________________________________________________");
-// System.out.println(taskManager.getAllSubTask());
-// System.out.println(taskManager.getAllEpics());
-//
-// taskManager.removeSubTaskForId(2);
-//
-// System.out.println("\nПосле удаления подзадачи");
-// System.out.println("_________________________________________________");
-// System.out.println(taskManager.getAllSubTask());
-// System.out.println(taskManager.getAllEpics());
-//
-// //taskManager.removeEpicForId(1);
-//
-// System.out.println("\nПосле удаления Эпика");
-// System.out.println("__________________________________________________");
-//
-// System.out.println(taskManager.getAllSubTask());
-// System.out.println(taskManager.getAllEpics());
-//
-// System.out.println("\nВывод Сабтасок по индексу Эпика");
-// System.out.println("___________________________________________________");
-//
-// System.out.println(taskManager.getAllSubTasksForEpic(4));
-//
-// System.out.println("\n Вывод Задачи по индексу");
-// System.out.println("___________________________________________________");
-//
-// System.out.println(taskManager.getTaskForId(6));
-//
-// System.out.println("\n Обновление Эпика по айди");
-// System.out.println("____________________________________________________");
-// Epic newEpic = new Epic(4, "Забить на всё.", "Немного отдохнуть!!!");
-//
-// taskManager.updateEpic(newEpic);
-//
-// System.out.println(taskManager.getEpicForId(4));
-// System.out.println();
-//
-// System.out.println("\nУдаление эпика и вывод Эпиков и сабтасок");
-// System.out.println("____________________________________________________");
-//
-// // taskManager.removeAllEpics();
-//
-// // System.out.println(taskManager.getAllEpics());
-// // System.out.println(taskManager.getAllSubTask());
-//
-// System.out.println(historyManager.getTasks());
-//
-// taskManager.getSubTaskForId(3);
-//
-// // System.out.println(taskManager.getHistory());
-// historyManager.remove(4);
-// System.out.println(historyManager.getTasks());
-
-
-
-//1 Task______________________________________
-// Task task1 = new Task("Поздравить жену с 8 марта",
-// "Купить цветы",
-// Status.NEW);
-// taskManager.addTask(task1);
-// //2 Task_______________________________________
-// Task task2 = new Task("Сходить в магазин",
-// "Купить продукты и не забыть пиво! =)",
-// Status.NEW);
-// taskManager.addTask(task2);
-// //3 Task_______________________________________
-// Task task3 = new Task("Новая 3 задача",
-// "Купить пиво! =)",
-// Status.NEW);
-// taskManager.addTask(task3);
-// //4 Task_______________________________________
-// Task task4 = new Task("Новая 4 задача",
-// "Новое описание 4!",
-// Status.NEW);
-// taskManager.addTask(task4);
-// taskManager.getTaskForId(4);
-// taskManager.getTaskForId(4);
-//
-// taskManager.getTaskForId(1);
-//
-// taskManager.getTaskForId(4);
-// taskManager.getTaskForId(4);
-// taskManager.getTaskForId(3);
-// taskManager.getTaskForId(1);
-// taskManager.getTaskForId(1);
-//
-// taskManager.getTaskForId(1);
-//
-//
-// System.out.println(taskManager.getHisory());
-// }
-//}
-//public class Main {
-// public static void main(String[] args) {
-// InMemoryTaskManager taskManager = new InMemoryTaskManager();
-// LocalDateTime startTime = LocalDateTime.of(2026,10,22,18,45);
-// LocalDateTime startTime1 = LocalDateTime.of(2025,11,15,20,45);
-// LocalDateTime startTime2 = LocalDateTime.of(2025,11,15,18,50);
-// Task task = new Task(1,
-// TypeTask.TASK,
-// "nameTask1",
-// "opicanie1",
-// Status.NEW,
-// startTime,
-// 50,
-// null);
-// Task task1 = new Task(1,
-// TypeTask.TASK,
-// "nameTask2",
-// "opicanie2",
-// Status.NEW,
-// startTime1,
-// 50,
-// null);
-// Task task2 = new Task(1,
-// TypeTask.TASK,
-// "nameTask3",
-// "opicanie3",
-// Status.NEW,
-// startTime2,
-// 50,
-// null);
-// taskManager.addTask(task);
-// taskManager.addTask(task1);
-// taskManager.addTask(task2);
-// System.out.println(taskManager.getPrioritizedTasks());
-// System.out.println(taskManager.getAllTask());
-// }
-//}
\ No newline at end of file
diff --git a/src/manager/ManagerSaveException.java b/src/exeptions/ManagerSaveException.java
similarity index 57%
rename from src/manager/ManagerSaveException.java
rename to src/exeptions/ManagerSaveException.java
index 9fdcb2c..f5bd8bb 100644
--- a/src/manager/ManagerSaveException.java
+++ b/src/exeptions/ManagerSaveException.java
@@ -1,8 +1,8 @@
-package manager;
+package exeptions;
public class ManagerSaveException extends RuntimeException {
- ManagerSaveException(String messege) {
+ public ManagerSaveException(String messege) {
super(messege);
}
}
diff --git a/src/exeptions/NotFoundExeption.java b/src/exeptions/NotFoundExeption.java
new file mode 100644
index 0000000..877cbef
--- /dev/null
+++ b/src/exeptions/NotFoundExeption.java
@@ -0,0 +1,7 @@
+package exeptions;
+
+public class NotFoundExeption extends Exception {
+ public NotFoundExeption(String massage) {
+ super(massage);
+ }
+}
diff --git a/src/exeptions/TimeConflictExeption.java b/src/exeptions/TimeConflictExeption.java
new file mode 100644
index 0000000..d21a8d5
--- /dev/null
+++ b/src/exeptions/TimeConflictExeption.java
@@ -0,0 +1,7 @@
+package exeptions;
+
+public class TimeConflictExeption extends RuntimeException {
+ public TimeConflictExeption(String message) {
+ super(message);
+ }
+}
diff --git a/src/http/HttpTaskServer.java b/src/http/HttpTaskServer.java
new file mode 100644
index 0000000..650162e
--- /dev/null
+++ b/src/http/HttpTaskServer.java
@@ -0,0 +1,68 @@
+package http;
+
+import com.google.gson.*;
+import com.sun.net.httpserver.HttpServer;
+import exeptions.NotFoundExeption;
+import http.handler.*;
+import http.handler.adapter.DurationAdapter;
+import http.handler.adapter.LocalDateTimeAdapter;
+import manager.Managers;
+import manager.TaskManager;
+import model.Status;
+import model.Task;
+import model.TypeTask;
+
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.time.LocalDateTime;
+
+public class HttpTaskServer {
+ private static final int PORT = 8080;
+ private HttpServer server;
+ protected TaskManager taskManager;
+ protected Gson gson;
+
+ public HttpTaskServer(TaskManager taskManager) throws IOException {
+ this.taskManager = taskManager;
+ this.gson = new GsonBuilder()
+ .registerTypeAdapter(LocalDateTime.class, new LocalDateTimeAdapter())
+ .registerTypeAdapter(long.class, new DurationAdapter())
+ .create();
+
+ this.server = HttpServer.create(new InetSocketAddress(PORT), 0);
+ server.createContext("/tasks", new TaskHandler(taskManager, gson));
+ server.createContext("/subtasks", new SubtaskHandler(taskManager, gson));
+ server.createContext("/epics", new EpicsHandler(taskManager, gson));
+ server.createContext("/history", new HistoryHandler(taskManager, gson));
+ server.createContext("/priorityzed", new PriorityHandler(taskManager, gson));
+
+ }
+
+ public Gson getGson() {
+ return this.gson;
+ }
+
+
+ public void start() {
+ server.start();
+ System.out.println("Сервер запущен на порте " + PORT);
+
+
+ }
+
+ public void stop() {
+ server.stop(1);
+ System.out.println("Сервер остановлен.");
+ }
+
+ public static void main(String[] args) throws IOException, NotFoundExeption {
+
+ TaskManager manager = Managers.getDefault();
+ new HttpTaskServer(manager).start();
+ Task task = new Task(1, TypeTask.TASK,"name","dis", Status.NEW);
+ manager.addTask(task);
+ }
+
+}
+
diff --git a/src/http/handler/BaseHttpHandler.java b/src/http/handler/BaseHttpHandler.java
new file mode 100644
index 0000000..b69b27b
--- /dev/null
+++ b/src/http/handler/BaseHttpHandler.java
@@ -0,0 +1,63 @@
+package http.handler;
+
+import com.google.gson.*;
+import com.sun.net.httpserver.HttpExchange;
+import com.sun.net.httpserver.HttpHandler;
+import manager.TaskManager;
+
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.util.Optional;
+
+public abstract class BaseHttpHandler implements HttpHandler {
+ protected TaskManager taskManager;
+ protected Gson gson;
+
+
+ public BaseHttpHandler(TaskManager taskManager, Gson gson) {
+ this.taskManager = taskManager;
+ this.gson = gson;
+ }
+
+ public void sendText(HttpExchange exchange, String json, int statusCode) throws IOException {
+ byte[] responce = json.getBytes(StandardCharsets.UTF_8);
+ exchange.getResponseHeaders().add("Content-Type", "application/json");
+ exchange.sendResponseHeaders(statusCode, responce.length);
+ try (OutputStream os = exchange.getResponseBody()) {
+ os.write(responce);
+ }
+ }
+
+ public void sendNotFound(HttpExchange exchange, String text) throws IOException {
+ byte[] responce = text.getBytes(StandardCharsets.UTF_8);
+ exchange.getResponseHeaders().add("Content-Type", "application/json");
+ exchange.sendResponseHeaders(404, responce.length);
+ try (OutputStream os = exchange.getResponseBody()) {
+ os.write(responce);
+ }
+ }
+
+ public void sendHashInteraction(HttpExchange exchange, String text) throws IOException {
+ byte[] responce = text.getBytes(StandardCharsets.UTF_8);
+ exchange.getResponseHeaders().add("Content-Type", "application/json");
+ exchange.sendResponseHeaders(406, responce.length);
+ try (OutputStream os = exchange.getResponseBody()) {
+ os.write(responce);
+ }
+ }
+
+ public Optional parseId(String path) {
+ try {
+ String[] parts = path.split("/");
+ return Optional.of(Integer.parseInt(parts[2]));
+ } catch (Exception e) {
+ return Optional.empty();
+ }
+ }
+
+ public String requestMethod(HttpExchange exchange) {
+ return exchange.getRequestMethod();
+ }
+
+
+}
diff --git a/src/http/handler/EpicsHandler.java b/src/http/handler/EpicsHandler.java
new file mode 100644
index 0000000..90ab945
--- /dev/null
+++ b/src/http/handler/EpicsHandler.java
@@ -0,0 +1,82 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import com.sun.net.httpserver.HttpExchange;
+import exeptions.NotFoundExeption;
+import exeptions.TimeConflictExeption;
+import manager.TaskManager;
+import model.Epic;
+import model.SubTask;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Optional;
+
+public class EpicsHandler extends BaseHttpHandler {
+ public EpicsHandler(TaskManager managers, Gson gson) {
+ super(managers, gson);
+ }
+
+ @Override
+ public void handle(HttpExchange exchange) throws IOException {
+ try {
+ switch (requestMethod(exchange)) {
+ case "GET":
+ handleGet(exchange);
+ break;
+ case "POST":
+ handlePost(exchange);
+ break;
+ case "DELETE":
+ handleDelete(exchange);
+ break;
+ default:
+ sendText(exchange, "Метод не поддерживается", 500);
+ }
+ } catch (NotFoundExeption e) {
+ sendNotFound(exchange, e.getMessage());
+ } catch (TimeConflictExeption e) {
+ sendHashInteraction(exchange, e.getMessage());
+ }
+ }
+
+ private void handleGet(HttpExchange exchange) throws IOException, NotFoundExeption {
+ Optional epicID = parseId(exchange.getRequestURI().getPath());
+ String[] subtaskUrl = exchange.getRequestURI().getPath().split("/");
+ boolean subtaskRequest = subtaskUrl.length >= 4 && "subtask".equals(subtaskUrl[3]);
+ if (epicID.isEmpty()) {
+ sendText(exchange, gson.toJson(taskManager.getAllEpics()), 200);
+ } else if (subtaskRequest) {
+ List subTasks = taskManager.getAllSubTasksForEpic(epicID.get());
+ sendText(exchange, gson.toJson(subTasks), 200);
+ } else {
+ Epic epic = taskManager.getEpicForId(epicID.get());
+ sendText(exchange, gson.toJson(epic), 200);
+ }
+ }
+
+ private void handlePost(HttpExchange exchange) throws IOException {
+ Optional taskID = parseId(exchange.getRequestURI().getPath());
+ String body = new String(exchange.getRequestBody().readAllBytes(), StandardCharsets.UTF_8);
+ Epic epic = gson.fromJson(body, Epic.class);
+ if (taskID.isPresent()) {
+ taskManager.updateEpic(epic);
+ sendText(exchange, "Эпик обновлен", 201);
+ } else {
+ taskManager.addEpic(epic);
+ sendText(exchange, "Эпик добавлен", 201);
+ }
+ }
+
+ private void handleDelete(HttpExchange exchange) throws IOException, NotFoundExeption {
+ Optional taskID = parseId(exchange.getRequestURI().getPath());
+ if (taskID.isEmpty()) {
+ sendText(exchange, "Нужно указать ID задачи", 400);
+ } else {
+ taskManager.removeEpicForId(taskID.get());
+ sendText(exchange, "Задача удалена", 200);
+
+ }
+ }
+}
diff --git a/src/http/handler/HistoryHandler.java b/src/http/handler/HistoryHandler.java
new file mode 100644
index 0000000..ce0a24d
--- /dev/null
+++ b/src/http/handler/HistoryHandler.java
@@ -0,0 +1,24 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import com.sun.net.httpserver.HttpExchange;
+import manager.TaskManager;
+
+import java.io.IOException;
+
+public class HistoryHandler extends BaseHttpHandler {
+
+
+ public HistoryHandler(TaskManager managers, Gson gson) {
+ super(managers, gson);
+ }
+
+ @Override
+ public void handle(HttpExchange exchange) throws IOException {
+ if (!requestMethod(exchange).equals("GET")) {
+ sendText(exchange, "Данный метод не поддерживается!", 400);
+ } else {
+ sendText(exchange, gson.toJson(taskManager.getHistory()), 200);
+ }
+ }
+}
diff --git a/src/http/handler/PriorityHandler.java b/src/http/handler/PriorityHandler.java
new file mode 100644
index 0000000..00dd873
--- /dev/null
+++ b/src/http/handler/PriorityHandler.java
@@ -0,0 +1,23 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import com.sun.net.httpserver.HttpExchange;
+import manager.TaskManager;
+
+import java.io.IOException;
+
+public class PriorityHandler extends BaseHttpHandler {
+
+ public PriorityHandler(TaskManager taskManager, Gson gson) {
+ super(taskManager, gson);
+ }
+
+ @Override
+ public void handle(HttpExchange exchange) throws IOException {
+ try {
+ sendText(exchange, gson.toJson(taskManager.getPrioritizedTasks()), 200);
+ } catch (NullPointerException e) {
+ sendText(exchange, "Список пуст!", 400);
+ }
+ }
+}
diff --git a/src/http/handler/SubtaskHandler.java b/src/http/handler/SubtaskHandler.java
new file mode 100644
index 0000000..4107446
--- /dev/null
+++ b/src/http/handler/SubtaskHandler.java
@@ -0,0 +1,76 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import com.sun.net.httpserver.HttpExchange;
+import exeptions.NotFoundExeption;
+import exeptions.TimeConflictExeption;
+import manager.TaskManager;
+import model.SubTask;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Optional;
+
+public class SubtaskHandler extends BaseHttpHandler {
+ public SubtaskHandler(TaskManager taskManager, Gson gson) {
+ super(taskManager, gson);
+ }
+
+ @Override
+ public void handle(HttpExchange exchange) throws IOException {
+ try {
+ switch (requestMethod(exchange)) {
+ case "GET":
+ handlGet(exchange);
+ break;
+ case "POST":
+ handlePost(exchange);
+ break;
+ case "DELETE":
+ handleDelete(exchange);
+ break;
+ default:
+ sendText(exchange, "Метод не поддерживается", 500);
+ }
+ } catch (NotFoundExeption e) {
+ sendNotFound(exchange, e.getMessage());
+ } catch (TimeConflictExeption e) {
+ sendHashInteraction(exchange, e.getMessage());
+ }
+ }
+
+ private void handlGet(HttpExchange exchange) throws IOException, NotFoundExeption {
+ Optional taskID = parseId(exchange.getRequestURI().getPath());
+ if (taskID.isPresent()) {
+ sendText(exchange, gson.toJson(taskManager.getSubTaskForId(taskID.get())), 200);
+ } else {
+ sendText(exchange, gson.toJson(taskManager.getAllSubTask()), 200);
+ }
+ }
+
+ private void handlePost(HttpExchange exchange) throws IOException, TimeConflictExeption, NotFoundExeption {
+ Optional taskID = parseId(exchange.getRequestURI().getPath());
+ String body = new String(exchange.getRequestBody().readAllBytes(), StandardCharsets.UTF_8);
+ SubTask subTask = gson.fromJson(body, SubTask.class);
+ if (taskID.isPresent()) {
+ taskManager.updateSubTask(subTask);
+ sendText(exchange, "Задача обновлена", 201);
+ } else {
+ taskManager.addSubTask(subTask);
+ sendText(exchange, "Задача добавлена", 201);
+ }
+ }
+
+ private void handleDelete(HttpExchange exchange) throws IOException {
+ Optional taskID = parseId(exchange.getRequestURI().getPath());
+ if (taskID.isEmpty()) {
+ sendText(exchange, "Нужно указать ID задачи", 400);
+ } else {
+ try {
+ taskManager.removeSubTaskForId(taskID.get());
+ } catch (Exception ignored) {
+ }
+ }
+ sendText(exchange, "Задача удалена", 200);
+ }
+}
diff --git a/src/http/handler/TaskHandler.java b/src/http/handler/TaskHandler.java
new file mode 100644
index 0000000..8115eaa
--- /dev/null
+++ b/src/http/handler/TaskHandler.java
@@ -0,0 +1,77 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import com.sun.net.httpserver.HttpExchange;
+import exeptions.NotFoundExeption;
+import exeptions.TimeConflictExeption;
+import manager.TaskManager;
+import model.Task;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.Optional;
+
+public class TaskHandler extends BaseHttpHandler {
+ public TaskHandler(TaskManager manager, Gson gson) {
+ super(manager, gson);
+ }
+
+
+ @Override
+ public void handle(HttpExchange exchange) throws IOException {
+ try {
+ switch (requestMethod(exchange)) {
+ case "GET":
+ handleGet(exchange);
+ break;
+ case "POST":
+ handlePost(exchange);
+ break;
+ case "DELETE":
+ handleDelete(exchange);
+ break;
+ default:
+ sendText(exchange, "Метод не поддерживается", 500);
+ }
+ } catch (NotFoundExeption e) {
+ sendNotFound(exchange, e.getMessage());
+ } catch (TimeConflictExeption e) {
+ sendHashInteraction(exchange, e.getMessage());
+ }
+ }
+
+ private void handleGet(HttpExchange exchange) throws IOException, NotFoundExeption {
+ Optional taskID = parseId(exchange.getRequestURI().getPath());
+ if (taskID.isPresent()) {
+ sendText(exchange, gson.toJson(taskManager.getTaskForId(taskID.get())), 200);
+ } else {
+ sendText(exchange, gson.toJson(taskManager.getAllTask()), 200);
+ }
+ }
+
+ private void handlePost(HttpExchange exchange) throws IOException, TimeConflictExeption {
+ Optional taskID = parseId(exchange.getRequestURI().getPath());
+ String body = new String(exchange.getRequestBody().readAllBytes(), StandardCharsets.UTF_8);
+ Task task = gson.fromJson(body, Task.class);
+ if (taskID.isPresent()) {
+ taskManager.updateTask(task);
+ sendText(exchange, "Задача обновлена", 201);
+ } else {
+ taskManager.addTask(task);
+ sendText(exchange, "Задача добавлена", 201);
+ }
+ }
+
+ private void handleDelete(HttpExchange exchange) throws IOException {
+ Optional taskID = parseId(exchange.getRequestURI().getPath());
+ if (taskID.isEmpty()) {
+ sendText(exchange, "Нужно указать ID задачи", 400);
+ } else {
+ try {
+ taskManager.removeTaskForId(taskID.get());
+ } catch (Exception ignored) {
+ }
+ }
+ sendText(exchange, "Задача удалена", 200);
+ }
+}
diff --git a/src/http/handler/adapter/DurationAdapter.java b/src/http/handler/adapter/DurationAdapter.java
new file mode 100644
index 0000000..dfd1376
--- /dev/null
+++ b/src/http/handler/adapter/DurationAdapter.java
@@ -0,0 +1,33 @@
+package http.handler.adapter;
+
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonToken;
+import com.google.gson.stream.JsonWriter;
+
+import java.io.IOException;
+
+public class DurationAdapter extends TypeAdapter {
+
+ @Override
+ public void write(JsonWriter out, Long duration) throws IOException {
+ //if (duration == null || duration == 0) {
+ //out.nullValue();
+ //}
+ if (duration == null) {
+ out.nullValue();
+ } else {
+ out.value(duration);
+ }
+ }
+
+ @Override
+ public Long read(JsonReader in) throws IOException {
+ if (in.peek() == JsonToken.NULL) {
+ in.nextNull();
+ return 0L;
+ }
+ return in.nextLong();
+ }
+}
+
diff --git a/src/http/handler/adapter/LocalDateTimeAdapter.java b/src/http/handler/adapter/LocalDateTimeAdapter.java
new file mode 100644
index 0000000..193957b
--- /dev/null
+++ b/src/http/handler/adapter/LocalDateTimeAdapter.java
@@ -0,0 +1,30 @@
+package http.handler.adapter;
+
+import com.google.gson.TypeAdapter;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+
+import java.io.IOException;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+
+public class LocalDateTimeAdapter extends TypeAdapter {
+ private static final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
+
+ @Override
+ public void write(final JsonWriter jsonWriter, final LocalDateTime localDateTime) throws IOException {
+ if (localDateTime == null) {
+ jsonWriter.nullValue();
+ } else {
+ jsonWriter.value(dtf.format(localDateTime));
+ }
+ }
+
+ @Override
+ public LocalDateTime read(final JsonReader jsonReader) throws IOException {
+ if (jsonReader == null) {
+ return null;
+ }
+ return LocalDateTime.parse(jsonReader.nextString(), dtf);
+ }
+}
diff --git a/src/manager/Converter.java b/src/manager/Converter.java
index 489d9c0..4ea4b02 100644
--- a/src/manager/Converter.java
+++ b/src/manager/Converter.java
@@ -84,48 +84,41 @@ protected static String fromTaskToString(Task task) {
if (task.getStartTime().isPresent() && task.getEndTime().isPresent()) {
if (task.getTypeTask() == SUBTASK) {
SubTask subTask = (SubTask) task;
- String taskLine =
- subTask.getIdTask() + ","
- + subTask.getTypeTask() + ","
- + subTask.getTitleTask() + ","
- + subTask.getDescriptionTask() + ","
- + subTask.getStatusTask() + ","
- + subTask.getEpicId() + ","
- + subTask.getStartTime().map(LocalDateTime::toString).orElse(null) + ","
- + subTask.getDuration().toMinutes() + ","
- + subTask.getEndTime().map(LocalDateTime::toString).orElse(null) + ",\n";
- return taskLine;
+
+ return subTask.getId() + ","
+ + subTask.getTypeTask() + ","
+ + subTask.getName() + ","
+ + subTask.getDescription() + ","
+ + subTask.getStatus() + ","
+ + subTask.getEpicId() + ","
+ + subTask.getStartTime().map(LocalDateTime::toString).orElse(null) + ","
+ + subTask.getDuration().toMinutes() + ","
+ + subTask.getEndTime().map(LocalDateTime::toString).orElse(null) + ",\n";
} else {
- String taskLine =
- task.getIdTask() + ","
- + task.getTypeTask() + ","
- + task.getTitleTask() + ","
- + task.getDescriptionTask() + ","
- + task.getStatusTask() + ","
- + task.getStartTime().map(LocalDateTime::toString).orElse(null) + ","
- + task.getDuration().toMinutes() + ","
- + task.getEndTime().map(LocalDateTime::toString).orElse(null) + ",\n";
- return taskLine;
+ return task.getId() + ","
+ + task.getTypeTask() + ","
+ + task.getName() + ","
+ + task.getDescription() + ","
+ + task.getStatus() + ","
+ + task.getStartTime().map(LocalDateTime::toString).orElse(null) + ","
+ + task.getDuration().toMinutes() + ","
+ + task.getEndTime().map(LocalDateTime::toString).orElse(null) + ",\n";
}
} else if (task.getTypeTask() == SUBTASK) {
SubTask subTask = (SubTask) task;
- String taskLine =
- subTask.getIdTask() + ","
- + subTask.getTypeTask() + ","
- + subTask.getTitleTask() + ","
- + subTask.getDescriptionTask() + ","
- + subTask.getStatusTask() + ","
- + subTask.getEpicId() + ",\n";
- return taskLine;
+ return subTask.getId() + ","
+ + subTask.getTypeTask() + ","
+ + subTask.getName() + ","
+ + subTask.getDescription() + ","
+ + subTask.getStatus() + ","
+ + subTask.getEpicId() + ",\n";
} else {
- String taskLine =
- task.getIdTask() + ","
- + task.getTypeTask() + ","
- + task.getTitleTask() + ","
- + task.getDescriptionTask() + ","
- + task.getStatusTask() + ",\n";
- return taskLine;
+ return task.getId() + ","
+ + task.getTypeTask() + ","
+ + task.getName() + ","
+ + task.getDescription() + ","
+ + task.getStatus() + ",\n";
}
}
}
diff --git a/src/manager/FileBackedTaskManager.java b/src/manager/FileBackedTaskManager.java
index 72259ed..35848cd 100644
--- a/src/manager/FileBackedTaskManager.java
+++ b/src/manager/FileBackedTaskManager.java
@@ -1,5 +1,7 @@
package manager;
+import exeptions.ManagerSaveException;
+import exeptions.NotFoundExeption;
import model.*;
import java.io.*;
@@ -25,15 +27,15 @@ public static FileBackedTaskManager loadFromFile(File file) throws ManagerSaveEx
try {
Task task = fromString(line);
- if (task.getIdTask() > fileBackedTaskManager.idNumber) {
- fileBackedTaskManager.idNumber = task.getIdTask() + 1;
+ if (task.getId() > fileBackedTaskManager.idNumber) {
+ fileBackedTaskManager.idNumber = task.getId() + 1;
}
if (task.getTypeTask() == TASK) {
- fileBackedTaskManager.tasks.put(task.getIdTask(), task);
+ fileBackedTaskManager.tasks.put(task.getId(), task);
} else if (task.getTypeTask() == EPIC) {
- fileBackedTaskManager.epics.put(task.getIdTask(), (Epic) task);
+ fileBackedTaskManager.epics.put(task.getId(), (Epic) task);
} else if (task.getTypeTask() == SUBTASK) {
- fileBackedTaskManager.subTasks.put(task.getIdTask(), (SubTask) task);
+ fileBackedTaskManager.subTasks.put(task.getId(), (SubTask) task);
}
} catch (ManagerSaveException e) {
System.out.println("Ошибка обработки строки: " + line);
@@ -77,7 +79,7 @@ public void addEpic(Epic epic) {
}
@Override
- public void addSubTask(SubTask subTask) {
+ public void addSubTask(SubTask subTask) throws NotFoundExeption {
super.addSubTask(subTask);
save();
}
@@ -95,7 +97,7 @@ public void removeAllEpics() {
}
@Override
- public void removeAllSubTasks() {
+ public void removeAllSubTasks() throws NotFoundExeption {
super.removeAllSubTasks();
save();
}
@@ -113,7 +115,7 @@ public void updateEpic(Epic epic) {
}
@Override
- public void updateSubTask(SubTask subTask) {
+ public void updateSubTask(SubTask subTask) throws NotFoundExeption {
super.updateSubTask(subTask);
save();
}
@@ -125,13 +127,13 @@ public void removeTaskForId(int id) {
}
@Override
- public void removeEpicForId(int id) {
+ public void removeEpicForId(int id) throws NotFoundExeption {
super.removeEpicForId(id);
save();
}
@Override
- public void removeSubTaskForId(int id) {
+ public void removeSubTaskForId(int id) throws NotFoundExeption, IOException {
super.removeSubTaskForId(id);
save();
}
diff --git a/src/manager/HistoryManager.java b/src/manager/HistoryManager.java
index e0163fa..3369792 100644
--- a/src/manager/HistoryManager.java
+++ b/src/manager/HistoryManager.java
@@ -1,11 +1,12 @@
package manager;
+import exeptions.TimeConflictExeption;
import model.Task;
import java.util.List;
public interface HistoryManager {
- void add(Task task);
+ void add(Task task) throws TimeConflictExeption;
void remove(int id);
diff --git a/src/manager/InMemoryHistoryManager.java b/src/manager/InMemoryHistoryManager.java
index 0823943..9be15fb 100644
--- a/src/manager/InMemoryHistoryManager.java
+++ b/src/manager/InMemoryHistoryManager.java
@@ -23,13 +23,13 @@ public void linkLast(Task task) {
last.setNext(null);
}
- historyTask.put(task.getIdTask(), last);
+ historyTask.put(task.getId(), last);
}
public void removeNode(Node node) {
Task task = node.getTask();
- Node removeNode = historyTask.get(task.getIdTask());
+ Node removeNode = historyTask.get(task.getId());
if (removeNode.getNext() != null && removeNode.getPrev() != null) {
Node nextNode = removeNode.getNext();
Node prevNode = removeNode.getPrev();
@@ -47,13 +47,13 @@ public void removeNode(Node node) {
last = null;
first = null;
}
- historyTask.remove(task.getIdTask());
+ historyTask.remove(task.getId());
}
@Override
public void add(Task task) {
- if (historyTask.containsKey(task.getIdTask())) {
- removeNode(historyTask.get(task.getIdTask()));
+ if (historyTask.containsKey(task.getId())) {
+ removeNode(historyTask.get(task.getId()));
}
linkLast(task);
}
diff --git a/src/manager/InMemoryTaskManager.java b/src/manager/InMemoryTaskManager.java
index ff00d87..e91da7f 100644
--- a/src/manager/InMemoryTaskManager.java
+++ b/src/manager/InMemoryTaskManager.java
@@ -1,10 +1,13 @@
package manager;
+import exeptions.NotFoundExeption;
+import exeptions.TimeConflictExeption;
import model.Epic;
import model.Status;
import model.SubTask;
import model.Task;
+import java.io.IOException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.*;
@@ -27,8 +30,8 @@ private int generateId() {
return idNumber++;
}
-
- public ArrayList getPrioritizedTasks() {
+ @Override
+ public List getPrioritizedTasks() {
return new ArrayList<>(priority);
}
@@ -45,7 +48,7 @@ public boolean overlapsTime(Task task1, Task task2) {
//Обновление времени Эпика
//_________________________________________________
- private void updateTimeEpic(Epic epic) {
+ private void updateTimeEpic(Epic epic) throws NotFoundExeption {
if (epic.getIdSubTasks().isEmpty()) {
epic.setStartTime(LocalDateTime.now());
epic.setEndTime(LocalDateTime.now());
@@ -53,7 +56,7 @@ private void updateTimeEpic(Epic epic) {
return;
}
- List subTasks = getAllSubTasksForEpic(epic.getIdTask());
+ List subTasks = getAllSubTasksForEpic(epic.getId());
LocalDateTime minStartTime = null;
LocalDateTime maxEndTime = null;
long totalDuration = 0;
@@ -87,29 +90,29 @@ private void updateTimeEpic(Epic epic) {
// Обновление статуса model.Epic`a
//____________________________________________________
- private void updateStatusEpic(Epic epic) {
+ private void updateStatusEpic(Epic epic) throws NotFoundExeption {
int countStatusNew = 0;
int countStatusDone = 0;
if (epic.getIdSubTasks().isEmpty()) {
- epic.setStatusTask(Status.NEW);
+ epic.setStatus(Status.NEW);
return;
}
- for (SubTask subTask : getAllSubTasksForEpic(epic.getIdTask())) {
- if (subTask.getStatusTask() == Status.IN_PROGRESS) {
- epic.setStatusTask(Status.IN_PROGRESS);
+ for (SubTask subTask : getAllSubTasksForEpic(epic.getId())) {
+ if (subTask.getStatus() == Status.IN_PROGRESS) {
+ epic.setStatus(Status.IN_PROGRESS);
return;
- } else if (subTask.getStatusTask() == Status.NEW) {
+ } else if (subTask.getStatus() == Status.NEW) {
countStatusNew++;
- } else if (subTask.getStatusTask() == Status.DONE) {
+ } else if (subTask.getStatus() == Status.DONE) {
countStatusDone++;
}
}
if (countStatusDone == 0 && countStatusNew > 0) {
- epic.setStatusTask(Status.NEW);
+ epic.setStatus(Status.NEW);
} else if (countStatusDone > 0 && countStatusNew == 0) {
- epic.setStatusTask(Status.DONE);
+ epic.setStatus(Status.DONE);
} else {
- epic.setStatusTask(Status.IN_PROGRESS);
+ epic.setStatus(Status.IN_PROGRESS);
}
}
@@ -119,38 +122,38 @@ private void updateStatusEpic(Epic epic) {
public void addTask(Task task) {
if (task.getStartTime().isPresent()) {
if (overlap(task)) {
- return;
+ throw new TimeConflictExeption("Задача пересекается по времени!");
} else {
priority.add(task);
}
}
- task.setIdTask(generateId());
- tasks.put(task.getIdTask(), task);
+ task.setId(generateId());
+ tasks.put(task.getId(), task);
}
@Override
public void addEpic(Epic epic) {
- epic.setIdTask(generateId());
- epics.put(epic.getIdTask(), epic);
- epic.setStatusTask(Status.NEW);
+ epic.setId(generateId());
+ epics.put(epic.getId(), epic);
+ epic.setStatus(Status.NEW);
}
@Override
- public void addSubTask(SubTask subTask) {
+ public void addSubTask(SubTask subTask) throws NotFoundExeption {
Epic epic = epics.get(subTask.getEpicId());
if (epic == null) {
return;
} else {
if (subTask.getStartTime().isPresent()) {
if (overlap(subTask)) {
- return;
+ throw new TimeConflictExeption("Подзадача пересекается по времени");
} else {
priority.add(subTask);
}
}
- subTask.setIdTask(generateId());
- subTasks.put(subTask.getIdTask(), subTask);
- epic.addIdSubTasks(subTask.getIdTask());
+ subTask.setId(generateId());
+ subTasks.put(subTask.getId(), subTask);
+ epic.addIdSubTasks(subTask.getId());
updateStatusEpic(epic);
updateTimeEpic(epic);
}
@@ -202,7 +205,7 @@ public void removeAllEpics() {
}
@Override
- public void removeAllSubTasks() {
+ public void removeAllSubTasks() throws NotFoundExeption {
subTasks.keySet()
.forEach(taskId -> {
historyManager.remove(taskId);
@@ -212,66 +215,72 @@ public void removeAllSubTasks() {
epics.values()
.forEach(epic -> {
epic.removeSubTask();
- epic.setStatusTask(Status.NEW);
- updateTimeEpic(epic);
+ epic.setStatus(Status.NEW);
+ try {
+ updateTimeEpic(epic);
+ } catch (NotFoundExeption e) {
+ throw new RuntimeException(e);
+ }
});
}
//Получение по идентификатору
//_____________________________________________
@Override
- public Task getTaskForId(int id) {
- if (tasks.get(id) != null) {
- historyManager.add(tasks.get(id));
- return tasks.get(id);
+ public Task getTaskForId(int id) throws NotFoundExeption {
+ if (tasks.get(id) == null) {
+ throw new NotFoundExeption("Задачи с ID (" + id + ") нет!");
}
- return null;
+ historyManager.add(tasks.get(id));
+ return tasks.get(id);
}
@Override
- public Epic getEpicForId(int id) {
- if (epics.get(id) != null) {
- historyManager.add(epics.get(id));
- return epics.get(id);
+ public Epic getEpicForId(int id) throws NotFoundExeption {
+ if (epics.get(id) == null) {
+ throw new NotFoundExeption("Эпика с таким ID нет");
}
- return null;
+ historyManager.add(epics.get(id));
+ return epics.get(id);
}
+
@Override
- public SubTask getSubTaskForId(int id) {
- if (subTasks.get(id) != null) {
- historyManager.add(subTasks.get(id));
- return subTasks.get(id);
+ public SubTask getSubTaskForId(int id) throws NotFoundExeption {
+ if (subTasks.get(id) == null) {
+ throw new NotFoundExeption("Подзадачи с таким ID нет");
}
- return null;
+ historyManager.add(subTasks.get(id));
+ return subTasks.get(id);
}
+
//Обновление задачи
//__________________________________________________
@Override
- public void updateTask(Task task) {
- if (tasks.containsKey(task.getIdTask())) {
- tasks.put(task.getIdTask(), task);
+ public void updateTask(Task task) throws TimeConflictExeption {
+ if (!tasks.containsKey(task.getId())) {
+ throw new TimeConflictExeption("Задачи пересекаются по времени");
} else {
- System.out.println("Такой задачи нет");
+ tasks.put(task.getId(), task);
}
}
@Override
public void updateEpic(Epic epic) {
- if (epics.containsKey(epic.getIdTask())) {
- Epic epic1 = epics.get(epic.getIdTask());
- epic1.setDescriptionTask(epic.getDescriptionTask());
- epic1.setTitleTask(epic.getTitleTask());
+ if (epics.containsKey(epic.getId())) {
+ Epic epic1 = epics.get(epic.getId());
+ epic1.setDescription(epic.getDescription());
+ epic1.setName(epic.getName());
} else {
System.out.println("Такой задачи нет");
}
}
@Override
- public void updateSubTask(SubTask subTask) {
- if (subTasks.containsKey(subTask.getIdTask())) {
- subTasks.put(subTask.getIdTask(), subTask);
+ public void updateSubTask(SubTask subTask) throws NotFoundExeption {
+ if (subTasks.containsKey(subTask.getId())) {
+ subTasks.put(subTask.getId(), subTask);
updateStatusEpic(epics.get(subTask.getEpicId()));
updateTimeEpic(epics.get(subTask.getEpicId()));
} else {
@@ -290,37 +299,52 @@ public void removeTaskForId(int id) {
}
@Override
- public void removeEpicForId(int id) {
+ public void removeEpicForId(int id) throws NotFoundExeption {
+ if (!epics.containsKey(id)) {
+ throw new NotFoundExeption("Эпика с таким айди нет");
+ }
+
Epic epic = epics.get(id);
- epic.getIdSubTasks()
- .forEach(subTasksId -> {
- subTasks.remove(subTasksId);
- historyManager.remove(subTasksId);
- priority.remove(subTasks.get(subTasksId));
- });
- epic.removeSubTask();
+ List subTaskIds = epic.getIdSubTasks();
+
+ if (subTaskIds != null && !subTaskIds.isEmpty()) {
+ for (Integer subTaskId : subTaskIds) {
+ SubTask subTask = subTasks.get(subTaskId);
+ if (subTask != null) {
+ subTasks.remove(subTaskId);
+ historyManager.remove(subTaskId);
+ if (subTask.getStartTime() != null) {
+ priority.remove(subTask);
+ }
+ }
+ }
+ }
epics.remove(id);
historyManager.remove(id);
priority.remove(epic);
-
}
@Override
- public void removeSubTaskForId(int id) {
+ public void removeSubTaskForId(int id) throws IOException, NotFoundExeption {
SubTask subTask = subTasks.get(id);
Epic epic = epics.get(subTask.getEpicId());
epic.removeIdSubTasks(id);
subTasks.remove(id);
historyManager.remove(id);
- priority.remove(subTask);
updateStatusEpic(epic);
- updateTimeEpic(epic);
+ if (subTask.getStartTime().isPresent()) {
+ priority.remove(subTask);
+ updateTimeEpic(epic);
+ }
}
//Получение списка всех подзадач model.Epic`a
//___________________________________________________
@Override
- public ArrayList getAllSubTasksForEpic(int idEpic) {
+ public ArrayList getAllSubTasksForEpic(int idEpic) throws NotFoundExeption {
+ if (!epics.containsKey(idEpic)) {
+ throw new NotFoundExeption("Эпика с таким ID нет.");
+ }
return epics.get(idEpic)
.getIdSubTasks()
.stream()
@@ -330,7 +354,8 @@ public ArrayList getAllSubTasksForEpic(int idEpic) {
// Отображение просмотренных задач
//__________________________________________________
- public List getHisory() {
+ @Override
+ public List getHistory() {
return historyManager.getTasks();
}
diff --git a/src/manager/Managers.java b/src/manager/Managers.java
index 8bc5d1d..734f4ff 100644
--- a/src/manager/Managers.java
+++ b/src/manager/Managers.java
@@ -3,8 +3,10 @@
import java.io.File;
public class Managers {
+ private static final String FILE = "SaveListTask.csv";
+
public static TaskManager getDefault() {
- return new FileBackedTaskManager(new File("SaveListTask.csv"));
+ return new FileBackedTaskManager(new File(FILE));
}
public static HistoryManager getDefaultHistory() {
diff --git a/src/manager/TaskManager.java b/src/manager/TaskManager.java
index 88305fa..b0c9985 100644
--- a/src/manager/TaskManager.java
+++ b/src/manager/TaskManager.java
@@ -1,10 +1,14 @@
package manager;
+import exeptions.NotFoundExeption;
+import exeptions.TimeConflictExeption;
import model.Epic;
import model.SubTask;
import model.Task;
+import java.io.IOException;
import java.util.ArrayList;
+import java.util.List;
public interface TaskManager {
@@ -14,7 +18,7 @@ public interface TaskManager {
void addEpic(Epic epic);
- void addSubTask(SubTask subTask);
+ void addSubTask(SubTask subTask) throws NotFoundExeption;
// Получение списка задач
//___________________________________________
@@ -30,38 +34,40 @@ public interface TaskManager {
void removeAllEpics();
- void removeAllSubTasks();
+ void removeAllSubTasks() throws NotFoundExeption;
//Получение по идентификатору
//_____________________________________________
- Task getTaskForId(int id);
+ Task getTaskForId(int id) throws NotFoundExeption;
- Epic getEpicForId(int id);
+ Epic getEpicForId(int id) throws NotFoundExeption;
- SubTask getSubTaskForId(int id);
+ SubTask getSubTaskForId(int id) throws NotFoundExeption;
//Обновление задачи
//__________________________________________________
- void updateTask(Task task);
+ void updateTask(Task task) throws TimeConflictExeption;
- void updateEpic(Epic epic);
+ void updateEpic(Epic epic) throws TimeConflictExeption;
- void updateSubTask(SubTask subTask);
+ void updateSubTask(SubTask subTask) throws TimeConflictExeption, NotFoundExeption;
//Удаление задачи по ID
//____________________________________________________
- void removeTaskForId(int id);
+ void removeTaskForId(int id) throws IOException;
- void removeEpicForId(int id);
+ void removeEpicForId(int id) throws NotFoundExeption;
- void removeSubTaskForId(int id);
+ void removeSubTaskForId(int id) throws IOException, NotFoundExeption;
//Получение списка всех подзадач model.Epic`a
//___________________________________________________
- ArrayList getAllSubTasksForEpic(int idEpic);
+ ArrayList getAllSubTasksForEpic(int idEpic) throws NotFoundExeption;
+
+ // Отображение просмотренных задач
+ //__________________________________________________
+ List getHistory();
- //Отображение последних 10 просмотренных задач
- //___________________________________________________
- // List getHistory();
+ List getPrioritizedTasks();
}
diff --git a/src/model/Epic.java b/src/model/Epic.java
index 3c80156..95a3b5b 100644
--- a/src/model/Epic.java
+++ b/src/model/Epic.java
@@ -7,28 +7,42 @@ public class Epic extends Task {
private ArrayList idSubTasks;
LocalDateTime endTime;
- public Epic(String titleTask, String descriptionTask) {
- super(titleTask, descriptionTask);
+ public Epic(String name, String description) {
+ super(name, description);
this.idSubTasks = new ArrayList<>();
}
- public Epic(int idTask, String titleTask, String descriptionTask) {
- super(idTask, titleTask, descriptionTask);
+ public Epic(int id, String name, String description) {
+ super(id, name, description);
this.idSubTasks = new ArrayList<>();
}
- public Epic(int idTask, TypeTask type, String titleTask, String descriptionTask, Status status, ArrayList idSubTasks) {
- super(idTask, type, titleTask, descriptionTask, status);
+ public Epic(int id, TypeTask typeTask, String name, String description, Status status, ArrayList idSubTasks) {
+ super(id, typeTask, name, description, status);
this.idSubTasks = idSubTasks;
}
- public Epic(int idTask, TypeTask type, String titleTask, String descriptionTask, Status statusTask, LocalDateTime startTime, long duration, LocalDateTime endTime, ArrayList idSubTasks) {
- super(idTask, type, titleTask, descriptionTask, statusTask);
+ public Epic(int id, TypeTask typeTask, String name, String description, Status status, LocalDateTime startTime, long duration, LocalDateTime endTime, ArrayList idSubTasks) {
+ super(id, typeTask, name, description, status, startTime, duration, endTime);
this.idSubTasks = idSubTasks;
endTime = getEndTimeEpic();
}
+ public Epic(int id, TypeTask typeTask, String name, String description, Status status, LocalDateTime startTime, long duration, LocalDateTime endTime) {
+ super(id, typeTask, name, description, status, startTime, duration, endTime);
+ this.idSubTasks = idSubTasks;
+ endTime = getEndTimeEpic();
+ }
+
+
+ public Epic() {
+ }
+
+ public Epic(int id, TypeTask typeTask, String name, String description, Status status) {
+ super(id, typeTask, name, description, status);
+ }
+
public ArrayList getIdSubTasks() {
return idSubTasks;
}
@@ -66,10 +80,10 @@ public TypeTask getTypeTask() {
@Override
public String toString() {
return "\n model.Epic{" +
- "Номер задачи = " + getIdTask() +
- ", Название задачи = '" + getTitleTask() + '\'' +
- ", Описание задачи = '" + getDescriptionTask() + '\'' +
- ", Статус выполнения = " + getStatusTask() +
+ "Номер задачи = " + getId() +
+ ", Название задачи = '" + getName() + '\'' +
+ ", Описание задачи = '" + getDescription() + '\'' +
+ ", Статус выполнения = " + getStatus() +
", idSubTasks = " + idSubTasks +
'}';
}
diff --git a/src/model/SubTask.java b/src/model/SubTask.java
index e95a592..086f46f 100644
--- a/src/model/SubTask.java
+++ b/src/model/SubTask.java
@@ -5,23 +5,23 @@
public class SubTask extends Task {
private Integer epicId;
- public SubTask(String titleTask, String descriptionTask, Status statusTask, Integer epicId) {
- super(titleTask, descriptionTask, statusTask);
+ public SubTask(String name, String description, Status status, Integer epicId) {
+ super(name, description, status);
this.epicId = epicId;
}
- public SubTask(int idTask, String titleTask, String descriptionTask, Status statusTask, Integer epicId) {
- super(idTask, titleTask, descriptionTask, statusTask);
+ public SubTask(int id, String name, String description, Status status, Integer epicId) {
+ super(id, name, description, status);
this.epicId = epicId;
}
- public SubTask(int idTask, TypeTask type, String titleTask, String discription, Status status, int epicId) {
- super(idTask, type, titleTask, discription, status);
+ public SubTask(int id, TypeTask typeTask, String name, String discription, Status status, int epicId) {
+ super(id, typeTask, name, discription, status);
this.epicId = epicId;
}
- public SubTask(int idTask, TypeTask type, String titleTask, String descriptionTask, Status statusTask, LocalDateTime startTime, long duration, LocalDateTime endTime, Integer epicId) {
- super(idTask, type, titleTask, descriptionTask, statusTask);
+ public SubTask(int id, TypeTask typeTask, String name, String description, Status status, LocalDateTime startTime, long duration, LocalDateTime endTime, Integer epicId) {
+ super(id, typeTask, name, description, status, startTime, duration, endTime);
this.epicId = epicId;
}
@@ -41,10 +41,10 @@ public TypeTask getTypeTask() {
@Override
public String toString() {
return "\n model.SubTask{" +
- "Номер подзадачи = " + getIdTask() +
- ", Название задачи = '" + getTitleTask() + '\'' +
- ", Описание задачи = '" + getDescriptionTask() + '\'' +
- ", Статус выполнения = " + getStatusTask() +
+ "Номер подзадачи = " + getId() +
+ ", Название задачи = '" + getName() + '\'' +
+ ", Описание задачи = '" + getDescription() + '\'' +
+ ", Статус выполнения = " + getStatus() +
", Номер основной задачи = " + getEpicId() +
'}';
}
diff --git a/src/model/Task.java b/src/model/Task.java
index 2fd0da4..3de2558 100644
--- a/src/model/Task.java
+++ b/src/model/Task.java
@@ -1,59 +1,62 @@
package model;
+
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.Objects;
import java.util.Optional;
public class Task {
- private int idTask;
- private String titleTask;
- private String descriptionTask;
- private Status statusTask;
- private long duration;
+ private int id;
+ private String name;
+ private TypeTask typeTask;
+ private String description;
+ private Status status;
private LocalDateTime startTime;
+ private long duration;
-
- public Task(String titleTask, String descriptionTask) {
- this.titleTask = titleTask;
- this.descriptionTask = descriptionTask;
+ public Task(String name, String description) {
+ this.name = name;
+ this.description = description;
}
- public Task(String titleTask, String descriptionTask, Status statusTask) {
- this.titleTask = titleTask;
- this.descriptionTask = descriptionTask;
- this.statusTask = statusTask;
+ public Task(String name, String description, Status status) {
+ this.name = name;
+ this.description = description;
+ this.status = status;
}
- public Task(int idTask, String titleTask, String descriptionTask) {
- this.idTask = idTask;
- this.titleTask = titleTask;
- this.descriptionTask = descriptionTask;
+ public Task(int id, String name, String description) {
+ this.id = id;
+ this.name = name;
+ this.description = description;
}
- public Task(int idTask, String titleTask, String descriptionTask, Status statusTask) {
- this.idTask = idTask;
- this.titleTask = titleTask;
- this.descriptionTask = descriptionTask;
- this.statusTask = statusTask;
+ public Task(int id, String name, String description, Status status) {
+ this.id = id;
+ this.name = name;
+ this.description = description;
+ this.status = status;
}
- public Task(int idTask, TypeTask type, String titleTask, String descriptionTask, Status status) {
- this.idTask = idTask;
- this.titleTask = titleTask;
- this.descriptionTask = descriptionTask;
- this.statusTask = status;
+ public Task(int id, TypeTask typeTask, String name, String description, Status status) {
+ this.id = id;
+ this.name = name;
+ this.typeTask = getTypeTask();
+ this.description = description;
+ this.status = status;
}
public Task() {
}
- public Task(int idTask, TypeTask type, String titleTask, String descriptionTask, Status statusTask, LocalDateTime startTime, long duration, LocalDateTime endTime) {
- this.idTask = idTask;
- this.titleTask = titleTask;
- this.descriptionTask = descriptionTask;
- this.statusTask = statusTask;
+ public Task(int id, TypeTask typeTask, String name, String description, Status status, LocalDateTime startTime, long duration, LocalDateTime endTime) {
+ this.id = id;
+ this.name = name;
+ this.typeTask = getTypeTask();
+ this.description = description;
+ this.status = status;
this.duration = duration;
this.startTime = startTime;
}
@@ -72,36 +75,36 @@ public Optional getEndTime() {
}
- public int getIdTask() {
- return idTask;
+ public int getId() {
+ return id;
}
- public void setIdTask(int idTask) {
- this.idTask = idTask;
+ public void setId(int id) {
+ this.id = id;
}
- public void setTitleTask(String titleTask) {
- this.titleTask = titleTask;
+ public void setName(String name) {
+ this.name = name;
}
- public String getTitleTask() {
- return titleTask;
+ public String getName() {
+ return name;
}
- public String getDescriptionTask() {
- return descriptionTask;
+ public String getDescription() {
+ return description;
}
- public void setDescriptionTask(String descriptionTask) {
- this.descriptionTask = descriptionTask;
+ public void setDescription(String description) {
+ this.description = description;
}
- public Status getStatusTask() {
- return statusTask;
+ public Status getStatus() {
+ return status;
}
- public void setStatusTask(Status statusTask) {
- this.statusTask = statusTask;
+ public void setStatus(Status status) {
+ this.status = status;
}
public Optional getStartTime() {
@@ -129,35 +132,34 @@ public void setDuration(long duration) {
public boolean equals(Object o) {
if (o == null || getClass() != o.getClass()) return false;
Task task = (Task) o;
- return idTask == task.idTask;
+ return id == task.id;
}
@Override
public int hashCode() {
- return Objects.hashCode(idTask);
+ return Objects.hashCode(id);
}
@Override
public String toString() {
if (getStartTime().isPresent() && getEndTime().isPresent()) {
return "\n model.Task{" +
- "Номер задачи = " + idTask +
- ", Название задачи = '" + titleTask + '\'' +
- ", Описание задачи = '" + descriptionTask + '\'' +
- ", Статус выполнения = " + statusTask +
+ "Номер задачи = " + id +
+ ", Название задачи = '" + name + '\'' +
+ ", Описание задачи = '" + description + '\'' +
+ ", Статус выполнения = " + status +
", Время начала задания = " + getStartTime().get() +
", Время выполнения задания = " + getDuration().toMinutes() + " минут" +
", Время окончания задания = " + getEndTime().get() +
'}';
} else {
return "\n model.Task{" +
- "Номер задачи = " + idTask +
- ", Название задачи = '" + titleTask + '\'' +
- ", Описание задачи = '" + descriptionTask + '\'' +
- ", Статус выполнения = " + statusTask +
+ "Номер задачи = " + id +
+ ", Название задачи = '" + name + '\'' +
+ ", Описание задачи = '" + description + '\'' +
+ ", Статус выполнения = " + status +
'}';
}
}
-
}
\ No newline at end of file
diff --git a/test/http/handler/EpicsHandlerTest.java b/test/http/handler/EpicsHandlerTest.java
new file mode 100644
index 0000000..ae14432
--- /dev/null
+++ b/test/http/handler/EpicsHandlerTest.java
@@ -0,0 +1,146 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import exeptions.NotFoundExeption;
+import http.HttpTaskServer;
+import manager.InMemoryTaskManager;
+import manager.TaskManager;
+import model.Epic;
+import model.Status;
+import model.TypeTask;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class EpicsHandlerTest {
+ TaskManager manager = new InMemoryTaskManager();
+ HttpTaskServer taskServer = new HttpTaskServer(manager);
+ Gson gson = taskServer.getGson();
+
+ public EpicsHandlerTest() throws IOException {
+ }
+
+ @BeforeEach
+ public void setUp() throws NotFoundExeption, IOException {
+ manager.removeAllTasks();
+ manager.removeAllEpics();
+ manager.removeAllSubTasks();
+ taskServer.start();
+ }
+
+ @AfterEach
+ public void shutDown() {
+ taskServer.stop();
+ }
+
+ @Test
+ public void testAddEpic() throws IOException, InterruptedException, NotFoundExeption {
+ Epic epic = new Epic(1,
+ TypeTask.EPIC,
+ "nameTest1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 0,
+ LocalDateTime.now());
+ String strEpic = gson.toJson(epic);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/epics/");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .POST(HttpRequest.BodyPublishers.ofString(strEpic))
+ .header("Content-Type", "application/json")
+ .build();
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ List epicList = manager.getAllEpics();
+
+ assertEquals(1, epicList.size(), "Количество Эпиков не совпадает");
+ assertEquals(epic, manager.getEpicForId(1), "Эпик добавился, неправельный!");
+ assertEquals(201, response.statusCode(), "Ошибка статуса!");
+ }
+
+ @Test
+ public void testGetEpic() throws IOException, InterruptedException {
+ Epic epic1 = new Epic(1,
+ TypeTask.EPIC,
+ "nameTest1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 0,
+ LocalDateTime.now());
+ Epic epic2 = new Epic(2,
+ TypeTask.EPIC,
+ "nameTest2",
+ "disTest2",
+ Status.NEW,
+ LocalDateTime.now().plusDays(1),
+ 0,
+ LocalDateTime.now());
+ manager.addEpic(epic1);
+ manager.addEpic(epic2);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/epics/2");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .GET()
+ .build();
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ String strEpic = gson.toJson(epic2);
+ String strEpicJson = gson.toJson(response.body());
+ assertEquals(strEpic, gson.fromJson(strEpicJson, String.class), "Эпики не совпадают");
+ assertEquals(200, response.statusCode(), "Неправильный статус при получении Эпика");
+ }
+
+ @Test
+ public void testDeleteEpic() throws IOException, InterruptedException {
+ Epic epic1 = new Epic(1,
+ TypeTask.EPIC,
+ "nameTest1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 0,
+ LocalDateTime.now());
+ Epic epic2 = new Epic(2,
+ TypeTask.EPIC,
+ "nameTest2",
+ "disTest2",
+ Status.NEW,
+ LocalDateTime.now().plusDays(1),
+ 0,
+ LocalDateTime.now());
+ manager.addEpic(epic1);
+ manager.addEpic(epic2);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/epics/1");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .DELETE()
+ .build();
+ //Количество Эпиков до удаления
+ List epicList = manager.getAllEpics();
+ assertEquals(2, epicList.size(), "До удаления неправильное количество Эпиков");
+
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ List epicListAftherDel = manager.getAllEpics();
+ assertEquals(1, epicListAftherDel.size(), "количество Эпиков после удаления неправильное");
+ assertEquals(200, response.statusCode());
+ }
+}
\ No newline at end of file
diff --git a/test/http/handler/HistoryHandlerTest.java b/test/http/handler/HistoryHandlerTest.java
new file mode 100644
index 0000000..bb3f53c
--- /dev/null
+++ b/test/http/handler/HistoryHandlerTest.java
@@ -0,0 +1,93 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import exeptions.NotFoundExeption;
+import http.HttpTaskServer;
+import manager.InMemoryTaskManager;
+import manager.TaskManager;
+import model.*;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class HistoryHandlerTest {
+ TaskManager manager = new InMemoryTaskManager();
+ HttpTaskServer taskServer = new HttpTaskServer(manager);
+ Gson gson = taskServer.getGson();
+
+ public HistoryHandlerTest() throws IOException {
+ }
+
+ @BeforeEach
+ public void setUp() throws NotFoundExeption, IOException {
+ manager.removeAllTasks();
+ manager.removeAllEpics();
+ manager.removeAllSubTasks();
+ taskServer.start();
+ }
+
+ @AfterEach
+ public void shutDown() {
+ taskServer.stop();
+ }
+
+ @Test
+ public void testGetHistoty() throws NotFoundExeption, IOException, InterruptedException {
+ Epic epic = new Epic(1,
+ TypeTask.EPIC,
+ "nameHistory",
+ "disHistory",
+ Status.NEW,
+ LocalDateTime.now(),
+ 100, LocalDateTime.now(),
+ new ArrayList<>());
+ SubTask subTask1 = new SubTask(2,
+ TypeTask.SUBTASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now().plusMonths(1),
+ 150,
+ LocalDateTime.now(),
+ 1);
+ Task task = new Task(3,
+ TypeTask.TASK,
+ "test2",
+ "disTest3",
+ Status.NEW,
+ LocalDateTime.now().plusHours(3),
+ 150,
+ LocalDateTime.now());
+ manager.addEpic(epic);
+ manager.addSubTask(subTask1);
+ manager.addTask(task);
+ manager.getEpicForId(1);
+ manager.getSubTaskForId(2);
+ manager.getTaskForId(3);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/history/");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .GET()
+ .build();
+
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+ String str = response.body().toString();
+ List str1 = manager.getHistory();
+ String str2 = gson.toJson(str1);
+ assertEquals(200, response.statusCode());
+ assertEquals(str, str2, "Списки истории просмотренных задач отличаются!");
+ }
+}
\ No newline at end of file
diff --git a/test/http/handler/PriorityHandlerTest.java b/test/http/handler/PriorityHandlerTest.java
new file mode 100644
index 0000000..88fc47c
--- /dev/null
+++ b/test/http/handler/PriorityHandlerTest.java
@@ -0,0 +1,91 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import exeptions.NotFoundExeption;
+import http.HttpTaskServer;
+import manager.InMemoryTaskManager;
+import manager.TaskManager;
+import model.*;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class PriorityHandlerTest {
+ TaskManager manager = new InMemoryTaskManager();
+ HttpTaskServer taskServer = new HttpTaskServer(manager);
+ Gson gson = taskServer.getGson();
+
+ public PriorityHandlerTest() throws IOException {
+ }
+
+ @BeforeEach
+ public void setUp() throws NotFoundExeption, IOException {
+ manager.removeAllTasks();
+ manager.removeAllEpics();
+ manager.removeAllSubTasks();
+ taskServer.start();
+ }
+
+ @AfterEach
+ public void shutDown() {
+ taskServer.stop();
+ }
+
+ @Test
+ public void testGetHistoty() throws NotFoundExeption, IOException, InterruptedException {
+ Epic epic = new Epic(1,
+ TypeTask.EPIC,
+ "nameHistory",
+ "disHistory",
+ Status.NEW,
+ LocalDateTime.now(),
+ 100, LocalDateTime.now(),
+ new ArrayList<>());
+ SubTask subTask1 = new SubTask(2,
+ TypeTask.SUBTASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now().plusMonths(1),
+ 150,
+ LocalDateTime.now(),
+ 1);
+ Task task = new Task(3,
+ TypeTask.TASK,
+ "test2",
+ "disTest3",
+ Status.NEW,
+ LocalDateTime.now().plusHours(3),
+ 150,
+ LocalDateTime.now());
+ manager.addEpic(epic);
+ manager.addSubTask(subTask1);
+ manager.addTask(task);
+
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/priorityzed/");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .GET()
+ .build();
+
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+ String str = response.body().toString();
+ List str1 = manager.getPrioritizedTasks();
+ String str2 = gson.toJson(str1);
+ assertEquals(200, response.statusCode());
+ assertEquals(str, str2, "Списки истории приоритетых задач отличаются!");
+ }
+}
\ No newline at end of file
diff --git a/test/http/handler/SubtaskHandlerTest.java b/test/http/handler/SubtaskHandlerTest.java
new file mode 100644
index 0000000..e56fd41
--- /dev/null
+++ b/test/http/handler/SubtaskHandlerTest.java
@@ -0,0 +1,222 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import exeptions.NotFoundExeption;
+import http.HttpTaskServer;
+import manager.InMemoryTaskManager;
+import manager.TaskManager;
+import model.*;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.LocalDateTime;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class SubtaskHandlerTest {
+ TaskManager manager = new InMemoryTaskManager();
+ HttpTaskServer taskServer = new HttpTaskServer(manager);
+ Gson gson = taskServer.getGson();
+
+ public SubtaskHandlerTest() throws IOException {
+ }
+
+ @BeforeEach
+ public void setUp() throws NotFoundExeption, IOException {
+ manager.removeAllTasks();
+ manager.removeAllEpics();
+ manager.removeAllSubTasks();
+ taskServer.start();
+ }
+
+ @AfterEach
+ public void shutDown() {
+ taskServer.stop();
+ }
+
+ @Test
+ public void testAddSubtask() throws IOException, InterruptedException {
+ Epic epic = new Epic(1,
+ TypeTask.EPIC,
+ "nameEpic",
+ "disEpic",
+ Status.NEW,
+ LocalDateTime.now(),
+ 100, LocalDateTime.now(),
+ new ArrayList<>());
+ SubTask subTask = new SubTask(2,
+ TypeTask.SUBTASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 150,
+ LocalDateTime.now(),
+ 1);
+ manager.addEpic(epic);
+
+ String subTaskToJson = gson.toJson(subTask);
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/subtasks/");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .header("Content-Type", "application/json")
+ .POST(HttpRequest.BodyPublishers.ofString(subTaskToJson))
+ .build();
+
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ assertEquals(201, response.statusCode());
+
+ List subtaskList = manager.getAllSubTask();
+
+ assertNotNull(subtaskList, "Подзадача не добавлена в лист.");
+ assertEquals(1, subtaskList.size(), "Некоректное количество подзадач");
+ assertEquals("test1", subtaskList.get(0).getName());
+ }
+
+ @Test
+ public void testGetSubtask() throws IOException, InterruptedException, NotFoundExeption {
+ Epic epic = new Epic(1,
+ TypeTask.EPIC,
+ "nameEpic",
+ "disEpic",
+ Status.NEW,
+ LocalDateTime.now(),
+ 100, LocalDateTime.now(),
+ new ArrayList<>());
+ SubTask subTask1 = new SubTask(2,
+ TypeTask.SUBTASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 150,
+ LocalDateTime.now(),
+ 1);
+ SubTask subTask2 = new SubTask(3,
+ TypeTask.SUBTASK,
+ "test2",
+ "disTest2",
+ Status.NEW,
+ LocalDateTime.now().plusMonths(2),
+ 180,
+ LocalDateTime.now(),
+ 1);
+ manager.addEpic(epic);
+ manager.addSubTask(subTask1);
+ manager.addSubTask(subTask2);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/subtasks/2");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .GET()
+ .build();
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ String strSubtask = gson.toJson(response.body());
+ String stsSub = gson.fromJson(strSubtask, String.class);
+ SubTask subTask = gson.fromJson(stsSub, SubTask.class);
+ assertEquals(subTask, subTask1, "Подзадачи не равны!");
+ assertEquals(200, response.statusCode(), "Ошибка статуса");
+ }
+
+ @Test
+ public void testGetAllSubtask() throws IOException, InterruptedException, NotFoundExeption {
+ Epic epic = new Epic(1,
+ TypeTask.EPIC,
+ "nameEpic",
+ "disEpic",
+ Status.NEW,
+ LocalDateTime.now(),
+ 100, LocalDateTime.now(),
+ new ArrayList<>());
+ SubTask subTask1 = new SubTask(2,
+ TypeTask.SUBTASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 150,
+ LocalDateTime.now(),
+ 1);
+ SubTask subTask2 = new SubTask(3,
+ TypeTask.SUBTASK,
+ "test2",
+ "disTest2",
+ Status.NEW,
+ LocalDateTime.now().plusMonths(2),
+ 180,
+ LocalDateTime.now(),
+ 1);
+ manager.addEpic(epic);
+ manager.addSubTask(subTask1);
+ manager.addSubTask(subTask2);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/subtasks/");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .header("Content-Type", "application/json")
+ .GET()
+ .build();
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ String allSubtask = gson.toJson(response.body());
+ String allSubtaskInmanager = gson.toJson(manager.getAllSubTask());
+ assertEquals(200, response.statusCode(), "Ошибка статуса");
+ assertEquals(allSubtask, gson.toJson(allSubtaskInmanager, String.class), "Списки подзадач не равны!");
+ }
+
+ @Test
+ public void testDeleteSubtask() throws IOException, InterruptedException, NotFoundExeption {
+ Epic epic = new Epic(1,
+ TypeTask.EPIC,
+ "nameEpic",
+ "disEpic",
+ Status.NEW,
+ LocalDateTime.now(),
+ 100, LocalDateTime.now(),
+ new ArrayList<>());
+ SubTask subTask1 = new SubTask(2,
+ TypeTask.SUBTASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 150,
+ LocalDateTime.now(),
+ 1);
+ SubTask subTask2 = new SubTask(3,
+ TypeTask.SUBTASK,
+ "test2",
+ "disTest2",
+ Status.NEW,
+ LocalDateTime.now().plusMonths(2),
+ 180,
+ LocalDateTime.now(),
+ 1);
+ manager.addEpic(epic);
+ manager.addSubTask(subTask1);
+ manager.addSubTask(subTask2);
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/subtasks/3");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .DELETE()
+ .build();
+
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+ assertEquals(200, response.statusCode());
+ assertEquals(1, manager.getAllSubTask().size(), "Количество Подазадач после удаления неправильное!");
+ }
+}
\ No newline at end of file
diff --git a/test/http/handler/TaskHandlerTest.java b/test/http/handler/TaskHandlerTest.java
new file mode 100644
index 0000000..21a10bc
--- /dev/null
+++ b/test/http/handler/TaskHandlerTest.java
@@ -0,0 +1,184 @@
+package http.handler;
+
+import com.google.gson.Gson;
+import exeptions.NotFoundExeption;
+import http.HttpTaskServer;
+import manager.InMemoryTaskManager;
+import manager.TaskManager;
+import model.Status;
+import model.Task;
+import model.TypeTask;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.time.LocalDateTime;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class TaskHandlerTest {
+ TaskManager manager = new InMemoryTaskManager();
+ HttpTaskServer taskServer = new HttpTaskServer(manager);
+ Gson gson = taskServer.getGson();
+
+ public TaskHandlerTest() throws IOException {
+ }
+
+ @BeforeEach
+ public void setUp() throws NotFoundExeption, IOException {
+ manager.removeAllTasks();
+ manager.removeAllEpics();
+ manager.removeAllSubTasks();
+ taskServer.start();
+ }
+
+ @AfterEach
+ public void shutDown() {
+ taskServer.stop();
+ }
+
+ @Test
+ public void testAddTask() throws IOException, InterruptedException {
+ Task task = new Task(1,
+ TypeTask.TASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 150,
+ LocalDateTime.now());
+
+ String taskToJson = gson.toJson(task);
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/tasks");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .POST(HttpRequest.BodyPublishers.ofString(taskToJson))
+ .build();
+
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ assertEquals(201, response.statusCode());
+
+ List taskList = manager.getAllTask();
+
+ assertNotNull(taskList, "Задача не добавлена в лист.");
+ assertEquals(1, taskList.size(), "Некоректное количество задач");
+ assertEquals("test1", taskList.get(0).getName());
+ }
+
+ @Test
+ public void testGetTask() throws IOException, InterruptedException {
+ Task task = new Task(1,
+ TypeTask.TASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 150,
+ LocalDateTime.now());
+
+ String taskJson = gson.toJson(task);
+ manager.addTask(task);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/tasks/1");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .GET()
+ .build();
+
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ String newTaskJson = gson.toJson(response.body());
+
+ assertEquals(200, response.statusCode());
+
+ assertEquals(taskJson, gson.fromJson(newTaskJson, String.class), "Задачи не равны");
+ }
+
+ @Test
+ public void testGetAllTasks() throws IOException, InterruptedException {
+ Task task1 = new Task(1,
+ TypeTask.TASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 150,
+ LocalDateTime.now());
+ Task task2 = new Task(1,
+ TypeTask.TASK,
+ "test2",
+ "disTest2",
+ Status.NEW,
+ LocalDateTime.now().plusDays(1),
+ 100,
+ LocalDateTime.now());
+ manager.addTask(task1);
+ manager.addTask(task2);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/tasks/");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .GET()
+ .build();
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ List listTask = manager.getAllTask();
+ String stringListTask1 = gson.toJson(listTask);
+ String stringListTask2 = gson.toJson(response.body());
+
+
+ assertEquals(stringListTask1, gson.fromJson(stringListTask2, String.class), "Списки отличатся! При получении всех задач");
+ assertEquals(2, listTask.size(), "Количество задач разное! При получении всех задач.");
+ }
+
+ @Test
+ public void testDeleteTask() throws IOException, InterruptedException, NotFoundExeption {
+ Task task1 = new Task(1,
+ TypeTask.TASK,
+ "test1",
+ "disTest1",
+ Status.NEW,
+ LocalDateTime.now(),
+ 150,
+ LocalDateTime.now());
+ Task task2 = new Task(1,
+ TypeTask.TASK,
+ "test2",
+ "disTest2",
+ Status.NEW,
+ LocalDateTime.now().plusDays(1),
+ 100,
+ LocalDateTime.now());
+ manager.addTask(task1);
+ manager.addTask(task2);
+
+ HttpClient client = HttpClient.newHttpClient();
+ URI url = URI.create("http://localhost:8080/tasks/1");
+ HttpRequest request = HttpRequest.newBuilder()
+ .uri(url)
+ .DELETE()
+ .build();
+
+ // Проверка количества задач до запроса.
+ List listTask = manager.getAllTask();
+ assertEquals(2, listTask.size(), "Количество задач отличатся!В тесте Удаления");
+
+ HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
+
+ List listTaskAfther = manager.getAllTask();
+ Task newTask = manager.getTaskForId(2);
+ assertEquals(1, listTaskAfther.size(), "Количество задач полсе удаление не совпадает!");
+ assertEquals(task2, newTask, "Задачи не совпадают после удаления!(не так удиалилась!)");
+ }
+
+}
\ No newline at end of file
diff --git a/test/manager/FileBackedTaskManagerTest.java b/test/manager/FileBackedTaskManagerTest.java
index f1de2a9..ee1dea3 100644
--- a/test/manager/FileBackedTaskManagerTest.java
+++ b/test/manager/FileBackedTaskManagerTest.java
@@ -1,13 +1,13 @@
package manager;
+import exeptions.ManagerSaveException;
+import exeptions.NotFoundExeption;
import model.Status;
import model.Task;
import model.TypeTask;
import org.junit.Test;
-import org.junit.jupiter.api.Assertions;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
@@ -49,7 +49,7 @@ public void loadEmptyFile() {
}
@Test
- public void save2NewTaskInList() throws ManagerSaveException {
+ public void save2NewTaskInList() throws ManagerSaveException, NotFoundExeption {
Task task1 = new Task(1, "NameTask1", "DiscriprioinTask1", Status.NEW);
Task task2 = new Task(2, "NameTask2", "DiscriprioinTask2", Status.NEW);
@@ -65,7 +65,7 @@ public void save2NewTaskInList() throws ManagerSaveException {
@Test
public void load2TaskInFile() throws ManagerSaveException {
- File path = new File("SaveListTask.csv");
+ File path = new File("TestSaveListTask.csv");
FileBackedTaskManager fileBackedTaskManager1 = FileBackedTaskManager.loadFromFile(path);
Task task1 = fileBackedTaskManager1.tasks.get(1);
@@ -85,7 +85,6 @@ public void saveTaskWithTimeIndication() throws ManagerSaveException {
Task task = new Task(1, TypeTask.TASK, "nameTaskTime1", "discriptionTaskTime1",
Status.NEW, startTime, 50, null);
fileBackedTaskManager1.addTask(task);
- System.out.println(fileBackedTaskManager1.getAllTask());
}
}
\ No newline at end of file
diff --git a/test/manager/InMemoryTaskManagerTest.java b/test/manager/InMemoryTaskManagerTest.java
index ff60531..fc4c6e7 100644
--- a/test/manager/InMemoryTaskManagerTest.java
+++ b/test/manager/InMemoryTaskManagerTest.java
@@ -1,5 +1,7 @@
package manager;
+import exeptions.NotFoundExeption;
+import exeptions.TimeConflictExeption;
import model.*;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -10,6 +12,7 @@
import java.util.List;
import static model.Status.*;
+import static org.junit.Assert.assertThrows;
class InMemoryTaskManagerTest {
static InMemoryTaskManager taskManager = new InMemoryTaskManager();
@@ -20,7 +23,7 @@ public void beforeEach() {
}
@Test
- public void addNewTask() {
+ public void addNewTask() throws NotFoundExeption {
Epic epic = new Epic(1, "Test addNewEpic", "Test addNewEpic description");
Task task = new Task(2, "Test addNewTask", "Test addNewTask description", NEW);
SubTask subTask = new SubTask(3, "Test subTaskName", "Test SubTask description", Status.DONE, 1);
@@ -37,21 +40,21 @@ public void addNewTask() {
Assertions.assertNotNull(savedTask, "Задача не найдена.");
Assertions.assertNotNull(savedTaskSubTask, "Подзадача не найдена.");
- Assertions.assertEquals(savedEpic.getTitleTask(), "Test addNewEpic", "Название Epic не совпадает.");
- Assertions.assertEquals(savedTask.getTitleTask(), "Test addNewTask", "Название задачи не совпадает.");
- Assertions.assertEquals(savedTaskSubTask.getTitleTask(), "Test subTaskName", "Название подзадачи не совпадает.");
+ Assertions.assertEquals(savedEpic.getName(), "Test addNewEpic", "Название Epic не совпадает.");
+ Assertions.assertEquals(savedTask.getName(), "Test addNewTask", "Название задачи не совпадает.");
+ Assertions.assertEquals(savedTaskSubTask.getName(), "Test subTaskName", "Название подзадачи не совпадает.");
- Assertions.assertEquals(savedEpic.getDescriptionTask(), "Test addNewEpic description", "Описание Epic не совпадает.");
- Assertions.assertEquals(savedTask.getDescriptionTask(), "Test addNewTask description", "Описание задачи не совпадает.");
- Assertions.assertEquals(savedTaskSubTask.getDescriptionTask(), "Test SubTask description", "Описание подзадачи не совпадает.");
+ Assertions.assertEquals(savedEpic.getDescription(), "Test addNewEpic description", "Описание Epic не совпадает.");
+ Assertions.assertEquals(savedTask.getDescription(), "Test addNewTask description", "Описание задачи не совпадает.");
+ Assertions.assertEquals(savedTaskSubTask.getDescription(), "Test SubTask description", "Описание подзадачи не совпадает.");
- Assertions.assertEquals(savedEpic.getIdTask(), 1, "id Epic не совпадает");
- Assertions.assertEquals(savedTask.getIdTask(), 2, "id Task не совпадает");
- Assertions.assertEquals(savedTaskSubTask.getIdTask(), 3, "id SubTask не совпадает");
+ Assertions.assertEquals(savedEpic.getId(), 1, "id Epic не совпадает");
+ Assertions.assertEquals(savedTask.getId(), 2, "id Task не совпадает");
+ Assertions.assertEquals(savedTaskSubTask.getId(), 3, "id SubTask не совпадает");
- Assertions.assertEquals(savedEpic.getStatusTask(), DONE, "Статус Epic не совпадает");
- Assertions.assertEquals(savedTask.getStatusTask(), NEW, "Статус Task не совпадает");
- Assertions.assertEquals(savedTaskSubTask.getStatusTask(), DONE, "Статус SubTask не совпадает");
+ Assertions.assertEquals(savedEpic.getStatus(), DONE, "Статус Epic не совпадает");
+ Assertions.assertEquals(savedTask.getStatus(), NEW, "Статус Task не совпадает");
+ Assertions.assertEquals(savedTaskSubTask.getStatus(), DONE, "Статус SubTask не совпадает");
}
@@ -68,7 +71,7 @@ void listTaskTest() {
}
@Test
- public void getSubTaskForEpic() {
+ public void getSubTaskForEpic() throws NotFoundExeption {
Epic epic = new Epic("Test addEpic", "Test addEpic descriprion");
SubTask subTask = new SubTask("Test addSubTask", "Test addSubTask description", Status.NEW, 1);
taskManager.addEpic(epic);
@@ -80,24 +83,28 @@ public void getSubTaskForEpic() {
}
@Test
- public void addSubTaskEpicNonExistentId() {
+ public void addSubTaskEpicNonExistentId() throws NotFoundExeption {
Epic epic = new Epic(1, "Test addNewEpic", "Test addNewEpic description");
SubTask subTask = new SubTask(2, "Test subTaskName", "Test SubTask description", Status.DONE, 2);
taskManager.addEpic(epic);
taskManager.addSubTask(subTask);
- Assertions.assertNull(taskManager.getSubTaskForId(2));
+ NotFoundExeption exception = assertThrows(
+ NotFoundExeption.class,
+ () -> taskManager.getSubTaskForId(2)
+ );
+ Assertions.assertEquals(exception.getMessage(), "Подзадачи с таким ID нет");
}
@Test
- public void addTaskPreIdFrom99To1() {
- Task task = new Task(99, "TestIdTask", "Test Id Task from 99 to 1", NEW);
+ public void addTaskPreIdFrom99To1() throws NotFoundExeption {
+ Task task = new Task(99, "Testid", "Test Id Task from 99 to 1", NEW);
taskManager.addTask(task);
Assertions.assertEquals(taskManager.getTaskForId(1), task, "id Task не совпадает в тесте PreId");
}
@Test
- public void newStatusEpic() {
+ public void newStatusEpic() throws NotFoundExeption {
Epic epic = new Epic(1, "Test addNewEpic", "Test addNewEpic description");
SubTask subTask = new SubTask(2, "Test subTaskName", "Test SubTask description", NEW, 1);
taskManager.addEpic(epic);
@@ -105,16 +112,16 @@ public void newStatusEpic() {
Epic newEpic = taskManager.getEpicForId(1);
SubTask newSubTask = taskManager.getSubTaskForId(2);
- Assertions.assertEquals(newEpic.getStatusTask(), NEW);
+ Assertions.assertEquals(newEpic.getStatus(), NEW);
- newSubTask.setStatusTask(DONE);
+ newSubTask.setStatus(DONE);
taskManager.addSubTask(newSubTask);
- Assertions.assertEquals(newEpic.getStatusTask(), DONE);
+ Assertions.assertEquals(newEpic.getStatus(), DONE);
}
@Test
- public void removeEpic() {
+ public void removeEpic() throws NotFoundExeption {
Epic epic = new Epic(1, "Test addNewEpic", "Test addNewEpic description");
SubTask subTask = new SubTask(2, "Test subTaskName", "Test SubTask description", NEW, 1);
SubTask subTask1 = new SubTask(3, "Test subTaskName", "Test SubTask description", NEW, 1);
@@ -125,14 +132,20 @@ public void removeEpic() {
Assertions.assertNotNull(taskManager.getSubTaskForId(2));
taskManager.removeEpicForId(1);
-
- Assertions.assertNull(taskManager.getEpicForId(1));
- Assertions.assertNull(taskManager.getSubTaskForId(2));
- Assertions.assertNull(taskManager.getSubTaskForId(3));
+ NotFoundExeption exeptionEpic = assertThrows(
+ NotFoundExeption.class, () ->
+ taskManager.getEpicForId(1)
+ );
+ NotFoundExeption exeptionSubtask = assertThrows(
+ NotFoundExeption.class, () ->
+ taskManager.getSubTaskForId(2)
+ );
+ Assertions.assertEquals(exeptionEpic.getMessage(), "Эпика с таким ID нет");
+ Assertions.assertEquals(exeptionSubtask.getMessage(), "Подзадачи с таким ID нет");
}
@Test
- public void statusEpicNew() {
+ public void statusEpicNew() throws NotFoundExeption {
Epic epic = new Epic(1, "nameEpic", "discriptionEpic");
SubTask subTask1 = new SubTask(2, "nameSubtask1", "discriptionSubtask1", NEW, 1);
SubTask subTask2 = new SubTask(2, "nameSubtask2", "discriptionSubtask2", NEW, 1);
@@ -142,11 +155,11 @@ public void statusEpicNew() {
taskManager.addSubTask(subTask2);
taskManager.addSubTask(subTask3);
- Assertions.assertEquals(taskManager.getEpicForId(1).getStatusTask(), NEW, "У эпика не задаётся Статус NEW");
+ Assertions.assertEquals(taskManager.getEpicForId(1).getStatus(), NEW, "У эпика не задаётся Статус NEW");
}
@Test
- public void statusEpicDone() {
+ public void statusEpicDone() throws NotFoundExeption {
Epic epic = new Epic(1, "nameEpic", "discriptionEpic");
SubTask subTask1 = new SubTask(2, "nameSubtask1", "discriptionSubtask1", DONE, 1);
SubTask subTask2 = new SubTask(2, "nameSubtask2", "discriptionSubtask2", DONE, 1);
@@ -156,11 +169,11 @@ public void statusEpicDone() {
taskManager.addSubTask(subTask2);
taskManager.addSubTask(subTask3);
- Assertions.assertEquals(taskManager.getEpicForId(1).getStatusTask(), DONE, "У эпика не задаётся Статус DONE");
+ Assertions.assertEquals(taskManager.getEpicForId(1).getStatus(), DONE, "У эпика не задаётся Статус DONE");
}
@Test
- public void statusEpicNewAndDone() {
+ public void statusEpicNewAndDone() throws NotFoundExeption {
Epic epic = new Epic(1, "nameEpic", "discriptionEpic");
SubTask subTask1 = new SubTask(2, "nameSubtask1", "discriptionSubtask1", DONE, 1);
SubTask subTask2 = new SubTask(2, "nameSubtask2", "discriptionSubtask2", NEW, 1);
@@ -170,11 +183,11 @@ public void statusEpicNewAndDone() {
taskManager.addSubTask(subTask2);
taskManager.addSubTask(subTask3);
- Assertions.assertEquals(taskManager.getEpicForId(1).getStatusTask(), IN_PROGRESS, "У эпика не задаётся Статус");
+ Assertions.assertEquals(taskManager.getEpicForId(1).getStatus(), IN_PROGRESS, "У эпика не задаётся Статус");
}
@Test
- public void statusEpicInProgress() {
+ public void statusEpicInProgress() throws NotFoundExeption {
Epic epic = new Epic(1, "nameEpic", "discriptionEpic");
SubTask subTask1 = new SubTask(2, "nameSubtask1", "discriptionSubtask1", IN_PROGRESS, 1);
SubTask subTask2 = new SubTask(2, "nameSubtask2", "discriptionSubtask2", IN_PROGRESS, 1);
@@ -184,7 +197,7 @@ public void statusEpicInProgress() {
taskManager.addSubTask(subTask2);
taskManager.addSubTask(subTask3);
- Assertions.assertEquals(taskManager.getEpicForId(1).getStatusTask(), IN_PROGRESS, "У эпика не задаётся Статус");
+ Assertions.assertEquals(taskManager.getEpicForId(1).getStatus(), IN_PROGRESS, "У эпика не задаётся Статус");
}
@Test
@@ -196,7 +209,11 @@ public void intersectionTimeTask() {
Task task2 = new Task(1, TypeTask.TASK, "nameTask2", "discriptionTask2",
NEW, startTime2, 100, null);
taskManager.addTask(task1);
- taskManager.addTask(task2);
+ TimeConflictExeption exeption = assertThrows(
+ TimeConflictExeption.class, () ->
+ taskManager.addTask(task2)
+ );
+
List newListTask = new ArrayList<>();
newListTask.add(task1);
Assertions.assertEquals(1, taskManager.getPrioritizedTasks().size(), "Неверное количесто задач");
@@ -224,27 +241,38 @@ public void validTestTimeTaskAndSort() {
}
@Test
- public void endNewTaskIsTimeIntervalOfOldTask() {
+ public void endNewTaskIsTimeIntervalOfOldTask() throws NotFoundExeption {
LocalDateTime startTime1 = LocalDateTime.of(2025, 05, 15, 20, 00);
LocalDateTime startTime2 = LocalDateTime.of(2025, 05, 15, 19, 00);
Task task1 = new Task(1, TypeTask.TASK, "nameTask1", "discriptionTask1", NEW, startTime1, 100, null);
Task task2 = new Task(1, TypeTask.TASK, "nameTask2", "discriptionTask2", NEW, startTime2, 90, null);
+
taskManager.addTask(task1);
- taskManager.addTask(task2);
- Assertions.assertNull(taskManager.getTaskForId(2), "Добавилась задача, которая не должна добавиться");
+ TimeConflictExeption exeption = assertThrows(
+ TimeConflictExeption.class, () ->
+ taskManager.addTask(task2)
+ );
+ NotFoundExeption exeption1 = assertThrows(
+ NotFoundExeption.class, () ->
+ taskManager.getTaskForId(2)
+ );
+ Assertions.assertEquals(exeption1.getMessage(), "Задачи с ID (2) нет!");
Assertions.assertEquals(task1, taskManager.getTaskForId(1), "Задача перезаписана! Неверно!");
Assertions.assertEquals(1, taskManager.getPrioritizedTasks().size(), "Неверное количество задач когда " +
"окончание новой находиться на отрезке старой");
}
@Test
- public void startNewTaskInTimeIntervalOfOldTask() {
+ public void startNewTaskInTimeIntervalOfOldTask() throws NotFoundExeption {
LocalDateTime startTime1 = LocalDateTime.of(2025, 10, 15, 20, 00);
LocalDateTime startTime2 = LocalDateTime.of(2025, 10, 15, 21, 00);
Task task1 = new Task(1, TypeTask.TASK, "nameTask1", "discriptionTask1", NEW, startTime1, 100, null);
Task task2 = new Task(1, TypeTask.TASK, "nameTask2", "discriptionTask2", NEW, startTime2, 100, null);
taskManager.addTask(task1);
- taskManager.addTask(task2);
+ TimeConflictExeption exeption = assertThrows(
+ TimeConflictExeption.class, () ->
+ taskManager.addTask(task2)
+ );
Assertions.assertEquals(task1, taskManager.getTaskForId(1), "Задача перезаписано не верно!");
Assertions.assertEquals(1, taskManager.getAllTask().size());
Assertions.assertEquals(1, taskManager.getPrioritizedTasks().size(), "Неверное количество задач!" +
@@ -252,26 +280,32 @@ public void startNewTaskInTimeIntervalOfOldTask() {
}
@Test
- public void newTaskIntirelyInTimeOldTask() {
+ public void newTaskIntirelyInTimeOldTask() throws NotFoundExeption {
LocalDateTime startTime1 = LocalDateTime.of(2025, 10, 15, 20, 00);
LocalDateTime startTime2 = LocalDateTime.of(2025, 10, 16, 10, 00);
Task task1 = new Task(1, TypeTask.TASK, "nameTask1", "discriptionTask1", NEW, startTime1, 2000, null);
Task task2 = new Task(1, TypeTask.TASK, "nameTask2", "discriptionTask2", NEW, startTime2, 100, null);
taskManager.addTask(task1);
- taskManager.addTask(task2);
+ TimeConflictExeption exeption = assertThrows(
+ TimeConflictExeption.class, () ->
+ taskManager.addTask(task2)
+ );
Assertions.assertEquals(task1, taskManager.getTaskForId(1), "Задача перезаписано не верно!");
Assertions.assertEquals(1, taskManager.getAllTask().size(), "Неверное количество задач. Когда новая" +
"полностью находиться во времени старой");
}
@Test
- public void oldTaskIntirelyInTimeNewTask() {
+ public void oldTaskIntirelyInTimeNewTask() throws NotFoundExeption {
LocalDateTime startTime1 = LocalDateTime.of(2025, 10, 15, 10, 00);
LocalDateTime startTime2 = LocalDateTime.of(2025, 10, 14, 10, 00);
Task task1 = new Task(1, TypeTask.TASK, "nameTask1", "discriptionTask1", NEW, startTime1, 100, null);
Task task2 = new Task(1, TypeTask.TASK, "nameTask2", "discriptionTask2", NEW, startTime2, 2000, null);
taskManager.addTask(task1);
- taskManager.addTask(task2);
+ TimeConflictExeption exeption = assertThrows(
+ TimeConflictExeption.class, () ->
+ taskManager.addTask(task2)
+ );
Assertions.assertEquals(task1, taskManager.getTaskForId(1), "Задача перезаписано не верно!");
Assertions.assertEquals(1, taskManager.getAllTask().size(), "Неверное количество задач. Когда старая " +
"полностью находиться во времени новой");
diff --git a/test/manager/TaskManagerTest.java b/test/manager/TaskManagerTest.java
index 7ddaeeb..f4f2ecf 100644
--- a/test/manager/TaskManagerTest.java
+++ b/test/manager/TaskManagerTest.java
@@ -1,5 +1,6 @@
package manager;
+import exeptions.NotFoundExeption;
import model.Epic;
import model.Status;
import model.SubTask;
@@ -8,10 +9,12 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import java.io.IOException;
import java.util.ArrayList;
import static model.Status.DONE;
import static model.Status.NEW;
+import static org.junit.Assert.assertThrows;
class TaskManagerTest {
@@ -23,7 +26,7 @@ public void beforeEach() {
}
@Test
- public void addNewTask() {
+ public void addNewTask() throws NotFoundExeption {
Epic epic = new Epic(
1,
"Test addNewEpic",
@@ -52,25 +55,25 @@ public void addNewTask() {
Assertions.assertNotNull(savedTask, "Задача не найдена.");
Assertions.assertNotNull(savedTaskSubTask, "Подзадача не найдена.");
- Assertions.assertEquals(savedEpic.getTitleTask(), "Test addNewEpic", "Название Epic не совпадает.");
- Assertions.assertEquals(savedTask.getTitleTask(), "Test addNewTask", "Название задачи не совпадает.");
- Assertions.assertEquals(savedTaskSubTask.getTitleTask(), "Test subTaskName",
+ Assertions.assertEquals(savedEpic.getName(), "Test addNewEpic", "Название Epic не совпадает.");
+ Assertions.assertEquals(savedTask.getName(), "Test addNewTask", "Название задачи не совпадает.");
+ Assertions.assertEquals(savedTaskSubTask.getName(), "Test subTaskName",
"Название подзадачи не совпадает.");
- Assertions.assertEquals(savedEpic.getDescriptionTask(), "Test addNewEpic description",
+ Assertions.assertEquals(savedEpic.getDescription(), "Test addNewEpic description",
"Описание Epic не совпадает.");
- Assertions.assertEquals(savedTask.getDescriptionTask(), "Test addNewTask description",
+ Assertions.assertEquals(savedTask.getDescription(), "Test addNewTask description",
"Описание задачи не совпадает.");
- Assertions.assertEquals(savedTaskSubTask.getDescriptionTask(), "Test SubTask description",
+ Assertions.assertEquals(savedTaskSubTask.getDescription(), "Test SubTask description",
"Описание подзадачи не совпадает.");
- Assertions.assertEquals(savedEpic.getIdTask(), 1, "id Epic не совпадает");
- Assertions.assertEquals(savedTask.getIdTask(), 2, "id Task не совпадает");
- Assertions.assertEquals(savedTaskSubTask.getIdTask(), 3, "id SubTask не совпадает");
+ Assertions.assertEquals(savedEpic.getId(), 1, "id Epic не совпадает");
+ Assertions.assertEquals(savedTask.getId(), 2, "id Task не совпадает");
+ Assertions.assertEquals(savedTaskSubTask.getId(), 3, "id SubTask не совпадает");
- Assertions.assertEquals(savedEpic.getStatusTask(), DONE, "Статус Epic не совпадает");
- Assertions.assertEquals(savedTask.getStatusTask(), NEW, "Статус Task не совпадает");
- Assertions.assertEquals(savedTaskSubTask.getStatusTask(), DONE, "Статус SubTask не совпадает");
+ Assertions.assertEquals(savedEpic.getStatus(), DONE, "Статус Epic не совпадает");
+ Assertions.assertEquals(savedTask.getStatus(), NEW, "Статус Task не совпадает");
+ Assertions.assertEquals(savedTaskSubTask.getStatus(), DONE, "Статус SubTask не совпадает");
}
@@ -105,7 +108,7 @@ void getAllEpics() {
}
@Test
- void getAllSubTaskandGetAllSubtaskForEpicId() {
+ void getAllSubTaskandGetAllSubtaskForEpicId() throws NotFoundExeption {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
SubTask subTask1 = new SubTask(1, "nameSubtask1", "discriptSubtaks1", NEW, 1);
SubTask subTask2 = new SubTask(1, "nameSubTask2", "discriptSubtask2", NEW, 1);
@@ -152,7 +155,7 @@ void removeAllEpics() {
}
@Test
- void removeAllSubTasks() {
+ void removeAllSubTasks() throws NotFoundExeption {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
SubTask subTask1 = new SubTask(1, "nameSubtask1", "discriptSubtaks1", NEW, 1);
SubTask subTask2 = new SubTask(1, "nameSubTask2", "discriptSubtask2", NEW, 1);
@@ -168,7 +171,7 @@ void removeAllSubTasks() {
}
@Test
- void getTaskForId() {
+ void getTaskForId() throws NotFoundExeption {
Task task1 = new Task(1, "nameTask1", "discriptTask1", NEW);
Task task2 = new Task(1, "nameTask2", "discriptTask2", NEW);
Task task3 = new Task(1, "nameTask3", "discriptTask3", NEW);
@@ -181,7 +184,7 @@ void getTaskForId() {
}
@Test
- void getEpicForId() {
+ void getEpicForId() throws NotFoundExeption {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
Epic epic2 = new Epic(1, "nameEpic2", "discriptEpic2");
Epic epic3 = new Epic(1, "nameEpic3", "discriptEpic3");
@@ -194,7 +197,7 @@ void getEpicForId() {
}
@Test
- void getSubTaskForId() {
+ void getSubTaskForId() throws NotFoundExeption {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
SubTask subTask1 = new SubTask(1, "nameSubtask1", "discriptSubtaks1", NEW, 1);
SubTask subTask2 = new SubTask(1, "nameSubTask2", "discriptSubtask2", NEW, 1);
@@ -209,7 +212,7 @@ void getSubTaskForId() {
}
@Test
- void updateTask() {
+ void updateTask() throws NotFoundExeption {
Task task1 = new Task(1, "nameTask1", "discriptTask1", NEW);
Task updateTask = new Task(1, "newNameTask1", "NewDiscriptTask1", NEW);
taskManager.addTask(task1);
@@ -218,7 +221,7 @@ void updateTask() {
}
@Test
- void updateEpic() {
+ void updateEpic() throws NotFoundExeption {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
Epic updateEpic = new Epic(1, "NewNameEpic1", "NewDiscriptEpic1");
taskManager.addEpic(epic1);
@@ -228,7 +231,7 @@ void updateEpic() {
}
@Test
- void updateSubTaskAndUpdateStatusEpic() {
+ void updateSubTaskAndUpdateStatusEpic() throws NotFoundExeption {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
SubTask subTask1 = new SubTask(2, "nameSubtask1", "discriptSubtaks1", NEW, 1);
SubTask updateSubTask = new SubTask(2, "NewNameSubtask1", "NewDiscriptSubtaks1", DONE, 1);
@@ -236,12 +239,12 @@ void updateSubTaskAndUpdateStatusEpic() {
taskManager.addSubTask(subTask1);
taskManager.updateSubTask(updateSubTask);
Assertions.assertEquals(updateSubTask, taskManager.getSubTaskForId(2), "Подзадача не обновилась");
- Assertions.assertEquals(epic1.getStatusTask(), DONE, "Статус Эпика не обновился при обновлении Подзадачи");
+ Assertions.assertEquals(epic1.getStatus(), DONE, "Статус Эпика не обновился при обновлении Подзадачи");
}
@Test
- void removeTaskForId() {
+ void removeTaskForId() throws NotFoundExeption {
Task task1 = new Task(1, "nameTask1", "discriptTask1", NEW);
Task task2 = new Task(1, "nameTask2", "discriptTask2", NEW);
Task task3 = new Task(1, "nameTask3", "discriptTask3", NEW);
@@ -252,12 +255,16 @@ void removeTaskForId() {
ArrayList taskList = new ArrayList<>();
taskList.add(task1);
taskList.add(task3);
- Assertions.assertNull(taskManager.getTaskForId(2), "Задача не удалилась");
+ NotFoundExeption exception = assertThrows(
+ NotFoundExeption.class,
+ () -> taskManager.getTaskForId(2)
+ );
+ Assertions.assertEquals(exception.getMessage(), "Задачи с ID (2) нет!");
Assertions.assertEquals(taskList, taskManager.getAllTask(), "Списки не совпадают после удаления 1 задачи");
}
@Test
- void removeEpicForId() {
+ void removeEpicForId() throws NotFoundExeption {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
Epic epic2 = new Epic(1, "nameEpic2", "discriptEpic2");
Epic epic3 = new Epic(1, "nameEpic3", "discriptEpic3");
@@ -268,12 +275,16 @@ void removeEpicForId() {
ArrayList epicList = new ArrayList<>();
epicList.add(epic1);
epicList.add(epic2);
- Assertions.assertNull(taskManager.getEpicForId(3), "Эпик не удалился");
+ NotFoundExeption exception = assertThrows(
+ NotFoundExeption.class,
+ () -> taskManager.getEpicForId(3)
+ );
+ Assertions.assertEquals(exception.getMessage(), "Эпика с таким ID нет");
Assertions.assertEquals(epicList, taskManager.getAllEpics(), "Список Эпиков не совпадает после удаления 1 Эпика");
}
@Test
- void removeSubTaskForId() {
+ void removeSubTaskForId() throws NotFoundExeption, IOException {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
SubTask subTask1 = new SubTask(2, "nameSubtask1", "discriptSubtaks1", NEW, 1);
SubTask subTask2 = new SubTask(3, "nameSubTask2", "discriptSubtask2", NEW, 1);
@@ -286,13 +297,17 @@ void removeSubTaskForId() {
ArrayList subtaskList = new ArrayList<>();
subtaskList.add(subTask2);
subtaskList.add(subTask3);
- Assertions.assertNull(taskManager.getSubTaskForId(2), "Подзадача осталась после удаления");
+ NotFoundExeption exception = assertThrows(
+ NotFoundExeption.class,
+ () -> taskManager.getSubTaskForId(2)
+ );
+ Assertions.assertEquals(exception.getMessage(), "Подзадачи с таким ID нет");
Assertions.assertEquals(subtaskList, taskManager.getAllSubTasksForEpic(1), "Подзадача " +
"не удалилась и осталась в эпике");
}
@Test
- void getAllSubTasksForEpic() {
+ void getAllSubTasksForEpic() throws NotFoundExeption {
Epic epic1 = new Epic(1, "nameEpic1", "discriptEpic1");
SubTask subTask1 = new SubTask(2, "nameSubtask1", "discriptSubtaks1", NEW, 1);
SubTask subTask2 = new SubTask(3, "nameSubTask2", "discriptSubtask2", NEW, 1);
diff --git a/test/model/TaskTest.java b/test/model/TaskTest.java
index aeff335..d3a2255 100644
--- a/test/model/TaskTest.java
+++ b/test/model/TaskTest.java
@@ -30,5 +30,4 @@ void equalsTask() {
Assertions.assertEquals(task, task1, "Задачи не совпадают.");
}
-
}
\ No newline at end of file
diff --git a/test/test.iml b/test/test.iml
new file mode 100644
index 0000000..dbc8f60
--- /dev/null
+++ b/test/test.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file