diff --git a/src/main/java/de/igslandstuhl/database/api/SchoolClass.java b/src/main/java/de/igslandstuhl/database/api/SchoolClass.java index 46247b3..c9b9d52 100644 --- a/src/main/java/de/igslandstuhl/database/api/SchoolClass.java +++ b/src/main/java/de/igslandstuhl/database/api/SchoolClass.java @@ -162,6 +162,14 @@ public List getStudents() { public void delete() throws SQLException { Server.getInstance().getConnection().executeVoidProcessSecure(SQLHelper.getDeleteObjectProcess("class", String.valueOf(id))); + getStudents().forEach((s) -> { + try { + s.delete(); + } catch (SQLException e) { + e.printStackTrace(); + throw new IllegalStateException(e); + } + }); } /** diff --git a/src/main/java/de/igslandstuhl/database/api/Student.java b/src/main/java/de/igslandstuhl/database/api/Student.java index 2056f38..07f46dd 100644 --- a/src/main/java/de/igslandstuhl/database/api/Student.java +++ b/src/main/java/de/igslandstuhl/database/api/Student.java @@ -461,6 +461,11 @@ public void clearSubjectRequest(int subjectId) { currentRequests.remove(subjectId); } + public void delete() throws SQLException { + Server.getInstance().getConnection().executeVoidProcessSecure(SQLHelper.getDeleteObjectProcess("student", String.valueOf(id))); + students.remove(id); + } + @Override public String toString() { return toJSON(); diff --git a/src/main/java/de/igslandstuhl/database/api/Subject.java b/src/main/java/de/igslandstuhl/database/api/Subject.java index 75e55b1..09362b9 100644 --- a/src/main/java/de/igslandstuhl/database/api/Subject.java +++ b/src/main/java/de/igslandstuhl/database/api/Subject.java @@ -2,6 +2,7 @@ import java.sql.SQLException; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -236,6 +237,22 @@ public void delete() throws SQLException { SQLHelper.getDeleteObjectProcess("subject", String.valueOf(id)) ); subjects.remove(id); + try { + Arrays.stream(getGrades()).mapToObj(this::getTopics).forEach((l) -> l.forEach((t) -> { + try { + t.delete(); + } catch (SQLException e) { + e.printStackTrace(); + throw new IllegalStateException(e); + } + })); + } catch (IllegalStateException e) { + if (e.getCause() != null && e.getCause() instanceof SQLException ex) { + throw ex; + } else { + throw e; + } + } } @Override diff --git a/src/main/java/de/igslandstuhl/database/api/Task.java b/src/main/java/de/igslandstuhl/database/api/Task.java index 5c95fe9..8f2b158 100644 --- a/src/main/java/de/igslandstuhl/database/api/Task.java +++ b/src/main/java/de/igslandstuhl/database/api/Task.java @@ -147,6 +147,11 @@ public void removeFromCache() { tasks.remove(id); } + public void delete() throws SQLException { + Server.getInstance().getConnection().executeVoidProcessSecure(SQLHelper.getDeleteObjectProcess("task", String.valueOf(id))); + removeFromCache(); + } + /** * Creates a Task object from SQL query result fields. * diff --git a/src/main/java/de/igslandstuhl/database/api/Topic.java b/src/main/java/de/igslandstuhl/database/api/Topic.java index d980966..3947c8f 100644 --- a/src/main/java/de/igslandstuhl/database/api/Topic.java +++ b/src/main/java/de/igslandstuhl/database/api/Topic.java @@ -322,7 +322,13 @@ public static Topic addTopic(String name, Subject subject, int ratio, int grade, public void delete() throws SQLException { Server.getInstance().getConnection().executeVoidProcessSecure(SQLHelper.getDeleteObjectProcess("topic", String.valueOf(id))); topics.remove(id); - tasks.forEach(Task::removeFromCache); + tasks.forEach(t -> { + try { + t.delete(); + } catch (SQLException e) { + throw new IllegalStateException(e); + } + }); } @Override diff --git a/src/main/resources/sql/pushes/delete_student.sql b/src/main/resources/sql/pushes/delete_student.sql new file mode 100644 index 0000000..d5a8a9f --- /dev/null +++ b/src/main/resources/sql/pushes/delete_student.sql @@ -0,0 +1,2 @@ +DELETE FROM students +WHERE id = {0} \ No newline at end of file diff --git a/src/main/resources/sql/pushes/delete_task.sql b/src/main/resources/sql/pushes/delete_task.sql new file mode 100644 index 0000000..4c505f6 --- /dev/null +++ b/src/main/resources/sql/pushes/delete_task.sql @@ -0,0 +1,2 @@ +DELETE FROM tasks +WHERE id = {0} \ No newline at end of file