summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2018-12-05 13:55:32 +0100
committerSimon Rettberg2018-12-05 13:55:32 +0100
commitbd2c589d11a6aa93b274e73d4e9b3909a11135dd (patch)
tree6c0451b7524a1722ad41fa6b52d9d1030ff89835
parent[server] Json.deserializeThrift -> Json.deserialize (diff)
downloadtutor-module-bd2c589d11a6aa93b274e73d4e9b3909a11135dd.tar.gz
tutor-module-bd2c589d11a6aa93b274e73d4e9b3909a11135dd.tar.xz
tutor-module-bd2c589d11a6aa93b274e73d4e9b3909a11135dd.zip
[server] Fix saving preset netshares for lecture
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java33
1 files changed, 24 insertions, 9 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java
index 1748f4ba..c60de376 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java
@@ -11,6 +11,7 @@ import org.openslx.bwlp.sat.database.MysqlConnection;
import org.openslx.bwlp.sat.database.MysqlStatement;
import org.openslx.bwlp.thrift.iface.NetShare;
import org.openslx.util.Json;
+import org.openslx.util.Util;
public class DbLectureNetshare {
@@ -28,14 +29,27 @@ public class DbLectureNetshare {
if (shares == null || shares.isEmpty()) {
return;
}
- MysqlStatement addStmt = connection
- .prepareStatement("INSERT IGNORE INTO networkshare (lectureid, sharepresetid, sharedata)"
- + " VALUES (:lectureid, NULL, :sharedata)");
- addStmt.setString("lectureid", lectureId);
+ MysqlStatement addCustomStmt = connection
+ .prepareStatement("INSERT IGNORE INTO networkshare (lectureid, sharedata)"
+ + " VALUES (:lectureid, :sharedata)");
+ MysqlStatement addPresetStmt = connection
+ .prepareStatement("INSERT IGNORE INTO networkshare (lectureid, sharepresetid)"
+ + " VALUES (:lectureid, :shareid)");
+ addCustomStmt.setString("lectureid", lectureId);
+ addPresetStmt.setString("lectureid", lectureId);
for (NetShare share : shares) {
- String netshareJson = Json.serialize(share);
- addStmt.setString("sharedata", netshareJson);
- addStmt.executeUpdate();
+ if (share.shareId > 0) {
+ // Preset
+ addPresetStmt.setInt("shareid", share.shareId);
+ addPresetStmt.executeUpdate();
+ } else {
+ // Custom
+ if (Util.isEmptyString(share.path) || Util.isEmptyString(share.mountpoint))
+ continue;
+ String netshareJson = Json.serialize(share);
+ addCustomStmt.setString("sharedata", netshareJson);
+ addCustomStmt.executeUpdate();
+ }
}
}
@@ -52,13 +66,14 @@ public class DbLectureNetshare {
throws SQLException {
List<NetShare> list = new ArrayList<>();
MysqlStatement netsharestmt = connection.prepareStatement(
- "SELECT IFNULL(pns.sharedata, ns.sharedata) AS sharedata FROM networkshare ns"
+ "SELECT pns.shareid, IFNULL(pns.sharedata, ns.sharedata) AS sharedata FROM networkshare ns"
+ " LEFT JOIN presetnetworkshare pns ON (ns.sharepresetid = pns.shareid)"
+ " WHERE ns.lectureid = :lectureid");
netsharestmt.setString("lectureid", lectureId);
ResultSet rs = netsharestmt.executeQuery();
while (rs.next()) {
- list.add(Json.deserialize(rs.getString("sharedata"), NetShare.class));
+ list.add(Json.deserialize(rs.getString("sharedata"), NetShare.class)
+ .setShareId(rs.getInt("shareid")));
}
return list;
}