diff options
author | Simon Rettberg | 2015-06-30 18:21:47 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-06-30 18:21:47 +0200 |
commit | a3cb5ed720dec67fd01759c631e69d6a988e3313 (patch) | |
tree | b47ffce0f885112950752d2462ec4cd92c3ea4e9 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java | |
parent | Fixed some comments and variable names (diff) | |
download | tutor-module-a3cb5ed720dec67fd01759c631e69d6a988e3313.tar.gz tutor-module-a3cb5ed720dec67fd01759c631e69d6a988e3313.tar.xz tutor-module-a3cb5ed720dec67fd01759c631e69d6a988e3313.zip |
[server] Refactored permission checking classes a bit
Diffstat (limited to 'dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java')
-rw-r--r-- | dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java | 72 |
1 files changed, 62 insertions, 10 deletions
diff --git a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java index 7f2fa4c5..18f21498 100644 --- a/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java +++ b/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java @@ -2,12 +2,15 @@ package org.openslx.bwlp.sat.database.mappers; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; import java.util.UUID; 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.sat.permissions.User; import org.openslx.bwlp.sat.util.Json; import org.openslx.bwlp.thrift.iface.LecturePermissions; import org.openslx.bwlp.thrift.iface.LectureSummary; @@ -116,22 +119,71 @@ public class DbLecture { ResultSet rs = stmt.executeQuery(); if (!rs.next()) throw new TNotFoundException(); - return resultSetToSummary(rs); + LectureSummary lecture = new LectureSummary(); + lecture.setLectureId(rs.getString("lectureid")); + lecture.setLectureName(rs.getString("lecturename")); + lecture.setImageVersionId(rs.getString("imageversionid")); + lecture.setIsEnabled(rs.getBoolean("isenabled")); + lecture.setStartTime(rs.getLong("starttime")); + lecture.setEndTime(rs.getLong("endtime")); + lecture.setLastUsed(rs.getLong("lastused")); + lecture.setUseCount(rs.getInt("usecount")); + lecture.setOwnerId(rs.getString("ownerid")); + lecture.setUpdaterId(rs.getString("updaterid")); + lecture.setIsExam(rs.getBoolean("isexam")); + lecture.setHasInternetAccess(rs.getBoolean("hasinternetaccess")); + lecture.setDefaultPermissions(DbLecturePermissions.fromResultSetDefault(rs)); + lecture.setUserPermissions(DbLecturePermissions.fromResultSetUser(rs)); + return lecture; } catch (SQLException e) { LOGGER.error("Query failed in DbLecture.getLectureSummary()", e); throw e; } } - private static LectureSummary resultSetToSummary(ResultSet rs) throws SQLException { - LecturePermissions defaultPermissions = DbLecturePermissions.fromResultSetDefault(rs); - LectureSummary entry = new LectureSummary(rs.getString("lectureid"), rs.getString("lecturename"), - rs.getString("imageversionid"), null, rs.getBoolean("isenabled"), rs.getLong("starttime"), - rs.getLong("endtime"), rs.getLong("lastused"), rs.getInt("usecount"), - rs.getString("ownerid"), rs.getString("updaterid"), rs.getBoolean("isexam"), - rs.getBoolean("hasinternetaccess"), defaultPermissions, false); - entry.userPermissions = DbLecturePermissions.fromResultSetUser(rs); - return entry; + public static List<LectureSummary> getAll(UserInfo user, int page) throws SQLException { + try (MysqlConnection connection = Database.getConnection()) { + MysqlStatement stmt = connection.prepareStatement("SELECT" + + " l.lectureid, l.displayname AS lecturename, l.imageversionid, i.imagebaseid," + + " l.isenabled, l.starttime, l.endtime, l.lastused, l.usecount, l.ownerid, l.updaterid," + + " l.isexam, l.hasinternetaccess, l.caneditdefault, l.canadmindefault," + + " i.isenabled AS imgenabled, i.isvalid AS imgvalid, p.canedit, p.canadmin" + + " FROM lecture l " + + " INNER JOIN imageversion i USING (imageversionid)" + + " LEFT JOIN lecturepermission p ON (p.lectureid = l.lectureid AND p.userid = :userid)" + + (User.isStudent(user) ? " WHERE i.isrestricted = 0" : "")); + if (user == null) { + stmt.setString("userid", "-"); + } else { + stmt.setString("userid", user.userId); + } + ResultSet rs = stmt.executeQuery(); + List<LectureSummary> list = new ArrayList<>(100); + while (rs.next()) { + LectureSummary lecture = new LectureSummary(); + lecture.setLectureId(rs.getString("lectureid")); + lecture.setLectureName(rs.getString("lecturename")); + lecture.setImageVersionId(rs.getString("imageversionid")); + lecture.setImageBaseId(rs.getString("imagebaseid")); + lecture.setIsEnabled(rs.getBoolean("isenabled")); + lecture.setStartTime(rs.getLong("starttime")); + lecture.setEndTime(rs.getLong("endtime")); + lecture.setLastUsed(rs.getLong("lastused")); + lecture.setUseCount(rs.getInt("usecount")); + lecture.setOwnerId(rs.getString("ownerid")); + lecture.setUpdaterId(rs.getString("updaterid")); + lecture.setIsExam(rs.getBoolean("isexam")); + lecture.setHasInternetAccess(rs.getBoolean("hasinternetaccess")); + lecture.setDefaultPermissions(DbLecturePermissions.fromResultSetDefault(rs)); + lecture.setUserPermissions(DbLecturePermissions.fromResultSetUser(rs)); + lecture.setIsImageVersionUsable(rs.getBoolean("imgenabled") && rs.getBoolean("imgvalid")); + list.add(lecture); + } + return list; + } catch (SQLException e) { + LOGGER.error("Query failed in DbLecture.getAll()", e); + throw e; + } } } |