diff options
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java | 63 |
1 files changed, 63 insertions, 0 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 new file mode 100644 index 00000000..1629178b --- /dev/null +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLectureNetshare.java @@ -0,0 +1,63 @@ +package org.openslx.bwlp.sat.database.mappers; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.log4j.Logger; +import org.openslx.bwlp.sat.database.Database; +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; + +public class DbLectureNetshare { + + private static final Logger LOGGER = Logger.getLogger(DbLectureNetshare.class); + + public static void writeNetworkShares(MysqlConnection connection, String lectureId, List<NetShare> shares) + throws SQLException { + if (lectureId == null || lectureId.isEmpty()) { + return; + } + 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)"); + addStmt.setString("lectureid", lectureId); + for (NetShare share : shares) { + String netshareJson = Json.serialize(share); + addStmt.setString("sharedata", netshareJson); + addStmt.executeUpdate(); + } + } + + public static List<NetShare> getLectureNetshares(String lectureId) throws SQLException { + try (MysqlConnection connection = Database.getConnection()) { + return getLectureNetshares(connection, lectureId); + } catch (SQLException e) { + LOGGER.error("Query failed in DbNetshare.getLectureNetshares()", e); + throw e; + } + } + + 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"); + 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; + } + +} |