1 package de.dlr.shepard.auth.users.entities;
2
3 import de.dlr.shepard.auth.permission.model.Permissions;
4 import de.dlr.shepard.common.neo4j.entities.BasicEntity;
5 import de.dlr.shepard.common.util.Constants;
6 import de.dlr.shepard.common.util.HasId;
7 import java.util.ArrayList;
8 import java.util.List;
9 import java.util.Objects;
10 import lombok.Data;
11 import lombok.NoArgsConstructor;
12 import lombok.ToString;
13 import org.neo4j.ogm.annotation.NodeEntity;
14 import org.neo4j.ogm.annotation.Relationship;
15 import org.neo4j.ogm.annotation.Relationship.Direction;
16
17 @NodeEntity
18 @Data
19 @ToString(callSuper = true)
20 @NoArgsConstructor
21 public class UserGroup extends BasicEntity {
22
23 @Relationship(type = Constants.IS_IN_GROUP, direction = Direction.INCOMING)
24 private List<User> users = new ArrayList<>();
25
26 @ToString.Exclude
27 @Relationship(type = Constants.HAS_PERMISSIONS)
28 private Permissions permissions;
29
30 public UserGroup(long id) {
31 super(id);
32 }
33
34 @Override
35 public int hashCode() {
36 final int prime = 31;
37 int result = super.hashCode();
38 result = prime * result + Objects.hash(users);
39 result = prime * result + HasId.hashcodeHelper(permissions);
40 return result;
41 }
42
43 @Override
44 public boolean equals(Object obj) {
45 if (this == obj) return true;
46 if (!super.equals(obj)) return false;
47 if (!(obj instanceof UserGroup)) return false;
48 UserGroup other = (UserGroup) obj;
49 return Objects.equals(users, other.users) && HasId.equalsHelper(permissions, other.permissions);
50 }
51 }