From 75565a2e4cc00e6b36671c96ce2367d8f5ffff50 Mon Sep 17 00:00:00 2001 From: KamaSK Date: Wed, 28 May 2025 18:56:57 +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=B4=D0=BB=D1=8F=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=20=D0=B2=20CLI.=20=D0=98?= =?UTF-8?q?=D0=B7=D0=BC=D0=B5=D0=BD=D1=91=D0=BD=20=D0=BC=D0=BE=D0=B4=D0=B8?= =?UTF-8?q?=D1=84=D0=B8=D0=BA=D0=B0=D1=82=D0=BE=D1=80=20=D0=B4=D0=BE=D1=81?= =?UTF-8?q?=D1=82=D1=83=D0=BF=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D0=BA=D0=BB?= =?UTF-8?q?=D0=B0=D1=81=D1=81=D0=B0=20Data=20=D0=B2=20SimpleTask=20=D0=BD?= =?UTF-8?q?=D0=B0=20public.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ru/kamask/pet/todo/cli/CliEngine.java | 1 + .../ru/kamask/pet/todo/cli/ListCommand.java | 39 +++++++++++++++++++ .../ru/kamask/pet/todo/model/SimpleTask.java | 2 +- 3 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 todo/src/main/java/ru/kamask/pet/todo/cli/ListCommand.java 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 7b17ea3..7fa2292 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 @@ -44,6 +44,7 @@ public class CliEngine { void initializeCommands() { registerCommand(new CreateCommand()); + registerCommand(new ListCommand()); } void handleHelp() { 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 new file mode 100644 index 0000000..102837c --- /dev/null +++ b/todo/src/main/java/ru/kamask/pet/todo/cli/ListCommand.java @@ -0,0 +1,39 @@ +package ru.kamask.pet.todo.cli; + +import java.util.Optional; + +import ru.kamask.pet.todo.model.SimpleTask; +import ru.kamask.pet.todo.model.Task; +import ru.kamask.pet.todo.service.TaskService; + +public class ListCommand implements Command { + @Override + public String name() { + return "list"; + } + + @Override + public Optional handle(String[] args, TaskService service) { + if (args.length > 0) + return Optional.of(Command.errorMessage); + + String template = "%-2s | %-30s | %s\n"; + String res = ""; + res += String.format(template, "ID", "Название задачи", "Статус"); + res += "-".repeat(50) + "\n"; + + if (service.list().size() == 0) + return Optional.of(res + "\nСписок задач пуст."); + + for (Task task : service.list()) { + SimpleTask.Data data = ((SimpleTask) task).data(); + res += String.format(template, data.id(), data.title(), data.done() ? "выполнено" : "не выполнено"); + } + return Optional.of(res); + } + + @Override + public String usage() { + return String.format(templateUsage, name(), "Список всех задач."); + } +} diff --git a/todo/src/main/java/ru/kamask/pet/todo/model/SimpleTask.java b/todo/src/main/java/ru/kamask/pet/todo/model/SimpleTask.java index a7206a4..143f9f0 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/model/SimpleTask.java +++ b/todo/src/main/java/ru/kamask/pet/todo/model/SimpleTask.java @@ -30,6 +30,6 @@ public class SimpleTask extends Task implements DataBuilder { return new Data(id, title, done); } - record Data(int id, String title, boolean done) { + public record Data(int id, String title, boolean done) { } }