SEBSERV-335 added room type attribute to join instruction

This commit is contained in:
anhefti 2022-11-07 16:44:17 +01:00
parent 02196951e1
commit 8cf05d21f8
2 changed files with 30 additions and 4 deletions

View file

@ -36,6 +36,18 @@ public final class ClientInstruction {
LEAVE
}
public static enum ProctoringRoomType {
COLLECTING_ROOM("proctoring"),
TOWNHALL("townhall"),
BREAKOUT_ROOM("breakout");
public final String roomTypeName;
ProctoringRoomType(final String roomTypeName) {
this.roomTypeName = roomTypeName;
}
}
public interface SEB_INSTRUCTION_ATTRIBUTES {
public interface SEB_PROCTORING {
public static final String SERVICE_TYPE = "service-type";
@ -60,6 +72,8 @@ public final class ClientInstruction {
public static final String ZOOM_RECEIVE_AUDIO = "zoomReceiveAudio";
public static final String ZOOM_RECEIVE_VIDEO = "zoomReceiveVideo";
public static final String ZOOM_ALLOW_CHAT = "zoomFeatureFlagChat";
public static final String PROCTORING_ROOM_TYPE = "roomType";
}
public interface SEB_RECONFIGURE_SETTINGS {

View file

@ -31,7 +31,9 @@ import ch.ethz.seb.sebserver.gbl.model.exam.ProctoringRoomConnection;
import ch.ethz.seb.sebserver.gbl.model.exam.ProctoringServiceSettings;
import ch.ethz.seb.sebserver.gbl.model.session.ClientConnection;
import ch.ethz.seb.sebserver.gbl.model.session.ClientConnectionData;
import ch.ethz.seb.sebserver.gbl.model.session.ClientInstruction;
import ch.ethz.seb.sebserver.gbl.model.session.ClientInstruction.InstructionType;
import ch.ethz.seb.sebserver.gbl.model.session.ClientInstruction.ProctoringRoomType;
import ch.ethz.seb.sebserver.gbl.model.session.RemoteProctoringRoom;
import ch.ethz.seb.sebserver.gbl.profile.WebServiceProfile;
import ch.ethz.seb.sebserver.gbl.util.Result;
@ -669,7 +671,8 @@ public class ExamProctoringRoomServiceImpl implements ExamProctoringRoomService
examId,
connectionToken,
roomConnection,
examProctoringService);
examProctoringService,
ProctoringRoomType.TOWNHALL);
} catch (final Exception e) {
log.error("Failed to send join for town-hall room assignment to connection: {}", cc);
this.clientConnectionDAO
@ -725,7 +728,8 @@ public class ExamProctoringRoomServiceImpl implements ExamProctoringRoomService
proctoringSettings.examId,
connectionToken,
proctoringConnection,
examProctoringService);
examProctoringService,
ProctoringRoomType.BREAKOUT_ROOM);
}
} catch (final Exception e) {
log.error("Failed to send join to break-out room: {} connection: {}",
@ -790,7 +794,8 @@ public class ExamProctoringRoomServiceImpl implements ExamProctoringRoomService
proctoringSettings.examId,
clientConnection.clientConnection.connectionToken,
proctoringConnection,
examProctoringService);
examProctoringService,
ProctoringRoomType.COLLECTING_ROOM);
} catch (final Exception e) {
log.error("Failed to send proctoring room join instruction to client: {}", connectionToken, e);
@ -802,7 +807,8 @@ public class ExamProctoringRoomServiceImpl implements ExamProctoringRoomService
final Long examId,
final String connectionToken,
final ProctoringRoomConnection proctoringConnection,
final ExamProctoringService examProctoringService) {
final ExamProctoringService examProctoringService,
final ProctoringRoomType roomType) {
if (log.isDebugEnabled()) {
log.debug("Register proctoring join instruction for connection: {}, room: {}",
@ -813,6 +819,12 @@ public class ExamProctoringRoomServiceImpl implements ExamProctoringRoomService
final Map<String, String> attributes = examProctoringService
.createJoinInstructionAttributes(proctoringConnection);
if (roomType != null) {
attributes.put(
ClientInstruction.SEB_INSTRUCTION_ATTRIBUTES.SEB_PROCTORING.PROCTORING_ROOM_TYPE,
roomType.roomTypeName);
}
this.sebInstructionService
.registerInstruction(
examId,