From 292d6c74c3b9f1b752ba27d73ce2c65eba085605 Mon Sep 17 00:00:00 2001 From: Riley Schneider <88947587+Ferryry@users.noreply.github.com> Date: Wed, 3 Dec 2025 23:17:31 +0100 Subject: [PATCH] Implemented Update method --- .../provider/SimpleDatabaseManager.java | 38 +++++++++++++++---- .../project/provider/sql/createTaskTable.sql | 3 +- .../temp/project/DatabaseBadCasesTest.java | 2 +- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java b/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java index d13775e0..68d9d8e1 100644 --- a/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java +++ b/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java @@ -65,15 +65,14 @@ public class SimpleDatabaseManager implements DatabaseManager { String query = getQuery(QueryMode.INSERT); if (object instanceof Task task) { - try (PreparedStatement ps = connection.prepareStatement(query)) { - ps.setInt(1, task.getTaskId()); - ps.setString(2, task.getName()); - ps.setString(3, task.getDescription()); - ps.setInt(4, task.getWorkerId()); - ps.setInt(5, taskStateToInt(task.getTaskState())); + PreparedStatement ps = connection.prepareStatement(query); + ps.setInt(1, task.getTaskId()); + ps.setString(2, task.getName()); + ps.setString(3, task.getDescription()); + ps.setInt(4, task.getWorkerId()); + ps.setInt(5, taskStateToInt(task.getTaskState())); - ps.executeUpdate(); - } + ps.executeUpdate(); } } @@ -113,6 +112,29 @@ public class SimpleDatabaseManager implements DatabaseManager { @Override public E updateObject(int taskId, E object) throws SQLException { + String query = getQuery(QueryMode.UPDATE); + + if (object instanceof Task task) { + + if (taskId != task.getTaskId()) { + throw new IllegalArgumentException("Task ID does not equals Task ID from Task!"); + } + + PreparedStatement ps = connection.prepareStatement(query); + ps.setString(1, task.getName()); + ps.setString(2, task.getDescription()); + ps.setInt(3, taskStateToInt(task.getTaskState())); + ps.setInt(4, task.getTaskId()); + + int updated = ps.executeUpdate(); + + if (updated == 0) { + return null; + } + + return (E) task; + } + return null; } diff --git a/src/main/java/hhn/temp/project/provider/sql/createTaskTable.sql b/src/main/java/hhn/temp/project/provider/sql/createTaskTable.sql index 6e39b6f4..bc1ab8f5 100644 --- a/src/main/java/hhn/temp/project/provider/sql/createTaskTable.sql +++ b/src/main/java/hhn/temp/project/provider/sql/createTaskTable.sql @@ -1,5 +1,6 @@ CREATE TABLE Task ( - taskid INT AUTO_INCREMENT PRIMARY KEY, + id INT AUTO_INCREMENT PRIMARY KEY, + taskid INT, name VARCHAR(255) NOT NULL, description TEXT, workerid INT, diff --git a/test/hhn/temp/project/DatabaseBadCasesTest.java b/test/hhn/temp/project/DatabaseBadCasesTest.java index f00db386..a775001c 100644 --- a/test/hhn/temp/project/DatabaseBadCasesTest.java +++ b/test/hhn/temp/project/DatabaseBadCasesTest.java @@ -43,6 +43,6 @@ public class DatabaseBadCasesTest { @Test @DisplayName("Updates an object that does not exist") public void assertUpdateNonExistentObject() throws SQLException { - assertNull(databaseManager.updateObject(123, new Task(1, 2, "", ""))); + assertNull(databaseManager.updateObject(123, new Task(123, 2, "", ""))); } } \ No newline at end of file