Small fix for listing tasks

This commit is contained in:
2026-01-06 20:05:43 +01:00
parent a390509f87
commit 654305f2cd
27 changed files with 175 additions and 160 deletions

View File

@@ -15,8 +15,8 @@ public class AssignmentManager {
public AssignmentManager() {
workerMap = new HashMap<>();
taskMap = new HashMap<>();
int workerIdCounter = 1000;
int taskIdCounter = 0;
workerIdCounter = 1000;
taskIdCounter = 0;
userInterface = new UserCommands(this);
}
public Map<Integer, Task> getTaskMap() {

View File

@@ -5,5 +5,6 @@ import java.util.Scanner;
public class Main {
public static void main(String[] args) {
AssignmentManager manager = new AssignmentManager();
manager.startCLI();
}
}

View File

@@ -151,13 +151,13 @@ public class UserCommands implements Runnable {
System.out.println("General:");
System.out.println(" help, ? - Show this help");
System.out.println(" exit - Exit the program");
System.out.println(" listworkers - List all workers and select one");
System.out.println(" selecttask - Select a task by ID");
System.out.println(" createtask - Create a new task");
System.out.println(" createworker - Create a new worker");
System.out.println(" listtasks - List all tasks");
System.out.println(" listunfinished - List unfinished tasks");
System.out.println(" listfinished - List finished tasks");
System.out.println(" createtask - Create a new task");
System.out.println(" selecttask - Select a task to work with");
System.out.println(" listworkers - List all workers");
System.out.println(" listtasks - List all tasks with status");
System.out.println(" listfinished - List only finished tasks");
System.out.println(" listunfinished - List only unfinished tasks");
System.out.println("\nWhen a task is selected:");
System.out.println(" finish - Mark task as finished");
@@ -185,16 +185,23 @@ public class UserCommands implements Runnable {
case "selecttask":
System.out.println("Enter task ID:");
currentState = InputState.AWAITING_TASK_SELECTION; // Change to new state
currentState = InputState.AWAITING_TASK_SELECTION;
break;
case "listworkers":
System.out.println("Available workers:");
for (Worker w : manager.getWorkerMap().values()) {
System.out.println(" " + w.getId() + ": " + w.getName());
}
System.out.println("Enter worker ID to select (or 'back'):");
currentState = InputState.WORKER_SELECTED;
listWorkers();
break;
case "listtasks":
listAllTasks();
break;
case "listfinished":
listTasksByStatus(TaskState.FINISHED);
break;
case "listunfinished":
listTasksByStatus(TaskState.IN_PROGRESS);
break;
default:
@@ -202,6 +209,54 @@ public class UserCommands implements Runnable {
}
}
private void listWorkers() {
System.out.println("\nAvailable workers:");
if (manager.getWorkerMap().isEmpty()) {
System.out.println(" No workers found.");
} else {
for (Worker w : manager.getWorkerMap().values()) {
System.out.println(" " + w.getId() + ": " + w.getName());
}
}
System.out.println();
}
private void listAllTasks() {
System.out.println("\nAll tasks:");
if (manager.getTaskMap().isEmpty()) {
System.out.println(" No tasks found.");
} else {
for (Task task : manager.getTaskMap().values()) {
Worker worker = manager.getWorker(task.getWorkerId());
String status = task.getTaskState() == TaskState.FINISHED ? "[FINISHED]" : "[IN PROGRESS]";
System.out.println(String.format(" %d: %s - %s (Worker: %d - %s)",
task.getTaskId(), status, task.getName(),
worker.getId(), worker.getName()));
}
}
System.out.println();
}
private void listTasksByStatus(TaskState status) {
System.out.println("\nTasks with status: " + status);
boolean found = false;
for (Task task : manager.getTaskMap().values()) {
if (task.getTaskState() == status) {
Worker worker = manager.getWorker(task.getWorkerId());
System.out.println(String.format(" %d: %s (Worker: %d - %s)",
task.getTaskId(), task.getName(),
worker.getId(), worker.getName()));
found = true;
}
}
if (!found) {
System.out.println(" No tasks found with this status.");
}
System.out.println();
}
private void handleWorkerSelectionInput(String input) {
if ("back".equalsIgnoreCase(input)) {
resetToMainMenu();