summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Bauer2018-12-03 14:25:29 +0100
committerJonathan Bauer2018-12-03 14:25:29 +0100
commit84ee13dbae07b5f29b18a6f6ff2627864da967cd (patch)
treefb2cefd171afde57f395a59567b34b29647ba8b8
parent[server] Updater: Fix netshare table layout (diff)
downloadtutor-module-84ee13dbae07b5f29b18a6f6ff2627864da967cd.tar.gz
tutor-module-84ee13dbae07b5f29b18a6f6ff2627864da967cd.tar.xz
tutor-module-84ee13dbae07b5f29b18a6f6ff2627864da967cd.zip
[server] support predefined network shares
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java33
-rw-r--r--dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java12
2 files changed, 33 insertions, 12 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 1629178b..1d505de6 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
@@ -21,15 +21,16 @@ public class DbLectureNetshare {
if (lectureId == null || lectureId.isEmpty()) {
return;
}
- MysqlStatement delStmt = connection.prepareStatement("DELETE FROM networkshare WHERE lectureid = :lectureid");
+ MysqlStatement delStmt = connection
+ .prepareStatement("DELETE FROM networkshare WHERE lectureid = :lectureid");
delStmt.setString("lectureid", lectureId);
delStmt.executeUpdate();
if (shares == null || shares.isEmpty()) {
return;
}
MysqlStatement addStmt = connection
- .prepareStatement("INSERT IGNORE INTO networkshare (shareid, lectureid, shareuid, sharedata)"
- + " VALUES (DEFAULT, :lectureid, NULL, :sharedata)");
+ .prepareStatement("INSERT IGNORE INTO networkshare (lectureid, sharepresetid, sharedata)"
+ + " VALUES (:lectureid, NULL, :sharedata)");
addStmt.setString("lectureid", lectureId);
for (NetShare share : shares) {
String netshareJson = Json.serialize(share);
@@ -47,17 +48,35 @@ public class DbLectureNetshare {
}
}
- public static List<NetShare> getLectureNetshares(MysqlConnection connection, String lectureId) throws SQLException {
+ public static List<NetShare> getLectureNetshares(MysqlConnection connection, String lectureId)
+ throws SQLException {
List<NetShare> list = new ArrayList<>();
- MysqlStatement netsharestmt = connection
- .prepareStatement("SELECT sharedata FROM networkshare WHERE lectureid = :lectureid");
+ MysqlStatement netsharestmt = connection.prepareStatement(
+ "SELECT 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()) {
- // TODO get the shares saved on slx-admin, if any shareuid aren't null
list.add(Json.deserializeThrift(rs.getString("sharedata"), NetShare.class));
}
return list;
}
+ public static List<NetShare> getPredefinedNetshares() throws SQLException {
+ try (MysqlConnection connection = Database.getConnection()) {
+ List<NetShare> list = new ArrayList<>();
+ MysqlStatement stmt = connection
+ .prepareStatement("SELECT sharedata" + " FROM presetnetworkshare");
+ ResultSet rs = stmt.executeQuery();
+ while (rs.next()) {
+ list.add(Json.deserializeThrift(rs.getString("sharedata"), NetShare.class));
+ }
+ return list;
+ } catch (SQLException e) {
+ LOGGER.error("Query failed in getPredefinedNetshares()", e);
+ throw e;
+ }
+ }
+
}
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
index 347109dc..3d5330a7 100644
--- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
+++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/thrift/ServerHandler.java
@@ -16,6 +16,7 @@ import org.openslx.bwlp.sat.database.mappers.DbImage.DeleteState;
import org.openslx.bwlp.sat.database.mappers.DbImagePermissions;
import org.openslx.bwlp.sat.database.mappers.DbLecture;
import org.openslx.bwlp.sat.database.mappers.DbLectureFilter;
+import org.openslx.bwlp.sat.database.mappers.DbLectureNetshare;
import org.openslx.bwlp.sat.database.mappers.DbLecturePermissions;
import org.openslx.bwlp.sat.database.mappers.DbLocation;
import org.openslx.bwlp.sat.database.mappers.DbLog;
@@ -52,7 +53,6 @@ import org.openslx.bwlp.thrift.iface.LectureSummary;
import org.openslx.bwlp.thrift.iface.LectureWrite;
import org.openslx.bwlp.thrift.iface.Location;
import org.openslx.bwlp.thrift.iface.NetShare;
-import org.openslx.bwlp.thrift.iface.NetShareAuth;
import org.openslx.bwlp.thrift.iface.OperatingSystem;
import org.openslx.bwlp.thrift.iface.Organization;
import org.openslx.bwlp.thrift.iface.PredefinedData;
@@ -797,10 +797,12 @@ public class ServerHandler implements SatelliteServer.Iface {
throw new TInvocationException(InvocationError.INTERNAL_SERVER_ERROR,
"Database failure when querying predefined LDAP filters.");
}
- // Dummy 2
- NetShare ns = new NetShare(NetShareAuth.OTHER_USER, "\\\\server.example.org\\data");
- ns.setShareId(1);
- data.netShares.add(ns);
+ try {
+ data.netShares = DbLectureNetshare.getPredefinedNetshares();
+ } catch (SQLException e) {
+ throw new TInvocationException(InvocationError.INTERNAL_SERVER_ERROR,
+ "Database failure when querying predefined network shares.");
+ }
return data;
}