Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

java-kanban

Общее описание

Программа представляет бэкенд учебного трекера задач. Он предназначен для регистрации, обновления, удаления задач, для их описания, отслеживания состояния, а также для обеспечения интерфейса к задачам, и их хранения.

Модель данных представлена следующими типами задач:

  • обычные задачи (представлена классом SimpleTask);
  • эпики (представлены классом EpicTask);
  • подзадачи (представлены классом Subtask).

Каждая задача обладает следующими свойствами:

  1. Название, - кратко описывает суть задачи.
  2. Описание, в котором раскрываются детали.
  3. Уникальный идентификационный номер задачи, по которому ее можно найти в трекере.
  4. Статус, отображающий прогресс ее выполнения (содержатся в классе TaskStatus),
    • NEW - задача только создана, к ее выполнению еще не преступили;
    • IN_PROGRESS - над задачей ведется работа;
    • DONE - задача выполнена.

Свойства задач содержатся в классе Task, наследниками которого являются классы SimpleTask, EpicTask, Subtask. Эпики представляют большие задачи, которые делятся на подзадачи. Для каждой подзадачи известно, в рамках какого эпика она выполняется, и каждый эпик знает какие подзадачи в него входят. Эпик считается завершенным, когда завершены все подзадачи эпика.

Менеджеры

Управляют задачами объекты-менеджеры, которые реализуют следующие функции:

  1. Обеспечивают хранение задач всех типов.
  2. Содержат методы для каждого типа задач (задача/эпик/подзадача), позволяющие:
    • получать список всех соответствующих задач;
    • удалять все соответствующие задачи;
    • получать соответствующую задачу по идентификатору;
    • создавать задачу-объект, переданный в качестве параметра;
    • обновлять задачу-объект, переданный в качестве параметра;
    • удалять задачу по идентификатору.
  3. Предоставляют список всех подзадач определенного эпика.
  4. Управляют статусами задачи:
    • для обычных задач и подзадач используются статусы, полученные вместе с информацией о самой задаче;
    • для эпиков выполняется расчет статуса с учетом следующего:
      • если у эпика нет подзадач или все они имеют статус NEW, статус эпика должен быть NEW;
      • если все подзадачи имеют статус DONE, то эпик считается завершенным со статусом DONE;
      • во всех остальных случаях статус должен быть IN_PROGRESS;
      • пользователь не имеет возможности поменять статус эпика самостоятельно;
      • когда меняется статус любой позадачи в эпике, проверяется необходимость изменения статуса самого эпика.

Базовым менеджером является класс InMemoryTaskManager, который реализует интерфейс TaskManager. Он хранит информацию в оперативной памяти и выполняет обработку задач с использованием хэшированных списков.

Для обеспечения сохранности информации между завершением и запуском программы может использоваться менеджер задач, реализованный в классе FileBackedTaskManager, который является наследником класса InMemoryTaskManager. Методы класса FileBackedTaskManager вызывают соответствующие методы родительского класса и дополнительно выполняют сохранение информации в файле, а также обеспечивают загрузку информации из файла. Для обеспечения возможности сохранности задач в сети может применяться версия менеджера задач HttpTaskManager, которая обеспечивает передачу и загрузку информации по сети, взаимодействуя с KV-сервером.

История просмотров задач

История просмотров задач — это упорядоченный набор элементов, для хранения которых используется двусвязанный список (класс CustomLinkedList) в менеджере истории просмотров задач (класс InMemoryHistoryManager). Реализация списка CustomLinkedList() позволяет вставлять и удалять элементы списка с константным временем исполнения (использованием HashMap), а также сохранить с использованием двусвязного списка порядок доступа к задачам в менеджере задач.

Список истории просмотров задач обновляется в методах getSimpleTask(), getSubtask() и getEpic() менеджера задач — просмотренные задачи добавляются в конец списка. Если какая-либо задача просматривалась несколько раз, в истории должен отобразиться только последний просмотр. Предыдущий просмотр удаляется сразу же после появления нового.

API приложения

Доступ к методам менеджера задач осуществляется через HTTP-запросы. Эндпойнты реализованного API соответствуют вызовам базовых методов интерфейса TaskManager. Класс HttpTaskServer слушает порт 8080 и принимает запросы. В него добавлена с использованием утилитного класса Managers реализация HttpTaskManager.

Все запросы по пути /tasks/<ресурсы> приходят в интерфейс TaskManager. Путь для обычных задач — /tasks/task, для подзадач — /tasks/subtask, для эпиков — /tasks/epic. Получить все задачи сразу можно по пути /tasks/, а историю просмотренных задач по пути /tasks/history. Для получения данных должны направляться GET-запросы, для создания и изменения — POST-запросы, для удаления — DELETE-запросы. Задачи передаются в теле запроса в формате JSON. Идентификатор (id) задачи следует передавать параметром запроса (через вопросительный знак).

Тестирование

Для тестирования работоспособности приложения использована библиотека JUnit5.

About

Repository for homework project

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages