blob: 43e17706a75fcf943ab7ab270861ff0dc63d3a24 [file] [log] [blame]
margaretha08bdabe2017-10-17 14:38:49 +02001package de.ids_mannheim.korap.entity;
2
3import java.util.List;
4
margaretha6e796842023-08-17 15:10:45 +02005import jakarta.persistence.CascadeType;
6import jakarta.persistence.Column;
7import jakarta.persistence.Entity;
8import jakarta.persistence.FetchType;
9import jakarta.persistence.GeneratedValue;
10import jakarta.persistence.GenerationType;
11import jakarta.persistence.Id;
12import jakarta.persistence.ManyToMany;
13import jakarta.persistence.OneToMany;
14import jakarta.persistence.Table;
margaretha08bdabe2017-10-17 14:38:49 +020015
16import lombok.Getter;
17import lombok.Setter;
18
margarethaf7abb362018-09-18 20:09:37 +020019/**
20 * Describes user roles for example in managing a group or
21 * virtual corpora of a group.
22 *
margaretha08bdabe2017-10-17 14:38:49 +020023 * @author margaretha
24 * @see Privilege
25 */
26@Setter
27@Getter
28@Entity
29@Table(name = "role")
margarethaf7abb362018-09-18 20:09:37 +020030public class Role implements Comparable<Role> {
margaretha08bdabe2017-10-17 14:38:49 +020031 @Id
margarethabf11d8d2017-10-24 19:31:44 +020032 @GeneratedValue(strategy = GenerationType.IDENTITY)
33 private int id;
margaretha7c38f4c2018-01-18 20:20:56 +010034 @Column(unique = true)
margarethabf11d8d2017-10-24 19:31:44 +020035 private String name;
margaretha08bdabe2017-10-17 14:38:49 +020036
37 @ManyToMany(mappedBy = "roles", fetch = FetchType.LAZY)
38 private List<UserGroupMember> userGroupMembers;
39
margaretha7c38f4c2018-01-18 20:20:56 +010040 @OneToMany(mappedBy = "role", fetch = FetchType.EAGER,
41 cascade = CascadeType.REMOVE)
margarethabf11d8d2017-10-24 19:31:44 +020042 private List<Privilege> privileges;
43
margaretha08bdabe2017-10-17 14:38:49 +020044 public String toString () {
margaretha61966dd2017-10-26 19:32:21 +020045 return "id=" + id + ", name=" + name;
margaretha08bdabe2017-10-17 14:38:49 +020046 }
margaretha18533fd2018-03-28 16:01:06 +020047
48 @Override
49 public int compareTo (Role o) {
margarethaf7abb362018-09-18 20:09:37 +020050 if (this.getId() > o.getId()) {
margaretha18533fd2018-03-28 16:01:06 +020051 return 1;
52 }
margarethaf7abb362018-09-18 20:09:37 +020053 else if (this.getId() < o.getId()) {
margaretha18533fd2018-03-28 16:01:06 +020054 return -1;
55 }
56 return 0;
57 }
margarethaf7abb362018-09-18 20:09:37 +020058
59 @Override
60 public boolean equals (Object obj) {
61 Role r = (Role) obj;
62 if (this.id == r.getId() && this.name.equals(r.getName())) {
63 return true;
64 }
65 return false;
66 }
67
68 @Override
69 public int hashCode () {
70 int hash = 7;
71 hash = 31 * hash + (int) id;
72 hash = 31 * hash + (name == null ? 0 : name.hashCode());
73 return hash;
74 }
margaretha08bdabe2017-10-17 14:38:49 +020075}