From 640dab2006901db2a4edea785b4ee9cf835ac989 Mon Sep 17 00:00:00 2001 From: Stefan Suhren Date: Wed, 13 Jan 2016 01:25:27 +0100 Subject: Persist student --- .../fhswf/in/inf/se/projektthemenvergabe/Main.java | 73 ++++++++++++++++++++++ .../inf/se/projektthemenvergabe/model/Student.java | 15 +++++ 2 files changed, 88 insertions(+) (limited to 'src') diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java index ceb0a6b..a7d2ceb 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java @@ -567,6 +567,79 @@ public class Main extends Application } } }); + + PreparedStatement deleteStudent = dbConnection.prepareStatement( + "DELETE FROM student WHERE matrikelnummer=?"); + PreparedStatement addStudent = dbConnection.prepareStatement( + "INSERT INTO student (matrikelnummer, vorname, nachname) VALUES (?, ?, ?)"); + PreparedStatement updateStudent = dbConnection.prepareStatement( + "UPDATE student SET matrikelnummer=?,vorname=?,nachname=? WHERE matrikelnummer=?"); + + studenten.addListener( + (ListChangeListener.Change listener) -> { + while (listener.next()) + { + if (listener.wasUpdated()) + { + for (int i = listener.getFrom(); i < listener + .getTo(); i++) + { + try + { + Student tmpStudent = listener.getList().get(i); + + updateStudent.setInt(1, + tmpStudent.getMatrikelnummer()); + updateStudent.setString(2, + tmpStudent.getVorname()); + updateStudent.setString(3, + tmpStudent.getNachname()); + + updateStudent.setInt(4, + tmpStudent.getOldMatrikelnummer()); + + updateStudent.execute(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } + else + { + for (Student removed : listener.getRemoved()) + { + try + { + deleteStudent.setInt(1, + removed.getMatrikelnummer()); + + deleteStudent.execute(); + } + catch (SQLException e) + { + e.printStackTrace(); + } + } + for (Student added : listener.getAddedSubList()) + { + try + { + addStudent.setInt(1, added.getMatrikelnummer()); + addStudent.setString(2, added.getVorname()); + addStudent.setString(3, added.getNachname()); + + addStudent.execute(); + } + catch (SQLException e) + { + e.printStackTrace(); + } + } + } + } + }); } catch (SQLException e) { diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java index 89c80bb..32ee802 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Student.java @@ -26,6 +26,8 @@ public class Student private ObjectProperty projekt = new SimpleObjectProperty<>(); + private int oldMatrikelnummer = 0; + /** * Generates an extractor that fires when a property of a list value * changes. @@ -48,6 +50,7 @@ public class Student public Student(int matrikelnummer) { this.matrikelnummer.set(matrikelnummer); + oldMatrikelnummer = matrikelnummer; } /** @@ -220,4 +223,16 @@ public class Student return ((Student) obj).matrikelnummer.get() == matrikelnummer.get(); } + + /** + * Get the previous matrikel number of this Student. + * + */ + public int getOldMatrikelnummer() + { + int tmp = oldMatrikelnummer; + oldMatrikelnummer = matrikelnummer.get(); + + return tmp; + } } \ No newline at end of file -- cgit v1.2.3-70-g09d2