Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ivanmartynovleti/java-kanban
Kanban-доска (трекер задач)
https://github.com/ivanmartynovleti/java-kanban
api gson http http-client http-server java java-core junit
Last synced: about 1 month ago
JSON representation
Kanban-доска (трекер задач)
- Host: GitHub
- URL: https://github.com/ivanmartynovleti/java-kanban
- Owner: IvanMartynovLETI
- Created: 2023-01-12T08:28:19.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-08-23T19:00:31.000Z (over 1 year ago)
- Last Synced: 2023-08-23T21:38:21.515Z (over 1 year ago)
- Topics: api, gson, http, http-client, http-server, java, java-core, junit
- Language: Java
- Homepage:
- Size: 106 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Это репозиторий проекта "Трекер задач"
Проект предназначен для отслеживания состояния задач типов 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 без использования фреймворков. Пример кода:
```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);
}
}
```
---
Разработчик: Мартынов Иван Александрович ([email protected])