Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
7743828
feat: unlimited history list + O(1) dedup
Aug 6, 2025
3646ef3
стиль: добавлены фигурные скобки и читаемые имена переменных в InMemo…
Aug 7, 2025
587f3bc
Удалены IDE-файлы (.idea, *.iml) из репозитория
Aug 7, 2025
b4b1ccc
Чистка .idea: оставлены только нужные файлы, обновлён .gitignore
Aug 7, 2025
66a1fb6
Добавлены нужные конфигурации из .idea (misc.xml, modules.xml и др.)
Aug 7, 2025
aee1163
feat: FileBackedTaskManager, TaskType и Javadoc (sprint 7)
Aug 7, 2025
7417ec7
chore: ignore demo CSV file
Aug 8, 2025
ef16c91
chore: ignore /out и tasks.csv; удалить из репо все скомпилированные …
Aug 8, 2025
925f518
feat: FileBackedTaskManager — CSV save/restore, autosave в мутирующих…
Aug 8, 2025
8a34af1
feat(core): удаление из истории при remove*, хелпер для nextId после …
Aug 8, 2025
4119bd8
style(history): фигурные скобки по Google Style, именование и мелкие …
Aug 8, 2025
8c89624
docs(api): JavaDoc к интерфейсу менеджера, без изменения сигнатур
Aug 8, 2025
50bc2e7
feat(model): enum TaskType {TASK, EPIC, SUBTASK}
Aug 8, 2025
a8af70b
feat(model): getDescription() + toCsvRow(); аккуратный equals/hashCod…
Aug 8, 2025
a067fbc
feat(model): хранение списка subtaskIds с инкапсуляцией (копия при ge…
Aug 8, 2025
9dc7b3a
feat(model): поле epicId + валидация id в конструкторе, геттер
Aug 8, 2025
f28352f
test(history): add() переносит в конец без дублей; remove() удаляет з…
Aug 8, 2025
d6bbb1b
test(task-manager): без дублей в истории; история >10; удаление чисти…
Aug 8, 2025
d6ef3d1
test(int): пакет tests/manager, мелкие правки импортов/путей
Aug 8, 2025
0e25ccd
chore(demo): используем возвращаемые значения и печатаем счётчики, чт…
Aug 8, 2025
4c19c80
Resolve .gitignore merge conflict: ignore out/ & tasks.csv; keep only…
Aug 8, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 33 additions & 36 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,43 +1,40 @@
### IntelliJ IDEA ###
# Игнорируем всё содержимое .idea — это папка настроек среды разработки
# Оставляем только нужные файлы, чтобы IDE могла корректно открыть проект
.idea/
!.idea/misc.xml # Уровень JDK, базовые настройки проекта
!.idea/modules.xml # Структура модулей (если нет Maven/Gradle)
!.idea/libraries/ # Подключённые библиотеки, например JUnit
!.idea/vcs.xml # Настройки системы контроля версий (Git)
# ===== Build output / compiled =====
out/
bin/
build/
target/
*.class

# ===== App data created by FileBackedTaskManager =====
tasks.csv

# Игнорируем файлы модулей IntelliJ (.iml) — не нужны в репозитории
# ===== IntelliJ IDEA =====
.idea/
!.idea/misc.xml
!.idea/modules.xml
!.idea/vcs.xml
# !.idea/libraries/ # надо включать только осознанно
*.iml

### Build output ###
# Исключаем папки, которые содержат скомпилированные классы и артефакты
out/ # Папка вывода сборки IntelliJ
bin/ # Папка вывода Eclipse/ручной сборки
target/ # Папка сборки Maven (если появится)
# ===== VS Code =====
.vscode/

### OS ###
# Системные файлы macOS, не должны попадать в репозиторий
# ===== OS junk =====
.DS_Store
Thumbs.db

### VS Code ###
# Конфигурации Visual Studio Code (если кто-то откроет проект там)
.vscode/

### Eclipse ###
# Игнорируем все файлы и папки, связанные с Eclipse IDE
.apt_generated # Автоматически сгенерированные исходники
.classpath # Файл конфигурации путей классов
.factorypath # Конфигурация аннотаций
.project # Основной файл проекта Eclipse
.settings # Папка с настройками проекта
.springBeans # Конфиги Spring Beans (если используется)
.sts4-cache # Кэш Spring Tool Suite (STS)
# ===== Eclipse =====
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### NetBeans ###
# Всё, что создаёт NetBeans IDE
nbproject/private/ # Личные настройки проекта
nbbuild/ # Папка сборки NetBeans
dist/ # Артефакты сборки (JAR и т.д.)
nbdist/ # Расширенная папка вывода
.nb-gradle/ # Кэш Gradle от NetBeans
# ===== NetBeans =====
nbproject/private/
nbbuild/
dist/
nbdist/
.nb-gradle/
10 changes: 0 additions & 10 deletions .idea/.gitignore

This file was deleted.

17 changes: 0 additions & 17 deletions .idea/libraries/junit_jupiter.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/misc.xml

This file was deleted.

8 changes: 0 additions & 8 deletions .idea/modules.xml

This file was deleted.

6 changes: 0 additions & 6 deletions .idea/vcs.xml

This file was deleted.

12 changes: 0 additions & 12 deletions java-sprint4-hw.iml

This file was deleted.

39 changes: 25 additions & 14 deletions src/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,37 @@
import manager.TaskManager;
import model.*;


// Демонстрация базовой работы с менеджером задач:
//добавление задач, получение и история просмотров.

// Демонстрация базовой работы с менеджером задач
public class Main {
public static void main(String[] args) {
TaskManager manager = Managers.getDefault();

// === Добавление задач ===
int id1 = manager.addNewTask(new Task("Задача 1", "Описание задачи", Status.NEW));
int id2 = manager.addNewEpic(new Epic("Эпик 1", "Описание эпика"));
int id3 = manager.addNewSubtask(new Subtask("Подзадача 1", "Описание подзадачи", id2));
int id1 = manager.addNewTask(new Task("Задача 1", "Описание задачи", Status.NEW));
int epicId = manager.addNewEpic(new Epic("Эпик 1", "Описание эпика"));
int subId = manager.addNewSubtask(new Subtask("Подзадача 1", "Описание подзадачи", epicId));
manager.addNewSubtask(new Subtask("Подзадача 2", "Ещё одна", epicId));

// === Используем возвращаемые списки (убираем жёлтые лампы) TODO: это просто для себя подчеркиваю ===
int tasksCount = manager.getTasks().size();
int epicsCount = manager.getEpics().size();
int subtasksCount = manager.getSubtasks().size();
int epicSubCount = manager.getEpicSubtasks(epicId).size();
System.out.printf(
"Всего: tasks=%d, epics=%d, subtasks=%d; у эпика %d подзадач=%d%n",
tasksCount, epicsCount, subtasksCount, epicId, epicSubCount
);

// === Получение задач (для истории просмотров) — без пустых if ===
boolean viewedTask1 = manager.getTask(id1) != null;
boolean viewedEpic = manager.getEpic(epicId) != null;
boolean viewedSub = manager.getSubtask(subId) != null;
boolean viewedTask2 = manager.getTask(id1) != null;

// просто используем значения, чтобы инспекция была довольна
System.out.printf("Просмотры: t1=%b, epic=%b, sub=%b, t1-again=%b%n",
viewedTask1, viewedEpic, viewedSub, viewedTask2);

// === Получение задач (для истории просмотров) ===
manager.getTask(id1);
manager.getEpic(id2);
manager.getSubtask(id3);
manager.getTask(id1); // повторное обращение к задаче

// === Вывод истории просмотров ===
System.out.println("=== История просмотров ===");
Expand All @@ -34,14 +47,12 @@ public static void main(String[] args) {
}
}

// понятный тип задачи
private static String getTypeName(Task task) {
if (task instanceof Epic) return "Эпик";
if (task instanceof Subtask) return "Подзадача";
return "Задача";
}

// Перевод статуса на русский
private static String getStatusName(Status status) {
return switch (status) {
case NEW -> "Новая";
Expand Down
Loading