diff --git a/todo/src/main/java/ru/kamask/pet/todo/cli/CliEngine.java b/todo/src/main/java/ru/kamask/pet/todo/cli/CliEngine.java index f345398..f9fdd0f 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/cli/CliEngine.java +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/CliEngine.java @@ -7,14 +7,15 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Optional; -import ru.kamask.pet.todo.service.TaskService; +import ru.kamask.pet.todo.model.Identifiable; +import ru.kamask.pet.todo.service.EntityService; public class CliEngine { private HashMap registry = new HashMap<>(); - private TaskService service; + private EntityService service; private BufferedReader reader; - public CliEngine(TaskService service) { + public CliEngine(EntityService service) { this.service = service; reader = new BufferedReader(new InputStreamReader(System.in)); initializeCommands(); diff --git a/todo/src/main/java/ru/kamask/pet/todo/cli/Command.java b/todo/src/main/java/ru/kamask/pet/todo/cli/Command.java index 52dde08..4587b73 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/cli/Command.java +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/Command.java @@ -2,13 +2,14 @@ package ru.kamask.pet.todo.cli; import java.util.Optional; -import ru.kamask.pet.todo.service.TaskService; +import ru.kamask.pet.todo.model.Identifiable; +import ru.kamask.pet.todo.service.EntityService; public interface Command { String templateUsage = " %-30s // %s"; String errorMessage = "Не корректно введена команда. Введите help для спарвки."; - Optional handle(String[] args, TaskService service); + Optional handle(String[] args, EntityService service); String name(); diff --git a/todo/src/main/java/ru/kamask/pet/todo/cli/CompleteCommand.java b/todo/src/main/java/ru/kamask/pet/todo/cli/CompleteCommand.java index a0ece27..8678876 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/cli/CompleteCommand.java +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/CompleteCommand.java @@ -2,6 +2,8 @@ package ru.kamask.pet.todo.cli; import java.util.Optional; +import ru.kamask.pet.todo.model.Identifiable; +import ru.kamask.pet.todo.service.EntityService; import ru.kamask.pet.todo.service.TaskService; public class CompleteCommand implements Command { @@ -16,14 +18,16 @@ public class CompleteCommand implements Command { } @Override - public Optional handle(String[] args, TaskService service) { + public Optional handle(String[] args, EntityService service) { if (args.length != 1) return Optional.of(Command.errorMessage); + TaskService taskService = (TaskService) service; + try { int id = Integer.parseInt(args[0]); - return Optional.of(service.complete(id) + return Optional.of(taskService.complete(id) ? "Задача ID-%d выполнена.".formatted(id) : "Задача ID-%d не найдена.".formatted(id)); diff --git a/todo/src/main/java/ru/kamask/pet/todo/cli/CreateCommand.java b/todo/src/main/java/ru/kamask/pet/todo/cli/CreateCommand.java index 4549625..6505adb 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/cli/CreateCommand.java +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/CreateCommand.java @@ -2,21 +2,24 @@ package ru.kamask.pet.todo.cli; import java.util.Optional; +import ru.kamask.pet.todo.model.Identifiable; +import ru.kamask.pet.todo.service.EntityService; import ru.kamask.pet.todo.service.TaskService; -public class CreateCommand implements Command { +public class CreateCommand implements Command{ @Override public String name() { return "create"; } @Override - public Optional handle(String[] args, TaskService service) { + public Optional handle(String[] args, EntityService service) { if (args.length > 0) { var title = String.join(" ", args); if (title.length() > 30) return Optional.of("Ошибка: максимальная длинна названия задачи 30 символов."); - service.create(title); + TaskService taskService = (TaskService) service; + taskService.create(title); return Optional.of(String.format("Задача \"%s\" успешно добавлена!", title)); } return Optional.of(Command.errorMessage); diff --git a/todo/src/main/java/ru/kamask/pet/todo/cli/DeleteCommand.java b/todo/src/main/java/ru/kamask/pet/todo/cli/DeleteCommand.java index b037776..50968cf 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/cli/DeleteCommand.java +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/DeleteCommand.java @@ -2,9 +2,10 @@ package ru.kamask.pet.todo.cli; import java.util.Optional; -import ru.kamask.pet.todo.service.TaskService; +import ru.kamask.pet.todo.model.Identifiable; +import ru.kamask.pet.todo.service.EntityService; -public class DeleteCommand implements Command { +public class DeleteCommand implements Command{ @Override public String name() { return "delete"; @@ -16,7 +17,7 @@ public class DeleteCommand implements Command { } @Override - public Optional handle(String[] args, TaskService service) { + public Optional handle(String[] args, EntityService service) { if (args.length != 1) return Optional.of(Command.errorMessage); diff --git a/todo/src/main/java/ru/kamask/pet/todo/cli/ListCommand.java b/todo/src/main/java/ru/kamask/pet/todo/cli/ListCommand.java index 3a5de09..2a0b79d 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/cli/ListCommand.java +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/ListCommand.java @@ -3,7 +3,9 @@ package ru.kamask.pet.todo.cli; import java.util.List; import java.util.Optional; +import ru.kamask.pet.todo.model.Identifiable; import ru.kamask.pet.todo.model.SimpleTask; +import ru.kamask.pet.todo.service.EntityService; import ru.kamask.pet.todo.service.TaskService; public class ListCommand implements Command { @@ -13,11 +15,12 @@ public class ListCommand implements Command { } @Override - public Optional handle(String[] args, TaskService service) { + public Optional handle(String[] args, EntityService service) { if (args.length > 0) return Optional.of(Command.errorMessage); - - var res = formatWithTable(service.getAll(), "Список задач пуст."); + TaskService taskService = (TaskService) service; + List allTasks = taskService.getAll(); + var res = formatWithTable(allTasks, "Список задач пуст."); return Optional.of(res); } diff --git a/todo/src/main/java/ru/kamask/pet/todo/cli/SearchCommand.java b/todo/src/main/java/ru/kamask/pet/todo/cli/SearchCommand.java index ae4ede6..42cf7bf 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/cli/SearchCommand.java +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/SearchCommand.java @@ -2,6 +2,8 @@ package ru.kamask.pet.todo.cli; import java.util.Optional; +import ru.kamask.pet.todo.model.Identifiable; +import ru.kamask.pet.todo.service.EntityService; import ru.kamask.pet.todo.service.TaskService; public class SearchCommand implements Command { @@ -16,13 +18,15 @@ public class SearchCommand implements Command { } @Override - public Optional handle(String[] args, TaskService service) { + public Optional handle(String[] args, EntityService service) { if (args.length != 1) return Optional.of(Command.errorMessage); if (args[0].length() < 3) return Optional.of("Длина запроса должна быть не менее 3 символов."); - var matchTask = service.search(args[0]); + TaskService taskService = (TaskService) service; + + var matchTask = taskService.search(args[0]); var res = new ListCommand().formatWithTable(matchTask, "Не найдено задач, соответствующих запросу."); return Optional.of(res);