summaryrefslogtreecommitdiffstats
path: root/dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
diff options
context:
space:
mode:
authorSimon Rettberg2015-06-30 18:21:47 +0200
committerSimon Rettberg2015-06-30 18:21:47 +0200
commita3cb5ed720dec67fd01759c631e69d6a988e3313 (patch)
treeb47ffce0f885112950752d2462ec4cd92c3ea4e9 /dozentenmodulserver/src/main/java/org/openslx/bwlp/sat/database/mappers/DbLecture.java
parentFixed some comments and variable names (diff)
downloadtutor-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.java72
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;
+ }
}
}