Skip to content

Commit

Permalink
Добавлены новые изменения
Browse files Browse the repository at this point in the history
  • Loading branch information
artemdergunov committed Jan 26, 2025
1 parent c12f425 commit e59a7d0
Show file tree
Hide file tree
Showing 22 changed files with 1,039 additions and 2 deletions.
11 changes: 11 additions & 0 deletions .idea/libraries/junit.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

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

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

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

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions java-kanban.iml
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,11 @@
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/tests" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="junit" level="project" />
<orderEntry type="library" name="junit.jupiter" level="project" />
</component>
</module>
64 changes: 63 additions & 1 deletion src/Main.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,68 @@
import manager.InMemoryTaskManager;
import manager.Managers;
import enums.Status;
import manager.TaskManager;
import task.Task;
import task.Epic;
import task.Subtask;

public class Main {

public static void main(String[] args) {
System.out.println("Поехали!");

final TaskManager taskManager = Managers.getDefault();

// создаем две задачи
Task task1 = new Task("Сходить в магазин", "Купить молоко обязательно");
Task task2 = new Task("Покормить кота", "Влажным кормом");


taskManager.addTask(task1);
taskManager.addTask(task2);

System.out.println(task1);
System.out.println(task2);


// Создаем эпик с двумя подзадачами
Epic epic1 = new Epic("Переезд", "В ближайшую неделю");
taskManager.addEpic(epic1);

Subtask subtask1 = new Subtask("Собрать вещи", "Сложить все в коробки", epic1.getId());
Subtask subtask2 = new Subtask("Заказать машину", "Грузовую", epic1.getId());
taskManager.addSubtask(subtask1);
taskManager.addSubtask(subtask2);

System.out.println(epic1);
System.out.println(subtask1);
System.out.println(subtask2);

// Создаем эпик с одной подзадачей
Epic epic2 = new Epic("Ремонт на даче", "В ближайший месяц");
taskManager.addEpic(epic2);
Subtask subtask3 = new Subtask("Купить материалы", "Отвезти на дачу", epic2.getId());

taskManager.addSubtask(subtask3);

// меняем статусы
subtask2.setStatus(Status.DONE);
subtask1.setStatus(Status.DONE);
taskManager.updateSubtask(subtask1);
taskManager.updateSubtask(subtask2);
task1.setStatus(Status.DONE);


System.out.println(task1);
System.out.println(epic1);

}
}









7 changes: 7 additions & 0 deletions src/enums/Status.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package enums;

public enum Status {
NEW,
IN_PROGRESS,
DONE
}
14 changes: 14 additions & 0 deletions src/manager/HistoryManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package manager;

import task.Task;

import java.util.List;

public interface HistoryManager {
void add(Task task);

List<Task> getHistory();

void remove(int id);
}

76 changes: 76 additions & 0 deletions src/manager/InMemoryHistoryManager.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package manager;

import task.Task;

import java.util.*;

public class InMemoryHistoryManager implements HistoryManager {

private final Map<Integer, Node<Task>> viewedTasksMap = new HashMap<>();
private Node<Task> head;
private Node<Task> tail;

@Override
public void add(Task task) {
if (task != null) {
linkLast(task);
}
}

@Override
public List<Task> getHistory() {
return getTasks();
}

@Override
public void remove(int id) {
removeNode(viewedTasksMap.get(id));
}

private void linkLast(Task task) {
if (viewedTasksMap.containsKey(task.getId())) {
removeNode(viewedTasksMap.get(task.getId()));
}
final Node<Task> oldTail = tail;
final Node<Task> newNode = new Node<>(task, tail, null);
tail = newNode;
viewedTasksMap.put(task.getId(), newNode);
if (oldTail == null) {
head = newNode;
} else {
oldTail.setNext(newNode);
}
}

private List<Task> getTasks() {
List<Task> tasks = new LinkedList<>();
Node<Task> currentNode = head;
while (currentNode != null) {
tasks.add(currentNode.getData());
currentNode = currentNode.getNext();
}
return tasks;
}

private void removeNode(Node<Task> node) {
if (node != null) {
final Node<Task> next = node.getNext();
final Node<Task> previous = node.getPrevious();
node.setData(null);

if (head == node && tail == node) {
head = null;
tail = null;
} else if (head == node && tail != node) {
head = next;
head.setPrevious(null);
} else if (head != node && tail == node) {
tail = previous;
tail.setNext(null);
} else {
previous.setNext(next);
next.setPrevious(previous);
}
}
}
}
Loading

0 comments on commit e59a7d0

Please sign in to comment.