summaryrefslogtreecommitdiff
path: root/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks
diff options
context:
space:
mode:
authorKamal Wickramanayake <kamal@inbox.lk>2026-03-22 15:33:43 +0530
committerKamal Wickramanayake <kamal@inbox.lk>2026-03-22 15:33:43 +0530
commit8f875db252cfead19b029ff443f81d087c3cf097 (patch)
treee1474def31b18a48868417b5445ce1676d7298ec /oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks
parent938427dace1a9622a55e3f81845fb82af697d001 (diff)
Added 10-task-tracker
Diffstat (limited to 'oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks')
-rw-r--r--oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/App.java15
-rw-r--r--oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/TaskManager.java9
-rw-r--r--oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/entities/Task.java84
-rw-r--r--oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/entities/User.java32
-rw-r--r--oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/ui/TextUI.java69
5 files changed, 209 insertions, 0 deletions
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
new file mode 100644
index 0000000..bb0ab24
--- /dev/null
+++ b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/App.java
@@ -0,0 +1,15 @@
+package lk.ac.pdn.ceit.tasks;
+
+import lk.ac.pdn.ceit.tasks.ui.TextUI;
+
+/**
+ * Hello world!
+ */
+public class App {
+ public static void main(String[] args) {
+ TextUI ui = new TextUI();
+ // ui.setTaskManager();
+
+ ui.start();
+ }
+}
diff --git a/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/TaskManager.java b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/TaskManager.java
new file mode 100644
index 0000000..8e22b30
--- /dev/null
+++ b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/TaskManager.java
@@ -0,0 +1,9 @@
+package lk.ac.pdn.ceit.tasks;
+
+import lk.ac.pdn.ceit.tasks.entities.Task;
+
+public interface TaskManager {
+ public Task createNewTask(String title, String description);
+ public Task findById(int id);
+ public void updateTask(Task task);
+}
diff --git a/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/entities/Task.java b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/entities/Task.java
new file mode 100644
index 0000000..26dfc4a
--- /dev/null
+++ b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/entities/Task.java
@@ -0,0 +1,84 @@
+package lk.ac.pdn.ceit.tasks.entities;
+
+import java.time.Duration;
+
+public class Task {
+ private User createdBy;
+ private User assignedTo;
+
+ private int id;
+ private String title;
+ private String description;
+ private Duration estimatedTime;
+ private Duration actualTime;
+ private boolean completed;
+
+ public Task() {
+ }
+
+ public Task(int id, String title, String description) {
+ this.id = id;
+ this.title = title;
+ this.description = description;
+ }
+
+ public int getId() {
+ return id;
+ }
+ public void setId(int id) {
+ this.id = id;
+ }
+ public String getTitle() {
+ return title;
+ }
+ public void setTitle(String title) {
+ this.title = title;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public Duration getEstimatedTime() {
+ return estimatedTime;
+ }
+ public void setEstimatedTime(Duration estimatedTime) {
+ this.estimatedTime = estimatedTime;
+ }
+ public Duration getActualTime() {
+ return actualTime;
+ }
+ public void setActualTime(Duration actualTime) {
+ this.actualTime = actualTime;
+ }
+ public boolean isCompleted() {
+ return completed;
+ }
+ public void setCompleted(boolean completed) {
+ this.completed = completed;
+ }
+
+ public User getCreatedBy() {
+ return createdBy;
+ }
+
+ public void setCreatedBy(User createdBy) {
+ this.createdBy = createdBy;
+ }
+
+ public User getAssignedTo() {
+ return assignedTo;
+ }
+
+ public void setAssignedTo(User assignedTo) {
+ this.assignedTo = assignedTo;
+ }
+
+ @Override
+ public String toString() {
+ return "Task [id=" + id + ", title=" + title + ", description=" + description + ", estimatedTime="
+ + estimatedTime + ", actualTime=" + actualTime + ", completed=" + completed + "]";
+ }
+
+}
diff --git a/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/entities/User.java b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/entities/User.java
new file mode 100644
index 0000000..2c45fc2
--- /dev/null
+++ b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/entities/User.java
@@ -0,0 +1,32 @@
+package lk.ac.pdn.ceit.tasks.entities;
+
+public class User {
+ private int id;
+ private String username;
+
+ public User() {
+ }
+
+ public User(int id, String username) {
+ this.id = id;
+ this.username = username;
+ }
+
+ public int getId() {
+ return id;
+ }
+ public void setId(int id) {
+ this.id = id;
+ }
+ public String getUsername() {
+ return username;
+ }
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ @Override
+ public String toString() {
+ return "User [id=" + id + ", username=" + username + "]";
+ }
+}
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
new file mode 100644
index 0000000..6bce661
--- /dev/null
+++ b/oop/10-task-tracker/src/main/java/lk/ac/pdn/ceit/tasks/ui/TextUI.java
@@ -0,0 +1,69 @@
+package lk.ac.pdn.ceit.tasks.ui;
+
+import lk.ac.pdn.ceit.tasks.TaskManager;
+import lk.ac.pdn.ceit.tasks.entities.Task;
+
+public class TextUI {
+ private TaskManager taskManager;
+
+ public void setTaskManager(TaskManager taskManager) {
+ this.taskManager = taskManager;
+ }
+
+ public void start() {
+ while(true) {
+ String command = IO.readln("Command> ");
+
+ switch (command.trim().toLowerCase()) {
+ case "q":
+ case "quit":
+ IO.println("Thank you for using Task Tracker.");
+ System.exit(0);
+
+ case "createtask":
+ createNewTask();
+ break;
+
+ case "updatetask":
+ updateTask();
+ break;
+
+ default:
+ IO.println("Command not found.");
+ break;
+ }
+ }
+ }
+
+ private void createNewTask() {
+ String title = IO.readln("Enter task title: ");
+ String description = IO.readln("Enter task description: ");
+
+ Task newTask = taskManager.createNewTask(title, description);
+
+ IO.print("New task created: " + newTask);
+ }
+
+ private void updateTask() {
+ // Ask the user to enter task id
+ String taskId = IO.readln("Enter task ID: ");
+
+ // Get the Task from TaskManager
+ Task task = taskManager.findById(Integer.parseInt(taskId));
+
+ // Show the Task details to user
+ IO.print(task);
+
+ // Prompt the user to update Task properties
+ String title = IO.readln("New title: ");
+ if (! title.equals("")) {
+ task.setTitle(title);
+ }
+ // ...
+
+ // Use the TaskManager and update the task
+ taskManager.updateTask(task);
+ IO.println("Task updated.");
+ }
+
+}