diff options
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java | 33 |
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; } |