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

@@ -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();