blob: a4e9598d06f8f0905d5b8fb355634e85251f3abb [file] [log] [blame]
margaretha1a683512017-10-16 20:25:26 +02001package de.ids_mannheim.korap.entity;
2
margaretha61966dd2017-10-26 19:32:21 +02003import java.util.List;
margaretha08bdabe2017-10-17 14:38:49 +02004
margaretha1a683512017-10-16 20:25:26 +02005import javax.persistence.Column;
6import javax.persistence.Entity;
margaretha1f106f62017-10-18 22:27:30 +02007import javax.persistence.EnumType;
8import javax.persistence.Enumerated;
margaretha08bdabe2017-10-17 14:38:49 +02009import javax.persistence.FetchType;
margaretha1a683512017-10-16 20:25:26 +020010import javax.persistence.GeneratedValue;
11import javax.persistence.GenerationType;
12import javax.persistence.Id;
margaretha08bdabe2017-10-17 14:38:49 +020013import javax.persistence.Index;
14import javax.persistence.JoinColumn;
15import javax.persistence.JoinTable;
16import javax.persistence.ManyToMany;
17import javax.persistence.ManyToOne;
margaretha1a683512017-10-16 20:25:26 +020018import javax.persistence.Table;
margaretha08bdabe2017-10-17 14:38:49 +020019import javax.persistence.UniqueConstraint;
margaretha1a683512017-10-16 20:25:26 +020020
margarethaf438c592017-10-25 15:23:50 +020021import de.ids_mannheim.korap.constant.GroupMemberStatus;
margaretha61966dd2017-10-26 19:32:21 +020022import de.ids_mannheim.korap.constant.PredefinedRole;
margaretha1a683512017-10-16 20:25:26 +020023import lombok.Getter;
24import lombok.Setter;
25
margaretha61966dd2017-10-26 19:32:21 +020026/** Describes members of user groups. Only member of predefined role
27 * group admin can see the rest of members.
margaretha08bdabe2017-10-17 14:38:49 +020028 *
29 * @author margaretha
30 * @see UserGroup
31 * @see Role
margaretha61966dd2017-10-26 19:32:21 +020032 * @see PredefinedRole
margaretha08bdabe2017-10-17 14:38:49 +020033 */
margaretha1a683512017-10-16 20:25:26 +020034@Setter
35@Getter
36@Entity
margaretha08bdabe2017-10-17 14:38:49 +020037@Table(name = "user_group_member",
38 indexes = { @Index(unique = true, columnList = "user_id, group_id") })
margaretha1a683512017-10-16 20:25:26 +020039public class UserGroupMember {
40
41 @Id
42 @GeneratedValue(strategy = GenerationType.IDENTITY)
43 private int id;
margaretha1a683512017-10-16 20:25:26 +020044 @Column(name = "user_id")
margaretha1f106f62017-10-18 22:27:30 +020045 private String userId;
margaretha08bdabe2017-10-17 14:38:49 +020046 @Column(name = "created_by")
47 private String createdBy;
48 @Column(name = "deleted_by")
49 private String deletedBy;
margaretha61966dd2017-10-26 19:32:21 +020050
margaretha1f106f62017-10-18 22:27:30 +020051 @Enumerated(EnumType.STRING)
52 private GroupMemberStatus status;
margaretha08bdabe2017-10-17 14:38:49 +020053
54 @ManyToOne(fetch = FetchType.LAZY)
55 @JoinColumn(name = "group_id")
56 private UserGroup group;
57
margaretha61966dd2017-10-26 19:32:21 +020058 /** Information about roles is deemed always necessary to describe a member.
59 *
60 */
61 @ManyToMany(fetch = FetchType.EAGER)
margaretha08bdabe2017-10-17 14:38:49 +020062 @JoinTable(name = "group_member_role",
63 joinColumns = @JoinColumn(name = "group_member_id",
64 referencedColumnName = "id"),
65 inverseJoinColumns = @JoinColumn(name = "role_id",
66 referencedColumnName = "id"),
67 uniqueConstraints = @UniqueConstraint(
68 columnNames = { "group_member_id", "role_id" }))
margaretha61966dd2017-10-26 19:32:21 +020069 private List<Role> roles;
margaretha08bdabe2017-10-17 14:38:49 +020070
margaretha1a683512017-10-16 20:25:26 +020071 @Override
72 public String toString () {
margaretha08bdabe2017-10-17 14:38:49 +020073 return "id=" + id + ", group= " + group + ", userId= " + userId
74 + ", createdBy= " + createdBy + ", deletedBy= " + deletedBy
75 + ", roles=" + roles;
margaretha1a683512017-10-16 20:25:26 +020076 }
77}