4 Commits
Author SHA1 Message Date
KamaSK 2c7deaa9ae Merge pull request 'добавление интерфейса Identifiable и его реализация в Task (closes #45)' (#54) from feature/add-identifiable into dev
Reviewed-on: #54
2025-06-06 18:15:53 +03:00
KamaSK 8399ab0d58 добавление интерфейса Identifiable и его реализация в Task (closes #45)
- Создан интерфейс Identifiable с методом getId()
- Реализован Identifiable в классе Task
- Переопределён метод getId() в Task
- Сохранён существующий метод id() для обратной совместимости
2025-06-06 18:13:21 +03:00
KamaSK f0b79f0db0 Merge pull request 'Рефакторинг класса ListCommand' (#44) from fix/cli/list-format-with-table into dev
Reviewed-on: #44
2025-06-04 16:46:41 +03:00
KamaSK 09cbf440ad Рефакторинг класса ListCommand
-Обновление версии проекта до 2.2.0-SNAPSHOT
-Рефакторинг класса ListCommand для объединения строк через класс StringBuilder
-Повышение читаемости и производительности метода formatWithTable
2025-06-04 16:45:37 +03:00
4 changed files with 20 additions and 11 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
<groupId>ru.kamask.pet</groupId> <groupId>ru.kamask.pet</groupId>
<artifactId>todo</artifactId> <artifactId>todo</artifactId>
<version>2.1</version> <version>2.2.0-SNAPSHOT</version>
<properties> <properties>
<maven.compiler.release>24</maven.compiler.release> <maven.compiler.release>24</maven.compiler.release>
@@ -30,18 +30,17 @@ public class ListCommand implements Command {
String formatWithTable(List<Task> tasks, String msgIfEmpty) { String formatWithTable(List<Task> tasks, String msgIfEmpty) {
String template = "%-2s | %-30s | %s\n"; String template = "%-2s | %-30s | %s\n";
String res = ""; var res = new StringBuilder(String.format(template, "ID", "Название задачи", "Статус"));
res += String.format(template, "ID", "Название задачи", "Статус"); res.append("-".repeat(50) + "\n");
res += "-".repeat(50) + "\n";
if (tasks.size() == 0) if (tasks.size() == 0)
return res + "\n" + msgIfEmpty; return res.append("\n" + msgIfEmpty).toString();
for (Task task : tasks) { for (Task task : tasks) {
SimpleTask.Data data = ((SimpleTask) task).data(); SimpleTask.Data data = ((SimpleTask) task).data();
res += String.format(template, data.id(), data.title(), data.done() ? "выполнено" : "не выполнено"); res.append(String.format(template, data.id(), data.title(), data.done() ? "выполнено" : "не выполнено"));
} }
return res; return res.toString();
} }
} }
@@ -0,0 +1,5 @@
package ru.kamask.pet.todo.model;
public interface Identifiable {
int getId();
}
@@ -1,6 +1,6 @@
package ru.kamask.pet.todo.model; package ru.kamask.pet.todo.model;
public abstract class Task { public abstract class Task implements Identifiable{
private static int nextId = 1; private static int nextId = 1;
protected int id; protected int id;
@@ -11,10 +11,15 @@ public abstract class Task {
this.title = title; this.title = title;
} }
public int id() { @Override
public int getId() {
return id; return id;
} }
public int id() {
return getId();
}
@Override @Override
public String toString() { public String toString() {
return String.format("Задача: id - %d, title: \"%s\"", id, title); return String.format("Задача: id - %d, title: \"%s\"", id, title);