Skip to content

Commit 3e5fd9c

Browse files
committed
SEBSERV-596, SEBSP-172, SEBSP-173 finished implementation still testing
1 parent 25e5dea commit 3e5fd9c

File tree

54 files changed

+932
-743
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+932
-743
lines changed

src/main/java/ch/ethz/seb/sps/domain/Domain.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
/** Defines the global names of the domain model and domain model fields.
66
* This shall be used as a static overall domain model names reference within SEB Server Web-Service as well as within the integrated GUI
77
* This file is generated by the ch.ethz.seb.sps.generator.DomainModelNameReferencePlugin and must not be edited manually.**/
8-
@Generated(value="org.mybatis.generator.api.MyBatisGenerator",comments="ch.ethz.seb.sps.generator.DomainModelNameReferencePlugin",date="2024-09-03T11:11:55.294+02:00")
8+
@Generated(value="org.mybatis.generator.api.MyBatisGenerator",comments="ch.ethz.seb.sps.generator.DomainModelNameReferencePlugin",date="2024-11-18T10:46:20.562+01:00")
99
public interface Domain {
1010

1111
interface USER {
@@ -51,11 +51,13 @@ interface EXAM {
5151
String ATTR_URL = "url";
5252
String ATTR_TYPE = "type";
5353
String ATTR_OWNER = "owner";
54+
String ATTR_SUPPORTER = "supporter";
5455
String ATTR_CREATION_TIME = "creationTime";
5556
String ATTR_LAST_UPDATE_TIME = "lastUpdateTime";
5657
String ATTR_TERMINATION_TIME = "terminationTime";
5758
String ATTR_START_TIME = "startTime";
5859
String ATTR_END_TIME = "endTime";
60+
String ATTR_DELETION_TIME = "deletionTime";
5961
}
6062

6163
interface SEB_GROUP {
@@ -87,6 +89,7 @@ interface SESSION {
8789
String ATTR_CREATION_TIME = "creationTime";
8890
String ATTR_LAST_UPDATE_TIME = "lastUpdateTime";
8991
String ATTR_TERMINATION_TIME = "terminationTime";
92+
String ATTR_ENCRYPTION_KEY = "encryptionKey";
9093
}
9194

9295
interface SCREENSHOT_DATA {

src/main/java/ch/ethz/seb/sps/domain/api/API.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ public enum ScreenshotMetadataType {
127127
public static final String CLIENT_ACCESS_ENDPOINT = "/clientaccess";
128128

129129
public static final String ADMIN_SESSION_ENDPOINT = "/session";
130+
public static final String SESSION_ENCRYPT_KEY_ENDPOINT = "/encrypt-key";
130131
public static final String ACTIVE_COUNTS_ENDPOINT = "/active_counts";
131132
public static final String GROUP_HEADER_UUID = "seb_group_uuid";
132133
public static final String SESSION_HEADER_UUID = "seb_session_uuid";
@@ -135,6 +136,8 @@ public enum ScreenshotMetadataType {
135136
public static final String SESSION_HEADER_SEB_MACHINE_NAME = "seb_machine_name";
136137
public static final String SESSION_HEADER_SEB_OS = "seb_os_name";
137138
public static final String SESSION_HEADER_SEB_VERSION = "seb_version";
139+
public static final String SESSION_HEADER_ENCRYPT_KEY = "seb_session_encrypt_key";
140+
138141

139142
public static final String SPS_SERVER_HEALTH = "sps_server_health";
140143

src/main/java/ch/ethz/seb/sps/domain/api/POSTMapper.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,7 @@
99
package ch.ethz.seb.sps.domain.api;
1010

1111
import java.nio.CharBuffer;
12-
import java.util.Arrays;
13-
import java.util.Base64;
14-
import java.util.Collections;
15-
import java.util.List;
16-
import java.util.Locale;
17-
import java.util.Map;
18-
import java.util.Set;
12+
import java.util.*;
1913
import java.util.function.Function;
2014
import java.util.stream.Collectors;
2115

@@ -256,4 +250,22 @@ public <T extends POSTMapper> T put(final String key, final String name) {
256250
this.params.put(key, Arrays.asList(name));
257251
return (T) this;
258252
}
253+
254+
public String getUUID(String attributeName, boolean generate) {
255+
if (StringUtils.isBlank(attributeName)) {
256+
return generate ? UUID.randomUUID().toString() : null;
257+
}
258+
259+
String uuid = getString(attributeName);
260+
if (StringUtils.isBlank(attributeName)) {
261+
return generate ? UUID.randomUUID().toString() : null;
262+
} else {
263+
try {
264+
return UUID.fromString(uuid).toString();
265+
} catch (final Exception e) {
266+
log.warn("Failed to parse UUID: {}", uuid);
267+
return generate ? UUID.randomUUID().toString() : null;
268+
}
269+
}
270+
}
259271
}

src/main/java/ch/ethz/seb/sps/domain/model/EntityType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import jakarta.annotation.Generated;
44

5-
@Generated(value="org.mybatis.generator.api.MyBatisGenerator",comments="ch.ethz.seb.sps.generator.DomainModelNameReferencePlugin",date="2024-09-03T11:11:55.375+02:00")
5+
@Generated(value="org.mybatis.generator.api.MyBatisGenerator",comments="ch.ethz.seb.sps.generator.DomainModelNameReferencePlugin",date="2024-11-18T10:46:20.589+01:00")
66
public enum EntityType {
77
USER,
88
CLIENT_ACCESS,

src/main/java/ch/ethz/seb/sps/domain/model/service/Exam.java

Lines changed: 48 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,8 @@
88

99
package ch.ethz.seb.sps.domain.model.service;
1010

11-
import java.util.Collection;
12-
import java.util.Collections;
13-
import java.util.Comparator;
14-
import java.util.List;
15-
import java.util.Objects;
11+
import java.util.*;
1612
import java.util.function.Function;
17-
import java.util.stream.Collectors;
1813

1914
import jakarta.validation.constraints.NotNull;
2015
import jakarta.validation.constraints.Size;
@@ -41,8 +36,6 @@
4136
@JsonIgnoreProperties(ignoreUnknown = true)
4237
public class Exam implements Entity, OwnedEntity, WithNameDescription, WithEntityPrivileges, WithLifeCycle {
4338

44-
public static final String ATTR_USER_IDS = "userUUIDs";
45-
4639
@Schema(accessMode = Schema.AccessMode.READ_ONLY)
4740
@JsonProperty(EXAM.ATTR_ID)
4841
public final Long id;
@@ -71,6 +64,9 @@ public class Exam implements Entity, OwnedEntity, WithNameDescription, WithEntit
7164
@Schema(accessMode = Schema.AccessMode.READ_ONLY)
7265
@JsonProperty(EXAM.ATTR_OWNER)
7366
public final String owner;
67+
68+
@JsonProperty(EXAM.ATTR_SUPPORTER)
69+
public final Collection<String> supporter;
7470

7571
@Schema(accessMode = Schema.AccessMode.READ_ONLY)
7672
@JsonProperty(EXAM.ATTR_CREATION_TIME)
@@ -89,8 +85,10 @@ public class Exam implements Entity, OwnedEntity, WithNameDescription, WithEntit
8985

9086
@JsonProperty(EXAM.ATTR_END_TIME)
9187
public final Long endTime;
92-
@JsonProperty(ATTR_USER_IDS)
93-
public final Collection<String> userIds;
88+
89+
@JsonProperty(EXAM.ATTR_DELETION_TIME)
90+
public final Long deletionTime;
91+
9492
@JsonIgnore
9593
public final Collection<EntityPrivilege> entityPrivileges;
9694

@@ -103,12 +101,13 @@ public Exam(
103101
@JsonProperty(EXAM.ATTR_URL) final String url,
104102
@JsonProperty(EXAM.ATTR_TYPE) final String type,
105103
@JsonProperty(EXAM.ATTR_OWNER) final String owner,
106-
@JsonProperty(ATTR_USER_IDS) final Collection<String> userIds,
104+
@JsonProperty(EXAM.ATTR_SUPPORTER) Collection<String> supporter,
107105
@JsonProperty(EXAM.ATTR_CREATION_TIME) final Long creationTime,
108106
@JsonProperty(EXAM.ATTR_LAST_UPDATE_TIME) final Long lastUpdateTime,
109107
@JsonProperty(EXAM.ATTR_TERMINATION_TIME) final Long terminationTime,
110108
@JsonProperty(EXAM.ATTR_START_TIME) final Long startTime,
111-
@JsonProperty(EXAM.ATTR_END_TIME) final Long endTime) {
109+
@JsonProperty(EXAM.ATTR_END_TIME) final Long endTime,
110+
@JsonProperty(EXAM.ATTR_DELETION_TIME) final Long deletionTime) {
112111

113112
this.id = id;
114113
this.uuid = uuid;
@@ -117,13 +116,14 @@ public Exam(
117116
this.url = url;
118117
this.type = type;
119118
this.owner = owner;
119+
this.supporter = Utils.immutableCollectionOf(supporter);
120120
this.creationTime = creationTime;
121121
this.lastUpdateTime = lastUpdateTime;
122122
this.terminationTime = terminationTime;
123123
this.startTime = startTime;
124124
this.endTime = endTime;
125+
this.deletionTime = deletionTime;
125126
this.entityPrivileges = null;
126-
this.userIds = Utils.immutableCollectionOf(userIds);
127127
}
128128

129129
public Exam(
@@ -134,12 +134,13 @@ public Exam(
134134
final String url,
135135
final String type,
136136
final String owner,
137-
final Collection<String> userIds,
137+
final Collection<String> supporter,
138138
final Long creationTime,
139139
final Long lastUpdateTime,
140140
final Long terminationTime,
141141
final Long startTime,
142-
final Long endTime,
142+
final Long endTime,
143+
final Long deletionTime,
143144
final Collection<EntityPrivilege> entityPrivileges) {
144145

145146
this.id = id;
@@ -149,13 +150,14 @@ public Exam(
149150
this.url = url;
150151
this.type = type;
151152
this.owner = owner;
153+
this.supporter = Utils.immutableCollectionOf(supporter);
152154
this.creationTime = creationTime;
153155
this.lastUpdateTime = lastUpdateTime;
154156
this.terminationTime = terminationTime;
155157
this.startTime = startTime;
156158
this.endTime = endTime;
159+
this.deletionTime = deletionTime;
157160
this.entityPrivileges = Utils.immutableCollectionOf(entityPrivileges);
158-
this.userIds = Utils.immutableCollectionOf(userIds);
159161
}
160162

161163
@Override
@@ -227,6 +229,18 @@ public Long getTerminationTime() {
227229
return this.terminationTime;
228230
}
229231

232+
public String getOwner() {
233+
return owner;
234+
}
235+
236+
public Collection<String> getSupporter() {
237+
return supporter;
238+
}
239+
240+
public Long getDeletionTime() {
241+
return deletionTime;
242+
}
243+
230244
@Override
231245
public Collection<EntityPrivilege> getEntityPrivileges() {
232246
return this.entityPrivileges;
@@ -251,42 +265,30 @@ public boolean equals(final Object obj) {
251265

252266
@Override
253267
public String toString() {
254-
final StringBuilder builder = new StringBuilder();
255-
builder.append("exam [id=");
256-
builder.append(this.id);
257-
builder.append(", uuid=");
258-
builder.append(this.uuid);
259-
builder.append(", name=");
260-
builder.append(this.name);
261-
builder.append(", description=");
262-
builder.append(this.description);
263-
builder.append(", url=");
264-
builder.append(this.url);
265-
builder.append(", type=");
266-
builder.append(this.type);
267-
builder.append(", owner=");
268-
builder.append(this.owner);
269-
builder.append(", creationTime=");
270-
builder.append(this.creationTime);
271-
builder.append(", lastUpdateTime=");
272-
builder.append(this.lastUpdateTime);
273-
builder.append(", terminationTime=");
274-
builder.append(this.terminationTime);
275-
builder.append(", startTime=");
276-
builder.append(this.startTime);
277-
builder.append(", endTime=");
278-
builder.append(this.endTime);
279-
builder.append(", entityPrivileges=");
280-
builder.append(this.entityPrivileges);
281-
builder.append("]");
282-
return builder.toString();
268+
return "Exam{" +
269+
"id=" + id +
270+
", uuid='" + uuid + '\'' +
271+
", name='" + name + '\'' +
272+
", description='" + description + '\'' +
273+
", url='" + url + '\'' +
274+
", type='" + type + '\'' +
275+
", owner='" + owner + '\'' +
276+
", supporter=" + supporter +
277+
", creationTime=" + creationTime +
278+
", lastUpdateTime=" + lastUpdateTime +
279+
", terminationTime=" + terminationTime +
280+
", startTime=" + startTime +
281+
", endTime=" + endTime +
282+
", deletionTime=" + deletionTime +
283+
", entityPrivileges=" + entityPrivileges +
284+
'}';
283285
}
284286

285287
public static final Function<Collection<Exam>, List<Exam>> examSort(final String sort) {
286288

287289
final String sortBy = PageSortOrder.decode(sort);
288290
return exams -> {
289-
final List<Exam> list = exams.stream().collect(Collectors.toList());
291+
final List<Exam> list = new ArrayList<>(exams);
290292
if (StringUtils.isBlank(sort)) {
291293
return list;
292294
}

src/main/java/ch/ethz/seb/sps/domain/model/service/Session.java

Lines changed: 22 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ public enum ImageFormat {
3939
public final String formatName;
4040
public final String mimeType;
4141

42-
private ImageFormat(
42+
ImageFormat(
4343
final int formatCode,
4444
final String formatName,
4545
final String mimeType) {
@@ -51,26 +51,25 @@ private ImageFormat(
5151

5252
public static ImageFormat valueOf(final int code) {
5353
final ImageFormat[] values = ImageFormat.values();
54-
for (int i = 0; i < values.length; i++) {
55-
if (code == values[i].code) {
56-
return values[i];
54+
for (ImageFormat value : values) {
55+
if (code == value.code) {
56+
return value;
5757
}
5858
}
5959
return ImageFormat.PNG;
6060
}
6161

6262
public static ImageFormat byName(final String format) {
6363
final ImageFormat[] values = ImageFormat.values();
64-
for (int i = 0; i < values.length; i++) {
65-
if (Objects.equals(format, values[i].formatName)) {
66-
return values[i];
64+
for (ImageFormat value : values) {
65+
if (Objects.equals(format, value.formatName)) {
66+
return value;
6767
}
6868
}
6969
return ImageFormat.PNG;
7070
}
7171

7272
static String[] getAvailableFormats() {
73-
// TODO Auto-generated method stub
7473
return null;
7574
}
7675

@@ -239,41 +238,26 @@ public boolean equals(final Object obj) {
239238

240239
@Override
241240
public String toString() {
242-
final StringBuilder builder = new StringBuilder();
243-
builder.append("Session [id=");
244-
builder.append(this.id);
245-
builder.append(", groupId=");
246-
builder.append(this.groupId);
247-
builder.append(", uuid=");
248-
builder.append(this.uuid);
249-
builder.append(", clientName=");
250-
builder.append(this.clientName);
251-
builder.append(", clientIP=");
252-
builder.append(this.clientIP);
253-
builder.append(", clientMachineName=");
254-
builder.append(this.clientMachineName);
255-
builder.append(", clientOSName=");
256-
builder.append(this.clientOSName);
257-
builder.append(", clientVersion=");
258-
builder.append(this.clientVersion);
259-
builder.append(", imageFormat=");
260-
builder.append(this.imageFormat);
261-
builder.append(", creationTime=");
262-
builder.append(this.creationTime);
263-
builder.append(", lastUpdateTime=");
264-
builder.append(this.lastUpdateTime);
265-
builder.append(", terminationTime=");
266-
builder.append(this.terminationTime);
267-
builder.append("]");
268-
return builder.toString();
241+
return "Session{" +
242+
"id=" + id +
243+
", groupId=" + groupId +
244+
", uuid='" + uuid + '\'' +
245+
", clientName='" + clientName + '\'' +
246+
", clientIP='" + clientIP + '\'' +
247+
", clientMachineName='" + clientMachineName + '\'' +
248+
", clientOSName='" + clientOSName + '\'' +
249+
", clientVersion='" + clientVersion + '\'' +
250+
", imageFormat=" + imageFormat +
251+
", creationTime=" + creationTime +
252+
", lastUpdateTime=" + lastUpdateTime +
253+
", terminationTime=" + terminationTime +
254+
'}';
269255
}
270256

271257
public static Comparator<Session> getComparator(final String field, final boolean descending) {
272258
Comparator<Session> result = DEFAULT_COMPARATOR;
273259

274-
if (field == null) {
275-
result = DEFAULT_COMPARATOR;
276-
} else if (SESSION.ATTR_CLIENT_NAME.equals(field)) {
260+
if (SESSION.ATTR_CLIENT_NAME.equals(field)) {
277261
result = CLIENT_NAME_COMPARATOR;
278262
}
279263

@@ -295,7 +279,6 @@ public int compare(final Session s1, final Session s2) {
295279
public int compare(final Session s1, final Session s2) {
296280
return StringUtils.compare(s1.clientName, s2.clientName, true);
297281
}
298-
299282
};
300283

301284
}

0 commit comments

Comments
 (0)