summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2016-01-13 00:28:55 +0100
committerStefan Suhren <suhren.stefan@fh-swf.de>2016-01-13 02:02:22 +0100
commit5c80d6cd7611efe24234f9f27a5b3751b21113a7 (patch)
tree68c8e4c6d649522e7bdd3c31e6f9f3b4489a2e93 /src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java
parent8bb0ce651c5d7921725d7195e2f058ce0f431af9 (diff)
downloadProjektthemenvergabe-5c80d6cd7611efe24234f9f27a5b3751b21113a7.tar.gz
Projektthemenvergabe-5c80d6cd7611efe24234f9f27a5b3751b21113a7.zip
Persist organisation
Diffstat (limited to 'src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java')
-rw-r--r--src/de/fhswf/in/inf/se/projektthemenvergabe/Main.java78
1 files changed, 78 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();
+ }
+ }
}