From 3ffd9370c8c7ebf34232ef59568981cdc3856a05 Mon Sep 17 00:00:00 2001 From: Kamal Wickramanayake Date: Sun, 22 Mar 2026 15:53:39 +0530 Subject: Added InMemoryTaskManager --- .../src/main/java/lk/ac/pdn/ceit/tasks/App.java | 4 +- .../lk/ac/pdn/ceit/tasks/InMemoryTaskManager.java | 51 ++++++++++++++++++++++ .../main/java/lk/ac/pdn/ceit/tasks/ui/TextUI.java | 2 +- 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/InMemoryTaskManager.java diff --git a/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/App.java b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/App.java index bb0ab24..8707f19 100644 --- a/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/App.java +++ b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/App.java @@ -7,8 +7,10 @@ import lk.ac.pdn.ceit.tasks.ui.TextUI; */ public class App { public static void main(String[] args) { + TaskManager taskManager = new InMemoryTaskManager(); + TextUI ui = new TextUI(); - // ui.setTaskManager(); + ui.setTaskManager(taskManager); ui.start(); } diff --git a/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/InMemoryTaskManager.java b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/InMemoryTaskManager.java new file mode 100644 index 0000000..93988a3 --- /dev/null +++ b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/InMemoryTaskManager.java @@ -0,0 +1,51 @@ +package lk.ac.pdn.ceit.tasks; + +import java.util.ArrayList; +import java.util.List; + +import lk.ac.pdn.ceit.tasks.entities.Task; + +public class InMemoryTaskManager implements TaskManager { + private List tasks = new ArrayList<>(); + + private int lastId = 0; + + @Override + public Task createNewTask(String title, String description) { + lastId++; + + Task task = new Task(lastId, title, description); + + // Add to the internally maintained task list + tasks.add(task); + + return task; + } + + @Override + public Task findById(int id) { + for (Task task : tasks) { + if (task.getId() == id) { + return task; + } + } + + return null; + } + + @Override + public void updateTask(Task task) { + // Find the internal position of the task in the tasks list + int index = 0; + + for(; index < tasks.size(); index++) { + if (tasks.get(index).getId() == task.getId()) { + break; + } + } + + // Replace the task object (related to that internal position) + tasks.set(index, task); + } + +} diff --git a/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/ui/TextUI.java b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/ui/TextUI.java index 6bce661..d839da8 100644 --- a/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/ui/TextUI.java +++ b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/ui/TextUI.java @@ -41,7 +41,7 @@ public class TextUI { Task newTask = taskManager.createNewTask(title, description); - IO.print("New task created: " + newTask); + IO.println("New task created: " + newTask); } private void updateTask() { -- cgit v1.2.3