From a35758bc6f61f70c9a48f61e2a8a00be5867d807 Mon Sep 17 00:00:00 2001 From: KamaSK Date: Thu, 29 May 2025 21:42:05 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D0=BA=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D0=B0=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B5=D1=80=D1=88=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=20=D0=B2=20CliEngine.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/ru/kamask/pet/todo/TodoApp.java | 3 -- .../ru/kamask/pet/todo/cli/CliEngine.java | 1 + .../kamask/pet/todo/cli/CompleteCommand.java | 34 +++++++++++++++++++ 3 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 todo/src/main/java/ru/kamask/pet/todo/cli/CompleteCommand.java diff --git a/todo/src/main/java/ru/kamask/pet/todo/TodoApp.java b/todo/src/main/java/ru/kamask/pet/todo/TodoApp.java index da58062..232ccbb 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/TodoApp.java +++ b/todo/src/main/java/ru/kamask/pet/todo/TodoApp.java @@ -11,9 +11,6 @@ public class TodoApp { var service = new TaskService(new InMemoryTaskRepository()); var cli = new CliEngine(service); - // service.create("test has-id"); - // System.out.println(service.has(2)); - cli.start(); } 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 7fa2292..f41abd5 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 @@ -45,6 +45,7 @@ public class CliEngine { void initializeCommands() { registerCommand(new CreateCommand()); registerCommand(new ListCommand()); + registerCommand(new CompleteCommand()); } void handleHelp() { 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 new file mode 100644 index 0000000..a0ece27 --- /dev/null +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/CompleteCommand.java @@ -0,0 +1,34 @@ +package ru.kamask.pet.todo.cli; + +import java.util.Optional; + +import ru.kamask.pet.todo.service.TaskService; + +public class CompleteCommand implements Command { + @Override + public String name() { + return "complete"; + } + + @Override + public String usage() { + return String.format(Command.templateUsage, name() + " ", "Отметить задачу как \"выполнена\"."); + } + + @Override + public Optional handle(String[] args, TaskService service) { + if (args.length != 1) + return Optional.of(Command.errorMessage); + + try { + int id = Integer.parseInt(args[0]); + + return Optional.of(service.complete(id) + ? "Задача ID-%d выполнена.".formatted(id) + : "Задача ID-%d не найдена.".formatted(id)); + + } catch (NumberFormatException e) { + return Optional.of("ID - должен быть числом."); + } + } +}