From a7eaa693bd02764c73cc85455ccafaf4ee4716f6 Mon Sep 17 00:00:00 2001 From: KamaSK Date: Sun, 8 Jun 2025 10:45:44 +0300 Subject: [PATCH] =?UTF-8?q?refactor(cli):=20=D0=92=D1=8B=D0=BD=D0=B5=D1=81?= =?UTF-8?q?=20=D0=BB=D0=BE=D0=B3=D0=B8=D0=BA=D1=83=20=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B0=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D1=82=D0=B0=D0=B1=D0=BB=D0=B8=D1=86=20=D0=B2=20utilit?= =?UTF-8?q?y-=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20(close=20#52)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Перенес метод formatWithTable из ListCommand в новый класс Formatter - Обновил ListCommand и SearchCommand, чтобы они использовали Formatter.asTable - Изменение улучшает переиспользование кода и разделение ответственности --- .../ru/kamask/pet/todo/cli/ListCommand.java | 26 +++--------------- .../ru/kamask/pet/todo/cli/SearchCommand.java | 4 +-- .../ru/kamask/pet/todo/util/Formatter.java | 27 +++++++++++++++++++ 3 files changed, 33 insertions(+), 24 deletions(-) create mode 100644 todo/src/main/java/ru/kamask/pet/todo/util/Formatter.java 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 2a0b79d..059892a 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 @@ -1,12 +1,11 @@ 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; +import ru.kamask.pet.todo.util.Formatter; public class ListCommand implements Command { @Override @@ -18,31 +17,14 @@ public class ListCommand implements Command { public Optional handle(String[] args, EntityService service) { if (args.length > 0) return Optional.of(Command.errorMessage); - TaskService taskService = (TaskService) service; - List allTasks = taskService.getAll(); - var res = formatWithTable(allTasks, "Список задач пуст."); - return Optional.of(res); + TaskService taskService = (TaskService) service; + + return Optional.of(Formatter.asTable(taskService.getAll())); } @Override public String usage() { return String.format(templateUsage, name(), "Список всех задач."); } - - String formatWithTable(List tasks, String msgIfEmpty) { - String template = "%-2s | %-30s | %s\n"; - var res = new StringBuilder(String.format(template, "ID", "Название задачи", "Статус")); - res.append("-".repeat(50) + "\n"); - - if (tasks.size() == 0) - return res.append("\n" + msgIfEmpty).toString(); - - for (SimpleTask task : tasks) { - SimpleTask.Data data = task.data(); - res.append(String.format(template, data.id(), data.title(), data.done() ? "выполнено" : "не выполнено")); - } - - return res.toString(); - } } 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 42cf7bf..a0880c1 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 @@ -5,6 +5,7 @@ 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; +import ru.kamask.pet.todo.util.Formatter; public class SearchCommand implements Command { @Override @@ -27,8 +28,7 @@ public class SearchCommand implements Command { TaskService taskService = (TaskService) service; var matchTask = taskService.search(args[0]); - var res = new ListCommand().formatWithTable(matchTask, "Не найдено задач, соответствующих запросу."); - return Optional.of(res); + return Optional.of(Formatter.asTable(matchTask, "Не найдено задач, соответствующих запросу.")); } } diff --git a/todo/src/main/java/ru/kamask/pet/todo/util/Formatter.java b/todo/src/main/java/ru/kamask/pet/todo/util/Formatter.java new file mode 100644 index 0000000..fd60064 --- /dev/null +++ b/todo/src/main/java/ru/kamask/pet/todo/util/Formatter.java @@ -0,0 +1,27 @@ +package ru.kamask.pet.todo.util; + +import java.util.List; + +import ru.kamask.pet.todo.model.SimpleTask; + +public class Formatter { + public static String asTable(List tasks){ + return asTable(tasks, "Список задач пуст."); + } + + public static String asTable(List tasks, String msgIfEmpty){ + String template = "%-2s | %-30s | %s\n"; + var res = new StringBuilder(String.format(template, "ID", "Название задачи", "Статус")); + res.append("-".repeat(50) + "\n"); + + if (tasks.size() == 0) + return res.append("\n" + msgIfEmpty).toString(); + + for (SimpleTask task : tasks) { + SimpleTask.Data data = task.data(); + res.append(String.format(template, data.id(), data.title(), data.done() ? "выполнено" : "не выполнено")); + } + + return res.toString(); + } +} -- 2.47.2