diff options
| author | Stefan Suhren <suhren.stefan@fh-swf.de> | 2016-01-13 00:28:55 +0100 |
|---|---|---|
| committer | Stefan Suhren <suhren.stefan@fh-swf.de> | 2016-01-13 02:02:22 +0100 |
| commit | 5c80d6cd7611efe24234f9f27a5b3751b21113a7 (patch) | |
| tree | 68c8e4c6d649522e7bdd3c31e6f9f3b4489a2e93 /src/de/fhswf | |
| parent | 8bb0ce651c5d7921725d7195e2f058ce0f431af9 (diff) | |
| download | Projektthemenvergabe-5c80d6cd7611efe24234f9f27a5b3751b21113a7.tar.gz Projektthemenvergabe-5c80d6cd7611efe24234f9f27a5b3751b21113a7.zip | |
Persist organisation
Diffstat (limited to 'src/de/fhswf')
| -rw-r--r-- | src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java | 78 | ||||
| -rw-r--r-- | src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java | 15 |
2 files changed, 93 insertions, 0 deletions
diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java index 4caaa35..15d13c1 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java @@ -5,6 +5,7 @@ package de.fhswf.in.inf.se.projektthemenvergabe; import java.sql.Connection; import java.sql.DriverManager; +import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.HashMap; @@ -19,7 +20,9 @@ import de.fhswf.in.inf.se.projektthemenvergabe.view.ProjektthemenverwaltungsCont import de.fhswf.in.inf.se.projektthemenvergabe.view.StudentenverwaltungsController; import javafx.application.Application; import javafx.application.Platform; +import javafx.beans.value.ChangeListener; import javafx.collections.FXCollections; +import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; @@ -66,6 +69,7 @@ public class Main extends Application public void start(Stage primaryStage) throws Exception { loadData(); + registerSaveHandler(); this.primaryStage = primaryStage; @@ -398,4 +402,78 @@ public class Main extends Application } } + + /** + * Registers {@link ChangeListener} on the {@link ObservableList}s and + * persists the changes to the database. + * + */ + private void registerSaveHandler() + { + try + { + PreparedStatement deleteOrganisation = dbConnection + .prepareStatement("DELETE FROM organisation WHERE name=?"); + PreparedStatement addOrganisation = dbConnection.prepareStatement( + "INSERT INTO organisation (name) VALUES (?)"); + PreparedStatement updateOrganisation = dbConnection.prepareStatement( + "UPDATE organisation SET name=? WHERE name=?"); + + organisation.addListener(( + ListChangeListener.Change<? extends Organisation> listener) -> { + while (listener.next()) + { + if (listener.wasUpdated()) + { + for (int i = listener.getFrom(); i < listener.getTo(); i++) + { + try + { + Organisation tmpOrg = listener.getList().get(i); + + updateOrganisation.setString(1, tmpOrg.getName()); + updateOrganisation.setString(2, tmpOrg.getOldName()); + updateOrganisation.execute(); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } + else + { + for (Organisation removed : listener.getRemoved()) + { + try + { + deleteOrganisation.setString(1, removed.getName()); + deleteOrganisation.execute(); + } + catch (SQLException e) + { + e.printStackTrace(); + } + } + for (Organisation added : listener.getAddedSubList()) + { + try + { + addOrganisation.setString(1, added.getName()); + addOrganisation.execute(); + } + catch (SQLException e) + { + e.printStackTrace(); + } + } + } + } + }); + } + catch (SQLException e) + { + e.printStackTrace(); + } + } } diff --git a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java index 63bbc96..8336baf 100644 --- a/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java +++ b/src/de/fhswf/in/inf/se/projektthemenvergabe/model/Organisation.java @@ -20,6 +20,8 @@ public class Organisation { private StringProperty name = new SimpleStringProperty(""); + private String oldName = ""; + private List<Ansprechpartner> ansprechpartner = new ArrayList<>(); /** @@ -52,6 +54,7 @@ public class Organisation } this.name.set(name); + oldName = name; } /** @@ -155,4 +158,16 @@ public class Organisation return ((Organisation) obj).name.get().equals(name.get()); } + + /** + * Get the previous name of this Organisation. + * + */ + public String getOldName() + { + String tmp = oldName; + oldName = name.get(); + + return tmp; + } }
\ No newline at end of file |
