Skip to content

IvanMartynovLETI/java-kanban

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Это репозиторий проекта "Трекер задач"

Проект предназначен для отслеживания состояния задач типов Task, Subtask и Epic и реализует функционал:

  • Хранения задач
  • Получения списка всех задач
  • Удаления всех задач
  • Получения задачи по ее идентификатору
  • Создания задач
  • Обновления статуса задач
  • Удаления задач по идентификатору
  • Получения списка подзадач типа Subtask для задач типа Epic
  • Отображения истории просмотренных задач (повторные просмотры отсутствуют)
  • Сохранения (восстановление) истории в файл (из файла)

Ключевыми особенностями приложения являются:

  • Хранилище задач и истории на отдельном сервере KVServer
  • Задачи не пересекаются во времени, кастомное решение гарантирует поиск пересечений задач всех типов за О(1)
  • Отсутствуют повторы в истории просмотров, кастомная структура на основе LinkedList гарантирует удаление повторных просмотров задач всех типов за О(1)

Для реализации изложенных выше возможностей были созданы:

Эндпойнты пути /tasks/task/:
  • GET /tasks/task/ - получение всех задач.
  • GET /tasks/task/?id={id} - получение задачи по ее id.
  • POST /tasks/task/ - создание задачи.
  • DELETE /tasks/task/?id={id} - удаление задачи по ее id.
  • DELETE /tasks/task/ - удаление всех задач.
Эндпойнты пути /tasks/subtask/:
  • GET /tasks/subtask/ - получение всех подзадач.
  • GET /tasks/subtask/?id={id} - получение подзадачи по ее id.
  • POST /tasks/subtask/ - создание подзадачи.
  • DELETE /tasks/subtask/?id={id} - удаление подзадачи по ее id.
  • DELETE /tasks/subtask/ - удаление всех подзадач.
Эндпойнты пути /tasks/epic/:
  • GET /tasks/epic/ - получение всех эпиков.
  • GET /tasks/epic/?id={id} - получение эпика по его id.
  • POST /tasks/epic/ - создание эпика.
  • DELETE /tasks/epic/?id={id} - удаление эпика по его id.
  • DELETE /tasks/epic/ - удаление всех эпиков.
Дополнительные эндпойнты:
  • GET /tasks/subtask/epic/?id={id} - получение всех подзадач эпика с заданным id.
  • GET /tasks/history - получение истории просмотра задач всех типов.
  • GET /tasks/ - получение списка приоритетных задач всех типов.

Стек технологий проекта: Java, GSON, JUnit, API

Примеры работы с классами приложения можно увидеть в файле java-kanban/test/server/EndpointTest.java. Приложение написано на Java без использования фреймворков. Пример кода:

public class TaskManager {
    public void updateTask(Task task) {

        switch (task.getStatus()) {
            case NEW -> task.setStatus(Status.IN_PROGRESS);
            case IN_PROGRESS -> task.setStatus(Status.DONE);
            default -> {
            } //reserved for future use
        }
        deleteTopLevelTaskById(task.getId(), task);
        historyManager.add(task);
        put(task);
    }
}

Разработчик: Мартынов Иван Александрович (iamartynov@rambler.ru)

Releases

No releases published

Packages

No packages published

Languages