summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/Updater.java
diff options
context:
space:
mode:
authorSimon Rettberg2016-01-19 11:01:39 +0100
committerSimon Rettberg2016-01-19 11:01:39 +0100
commit6d3bedb39c9b8b34f2c82e8e94b60a525088f5d6 (patch)
tree2d850d8a74707cbf11e2039f6cfa63d17b08b6b1 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/Updater.java
parent[client] more location stuff [wip] (diff)
downloadtutor-module-6d3bedb39c9b8b34f2c82e8e94b60a525088f5d6.tar.gz
tutor-module-6d3bedb39c9b8b34f2c82e8e94b60a525088f5d6.tar.xz
tutor-module-6d3bedb39c9b8b34f2c82e8e94b60a525088f5d6.zip
[server] I'm stupid (add missing classes)
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/Updater.java')
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/Updater.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/Updater.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/Updater.java
new file mode 100644
index 00000000..89bbbf5c
--- /dev/null
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/Updater.java
@@ -0,0 +1,67 @@
+package org.openslx.bwlp.sat.database;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import org.apache.log4j.Logger;
+
+public class Updater {
+
+ private static final Logger LOGGER = Logger.getLogger(Updater.class);
+
+ public static void updateDatabase() throws SQLException {
+ addLocationPrivateField();
+ addLectureLocationMapTable();
+ }
+
+ private static void addLectureLocationMapTable() throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ MysqlStatement tablesStmt = connection.prepareStatement("SHOW TABLES");
+ ResultSet tables = tablesStmt.executeQuery();
+ while (tables.next()) {
+ if (tables.getString(1).equals("lecture_x_location")) {
+ return; // Table exists, don't do anything
+ }
+ }
+ // Add table
+ MysqlStatement tableAddStmt = connection.prepareStatement("CREATE TABLE `lecture_x_location` ("
+ + " `lectureid` char(36) CHARACTER SET ascii COLLATE ascii_bin NOT NULL,"
+ + " `locationid` int(11) NOT NULL,"
+ + " PRIMARY KEY (`lectureid`,`locationid`), KEY locationid (locationid)"
+ + " ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci");
+ tableAddStmt.executeUpdate();
+ // Add constraint
+ MysqlStatement constraintStmt = connection.prepareStatement("ALTER TABLE `lecture_x_location`"
+ + " ADD FOREIGN KEY ( `lectureid` ) REFERENCES `sat`.`lecture` (`lectureid`)"
+ + " ON DELETE CASCADE ON UPDATE CASCADE");
+ constraintStmt.executeUpdate();
+ connection.commit();
+ LOGGER.info("Updated database: Added lecture-location mapping table");
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in Updater.addLectureLocationMapTable()", e);
+ throw e;
+ }
+ }
+
+ private static void addLocationPrivateField() throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ MysqlStatement checkStmt = connection.prepareStatement("DESCRIBE lecture");
+ ResultSet cols = checkStmt.executeQuery();
+ while (cols.next()) {
+ if (cols.getString("Field").equals("islocationprivate")) {
+ return; // Field exists, don't do anything
+ }
+ }
+ // Add field to table
+ MysqlStatement columnAddStmt = connection.prepareStatement("ALTER TABLE lecture"
+ + " ADD islocationprivate TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 AFTER isprivate");
+ columnAddStmt.executeUpdate();
+ connection.commit();
+ LOGGER.info("Updated database: Added is location private field in lecture table");
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in Updater.addLocationPrivateField()", e);
+ throw e;
+ }
+ }
+
+}