1 package de.dlr.shepard.auth.users.io;
2
3 import de.dlr.shepard.auth.users.entities.User;
4 import de.dlr.shepard.auth.users.entities.UserGroup;
5 import de.dlr.shepard.common.neo4j.io.BasicEntityIO;
6 import de.dlr.shepard.common.util.HasId;
7 import jakarta.validation.constraints.NotNull;
8 import lombok.Data;
9 import lombok.NoArgsConstructor;
10 import org.eclipse.microprofile.openapi.annotations.media.Schema;
11
12 @Data
13 @NoArgsConstructor
14 @Schema(name = "UserGroup")
15 public class UserGroupIO extends BasicEntityIO {
16
17 @NotNull
18 @Schema(required = true)
19 private String[] usernames;
20
21 public UserGroupIO(UserGroup userGroup) {
22 super(userGroup);
23 this.usernames = userGroup.getUsers().stream().map(User::getUsername).toArray(String[]::new);
24 }
25
26 @Override
27 public boolean equals(Object o) {
28 if (this == o) return true;
29 if (o == null) return false;
30 if (!super.equals(o)) return false;
31 if (this.getClass() != o.getClass()) return false;
32 UserGroupIO other = (UserGroupIO) o;
33 return (HasId.areEqualSets(usernames, other.usernames));
34 }
35
36 @Override
37 public int hashCode() {
38 final int prime = 31;
39 int result = super.hashCode();
40 result = prime * result + HasId.hashcodeHelper(usernames);
41 return result;
42 }
43 }