diff --git a/todo/src/main/java/ru/kamask/pet/todo/TodoApp.java b/todo/src/main/java/ru/kamask/pet/todo/TodoApp.java index 79fb305..e88ab4d 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/TodoApp.java +++ b/todo/src/main/java/ru/kamask/pet/todo/TodoApp.java @@ -1,18 +1,30 @@ package ru.kamask.pet.todo; import ru.kamask.pet.todo.model.SimpleTask; +import ru.kamask.pet.todo.repo.InMemoryTaskRepository; public class TodoApp { - @SuppressWarnings("unused") public static void main(String[] args) { - var task = new SimpleTask("TodoApp"); - System.out.println(task); + var repo = new InMemoryTaskRepository(); - task.markAsCompleted(); + repo.save(new SimpleTask("Задача номер один")); + repo.save(new SimpleTask("Задача номер два")); + repo.save(new SimpleTask("Задача номер три")); + repo.save(new SimpleTask("Задача номер четыре")); - var taskData = task.data(); - System.out.println(taskData); + System.out.println(repo.findAll()); + + var taskOption = repo.findById(2); + if (taskOption.isPresent()) { + SimpleTask task = (SimpleTask) taskOption.get(); + task.markAsCompleted(); + var data = task.data(); + System.out.println(data); + } + + repo.delete(1); + System.out.println(repo.findAll()); } } diff --git a/todo/src/main/java/ru/kamask/pet/todo/model/Task.java b/todo/src/main/java/ru/kamask/pet/todo/model/Task.java index 6b6678b..f160ca3 100644 --- a/todo/src/main/java/ru/kamask/pet/todo/model/Task.java +++ b/todo/src/main/java/ru/kamask/pet/todo/model/Task.java @@ -11,6 +11,10 @@ public abstract class Task { this.title = title; } + public int id() { + return id; + } + @Override public String toString() { return String.format("Задача: id - %d, title: \"%s\"", id, title); diff --git a/todo/src/main/java/ru/kamask/pet/todo/repo/InMemoryTaskRepository.java b/todo/src/main/java/ru/kamask/pet/todo/repo/InMemoryTaskRepository.java new file mode 100644 index 0000000..6c5d6e7 --- /dev/null +++ b/todo/src/main/java/ru/kamask/pet/todo/repo/InMemoryTaskRepository.java @@ -0,0 +1,33 @@ +package ru.kamask.pet.todo.repo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; + +import ru.kamask.pet.todo.model.Task; + +public class InMemoryTaskRepository implements TaskRepository { + private Map storage = new HashMap<>(); + + @Override + public void save(Task task) { + storage.put(task.id(), task); + } + + @Override + public Optional findById(int id) { + return Optional.ofNullable(storage.get(id)); + } + + @Override + public List findAll() { + return new ArrayList<>(storage.values()); + } + + @Override + public void delete(int id) { + storage.remove(id); + } +} diff --git a/todo/src/main/java/ru/kamask/pet/todo/repo/TaskRepository.java b/todo/src/main/java/ru/kamask/pet/todo/repo/TaskRepository.java new file mode 100644 index 0000000..af6aec0 --- /dev/null +++ b/todo/src/main/java/ru/kamask/pet/todo/repo/TaskRepository.java @@ -0,0 +1,16 @@ +package ru.kamask.pet.todo.repo; + +import java.util.List; +import java.util.Optional; + +import ru.kamask.pet.todo.model.Task; + +public interface TaskRepository { + void save(Task task); + + Optional findById(int id); + + List findAll(); + + void delete(int id); +}