Skip to content

Sprint 8 solution time and duration#4

Merged
CrodiYa merged 41 commits intomainfrom
sprint_8-solution-time-and-duration
Sep 4, 2025
Merged

Sprint 8 solution time and duration#4
CrodiYa merged 41 commits intomainfrom
sprint_8-solution-time-and-duration

Conversation

@CrodiYa
Copy link
Owner

@CrodiYa CrodiYa commented Sep 4, 2025

Изменения, связанные с рефакторингом:

  • Добавлены javadoc для классов, комплексных методов и методов с неочевидной логикой
  • Методы возврата списков теперь возвращают неизменяемые списки
  • Добавлен пакет util, хранящий enum и exceptions
  • FiledBackedTaskManager перенесен в пакет filedback и получил класс помощник ParserHelper и enum CsvField с индексами частей строки. Логика осталась без изменений (исключая новые поля)
  • новый класс ParserHelper - собрание статичных методов-парсеров, выбрасывающий исключение ManagerLoadException
  • метод updateEpicStatus в классе InMemoryTaskManager слегка упростил логику
  • по возможности циклы превратились либо в forEach(()->{}), либо в stream().

Изменения, связанные с добавлением нового функционала

  • Task получил новые поля Duration duration и LocalDateTime startTime, два новых конструктора и метод getEndTime(). Имплементирует Comparable и сравнивает задачи по LocalDateTime.
  • Epic получил отдельное поле LocalDateTime endTime так как логика изменения длительности, времени начала и времени конца эпика зависит от подзадач эпика
  • Появился новый класс в пакете util TaskTimeController - он хранит все задачи и подзадачи в порядке приоритета(сортирует по времени начала), обновляет временные параметры эпика при добавлении и удалении подзадачи, проверяет пересечения времени. Имеет неиспользуемый метод isTimeOverlappingWithTreeSearch - проверку пересечения времени за O(log n), метод не используется так как не по тз (рука не поднялась его удалить)
  • Экземпляр класса TaskTimeController реализован в InMemoryTaskManager и его методы вызываются при добавлении/удалении задач. В список приоритета не попадают эпики и задачи без временных параметров(null)
  • Если при добавлении задачи обнаруживается пересечение времени - выбрасывается исключение TaskTimeOverlapException, наследуемое от RuntimeException
  • FiledBackedTaskManager получил поддержку новых полей и способен сохранять/загружать их с учетом вероятности их отсутствия
  • В файл task.csv добавлены строки для примера
  • Добавлены необходимые тесты

…stores all tasks in priority order. add Exception for this class.

made Task to implement Comparable and created compareTo method. updated toString method.
add TaskTimeController and it`s methods to InMemoryTaskManager.
….forEach() methods. simplified clearSubTasks(). Change return type for get* to List from ArrayList. getSubTasksFromEpic() logic simplified with steam()

feat: add throws TaskTimeOverlapException to add* methods. add taskTimeController.remove() to delete/clear methods.
…oller. add set methods for Epics exclusively with javadoc.
… method updateEpicDurationAndStartTimeDeletion() to change time and duration when subtask is deleted. add and updated javadoc
…deletion of subtask.

refactor: add comments and javadoc for complex delete methods
…on ManagerLoadException handling and made code easier to read with help of ParserHelper

add new fields handling to FileBackedTaskManager
feat: ParserHelper - helper class to parse different Objects.
docs: add javadoc and comments to complex methods
InMemoryTaskManager.getPrioritizedTasks returns taskTimeController.getPrioritizedTasks()
fix: try-catch block in FileBackedTaskManager
@CrodiYa CrodiYa merged commit 881f58b into main Sep 4, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant