- Перенес метод formatWithTable из ListCommand в новый класс Formatter
- Обновил ListCommand и SearchCommand, чтобы они использовали Formatter.asTable
- Изменение улучшает переиспользование кода и разделение ответственности
- Обновил движок CLI и команды для использования EntityService вместо TaskService
- Заменил TaskService на EntityService в реализациях команд
- Модифицировал логику команд для работы с любым типом сущности, расширяющим Identifiable
- Обновил сигнатуры типов и вызовы методов для соответствия новому интерфейсу
- Обновление ListCommand для использования метода getAll() вместо list()
- Рефакторинг EntityService для предоставления универсальных CRUD-операций
- Изменение TaskService для расширения EntityService и использования его методов
- Реализован универсальный класс EntityService для стандартных операций CRUD
- Определены методы для сохранения, получения и удаления сущностей
- Предоставлена основа для реализации специализированных сервисов
- Переименован InMemoryTaskRepository в InMemoryRepository
- Обновлён TaskService для использования InMemoryRepository вместо TaskRepository
- Удалён интерфейс TaskRepository
- Обновлены импорты и ссылки на классы
- Добавлен интерфейс Repository для базовых CRUD-операций
- Обновлён TaskRepository для наследования от Repository<SimpleTask>
- Рефакторинг InMemoryTaskRepository для работы с SimpleTask
- Настройка ListCommand и TaskService для прямой работы с SimpleTask
- Удалено лишнее приведение типов и улучшена типобезопасность
- Создан интерфейс Identifiable с методом getId()
- Реализован Identifiable в классе Task
- Переопределён метод getId() в Task
- Сохранён существующий метод id() для обратной совместимости
-Обновление версии проекта до 2.2.0-SNAPSHOT
-Рефакторинг класса ListCommand для объединения строк через класс StringBuilder
-Повышение читаемости и производительности метода formatWithTable