Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Спринт 8 #4

Merged
merged 5 commits into from
Dec 21, 2024
Merged

Спринт 8 #4

merged 5 commits into from
Dec 21, 2024

Conversation

AlekseyGur
Copy link
Owner

@AlekseyGur AlekseyGur commented Dec 19, 2024

Добавить продолжительность и дату старта задач, список приоритетных задач, переделать тесты

список приоритетных задач, переделать тесты
@AlekseyGur AlekseyGur changed the title Добавить продолжительность и дату старта задач, список приоритетных задач, переделать тесты Спринт 8 Dec 19, 2024
Copy link

@avfyodorov avfyodorov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добрый вечер, Алексей!

Хорошая работа, от меня всего пара уточнений.

}
if (startTime != null) {
epic.setStartTime(startTime);
epic.setEndTime(epic.getStartTime().plus(duration));

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Здесь немного не так. По техническому заданию:

А вот с классом Epic нужно поработать дополнительно. Продолжительность эпика — сумма продолжительностей всех его подзадач. Время начала — дата старта самой ранней подзадачи,

а время завершения — время окончания самой поздней из задач.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Поправил, добавил тесты на эти три условия

public List<Task> getPrioritizedTasks() {
return Stream.concat(getTasks().stream(), getSubTasks().stream())
.filter(x -> x.getStartTime() == null)
.sorted(Task::compareToStartTimeAsc)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Сортировать задачи лучше при добавлении в этот список. По техническому заданию:

Предполагается, что пользователь будет часто запрашивать этот список, поэтому подберите подходящую структуру данных для хранения. Сложность получения должна быть уменьшена ... до O(n).

То есть метод должен быть приблизительно таким:

       @Override
	public List<Task> getPrioritizedTasks() {
		return new ArrayList<>(prioritizedTasks);
	}

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Исправил, добавил в интерфейс getPrioritizedTasks и тест для него

tasks.put(task.id, task);
addTreeOfTasksAndSubTasks(task);
return task.id;
}

@Override
public int addSubTask(SubTask subtask) {
subTasks.put(subtask.id, subtask);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Перед добавлением подзадачи также нужно проверить нет ли пересечения с другими задачами и подзадачами, уже добавленными в отсортированный список.

        if (isTaskCrossesSavedTasks(subtask)) {
             .................

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавил проверку

return epic.id;
}

@Override
public void updateTask(Task task) {
updateTreeOfTasksAndSubTasks(task);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

У обновляемой задачи могли измениться и время начала и продолжительность, поэтому здесь тоже нужно проверить на пересечение по времени.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавил проверку для обновлений, дополнил тесты

Copy link

@avfyodorov avfyodorov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добрый вечер, Алексей!

Всё в порядке, замечаний нет.
Работа принята.

@AlekseyGur AlekseyGur merged commit dcd1991 into main Dec 21, 2024
1 check passed
@AlekseyGur AlekseyGur deleted the sprint_8-solution-time-and-duration branch December 21, 2024 08:37
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.

2 participants