88
99package 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 .*;
1612import java .util .function .Function ;
17- import java .util .stream .Collectors ;
1813
1914import jakarta .validation .constraints .NotNull ;
2015import jakarta .validation .constraints .Size ;
4136@ JsonIgnoreProperties (ignoreUnknown = true )
4237public 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 }
0 commit comments