From 6ccb68285f6580d6e040817416630b6a458d7a84 Mon Sep 17 00:00:00 2001 From: KevinSchoenmayer Date: Tue, 6 Jan 2026 21:14:09 +0100 Subject: [PATCH] Added syncing with database when starting the Manager, adding, removing or editing anything --- .../hhn/temp/project/AssignmentManager.java | 82 ++++++++++++++++++- 1 file changed, 78 insertions(+), 4 deletions(-) diff --git a/src/main/java/hhn/temp/project/AssignmentManager.java b/src/main/java/hhn/temp/project/AssignmentManager.java index 9698a956..b81b1b01 100644 --- a/src/main/java/hhn/temp/project/AssignmentManager.java +++ b/src/main/java/hhn/temp/project/AssignmentManager.java @@ -1,9 +1,9 @@ package hhn.temp.project; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import hhn.temp.project.provider.SimpleDatabaseManager; + +import java.sql.SQLException; +import java.util.*; public class AssignmentManager { private Map workerMap; @@ -11,22 +11,66 @@ public class AssignmentManager { private int workerIdCounter; private int taskIdCounter; private UserCommands userInterface; + private SimpleDatabaseManager database; public AssignmentManager() { + database = new SimpleDatabaseManager(); + connect(); workerMap = new HashMap<>(); taskMap = new HashMap<>(); workerIdCounter = 1000; taskIdCounter = 0; + sync(); userInterface = new UserCommands(this); } + private void connect() { + try { + database.connect(); + } catch (SQLException e) { + System.err.println("Failed to connect to database"); + } + } + private void sync() { + workerMap.clear(); + taskMap.clear(); + try { + Collection workers = database.getWorkers(); + if (workers != null) { + for (Worker worker : workers) { + workerMap.put(worker.getId(),worker); + if (worker.getId() > workerIdCounter) { + workerIdCounter = worker.getId(); + } + } + } + Collection tasks = database.getTasks(); + if (tasks != null) { + for (Task task : tasks) { + taskMap.put(task.getTaskId(),task); + if (task.getTaskId() > taskIdCounter) { + taskIdCounter = task.getTaskId(); + } + } + } + + } catch (SQLException e) { + System.err.println("Failed to sync"); + } + } public Map getTaskMap() { return taskMap; } public Map getWorkerMap() {return workerMap;} public int createWorker(String name) { + sync(); Worker worker = new Worker(name, ++workerIdCounter); workerMap.put(workerIdCounter, worker); + try { + database.saveWorker(worker); + } catch (SQLException e) { + System.err.println("Failed to save worker"); + } return workerIdCounter; } public void removeWorker(int workerId) { @@ -34,6 +78,11 @@ public class AssignmentManager { throw new IllegalArgumentException("WorkerId must exist in order to remove it"); } workerMap.remove(workerId); + try { + database.deleteWorker(workerId); + } catch (SQLException e) { + System.err.println("Failed to delete worker"); + } } public int addTask(int workerId, String name, String description) { if (!workerMap.containsKey(workerId) || name == null || description == null) { @@ -41,6 +90,11 @@ public class AssignmentManager { } Task task = new Task(++taskIdCounter, workerId, name, description); taskMap.put(taskIdCounter, task); + try { + database.saveTask(task); + } catch (SQLException e) { + System.err.println("Failed to save task"); + } return taskIdCounter; } public Task getTask(int taskId) { @@ -62,12 +116,22 @@ public class AssignmentManager { Task task = taskMap.get(taskId); task.setName(name); task.setDescription(description); + try { + database.updateTask(task.getTaskId(),task); + } catch (SQLException e) { + System.err.println("Failed to update Task"); + } } public void removeTask(int taskId) { if (!taskMap.containsKey(taskId)) { throw new IllegalArgumentException("Task Id does not exist"); } taskMap.remove(taskId); + try { + database.deleteTask(taskId); + } catch (SQLException e) { + System.err.println("Failed to remove task"); + } } public void finishTask(int workerId, int taskId) { if (!workerMap.containsKey(workerId) || !taskMap.containsKey(taskId)) { @@ -75,6 +139,11 @@ public class AssignmentManager { } Task task = taskMap.get(taskId); task.setTaskState(TaskState.FINISHED); + try { + database.updateTask(taskId,task); + } catch (SQLException e) { + System.err.println("Failed to finish task"); + } } public void unfinishTask(int workerId, int taskId) { if (!workerMap.containsKey(workerId) || !taskMap.containsKey(taskId)) { @@ -82,6 +151,11 @@ public class AssignmentManager { } Task task = taskMap.get(taskId); task.setTaskState(TaskState.IN_PROGRESS); + try { + database.updateTask(taskId,task); + } catch (SQLException e) { + System.err.println("Failed to finish task"); + } } public UserCommands getUserCommands() { return userInterface;