diff --git a/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java b/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java index 1542a698..481c2628 100644 --- a/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java +++ b/src/main/java/hhn/temp/project/provider/SimpleDatabaseManager.java @@ -5,10 +5,7 @@ import hhn.temp.project.TaskState; import jdk.jshell.spi.ExecutionControl; import java.io.IOException; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.SQLException; +import java.sql.*; import java.util.Collection; public class SimpleDatabaseManager implements DatabaseManager { @@ -31,11 +28,11 @@ public class SimpleDatabaseManager implements DatabaseManager { return (i == 1) ? TaskState.FINISHED : TaskState.IN_PROGRESS; } - private String getQuery(QueryMode query) throws IOException { + private String getQuery(QueryMode query) { String queryString = null; switch (query) { - case INSERT -> queryString = "INSERT INTO Task (name, description, workerid, taskstate) VALUES (?, ?, ?, ?)"; + case INSERT -> queryString = "INSERT INTO Task (taskid, name, description, workerid, taskstate) VALUES (?, ?, ?, ?, ?)"; case UPDATE -> queryString = "UPDATE Task SET name = ?, description = ?, taskstate = ? WHERE taskid = ?"; case DELETE -> queryString = "DELETE FROM Task WHERE taskid = ?"; case SELECT -> queryString = "SELECT * FROM Task WHERE workerid = ?"; @@ -44,6 +41,12 @@ public class SimpleDatabaseManager implements DatabaseManager { return queryString; } + public void clearDatabase() throws SQLException { + try (Statement statement = connection.createStatement()) { + statement.executeUpdate("TRUNCATE TABLE Task;"); + } + } + @Override public void saveObjects(Collection objects) throws IOException, SQLException { for (E obj : objects) { @@ -58,7 +61,7 @@ public class SimpleDatabaseManager implements DatabaseManager { } @Override - public void saveObject(E object) throws IOException, SQLException { + public void saveObject(E object) throws SQLException { String query = getQuery(QueryMode.INSERT); if (object instanceof Task task) { @@ -68,13 +71,35 @@ public class SimpleDatabaseManager implements DatabaseManager { ps.setString(3, task.getDescription()); ps.setInt(4, task.getWorkerId()); ps.setInt(5, taskStateToInt(task.getTaskState())); + + ps.executeUpdate(); } } } @Override - public E getObject(int id) throws ExecutionControl.NotImplementedException { - throw new ExecutionControl.NotImplementedException("Not Implemented!"); + public E getObject(int id) throws SQLException { + String query = getQuery(QueryMode.SELECT); + Task task = null; + + try (PreparedStatement ps = connection.prepareStatement(query)) { + ps.setInt(1, id); + + ResultSet resultSet = ps.executeQuery(); + + if (resultSet.next()) { + + task = new Task( + resultSet.getInt("taskid"), + resultSet.getInt("workderid"), + resultSet.getString("name"), + resultSet.getString("description") + ); + task.setTaskState(intToTaskState(resultSet.getInt("taskstate"))); + } + } + + return (E) task; } @Override