Role.java
2.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package net.ziemers.swxercise.lg.model.user;
import net.ziemers.swxercise.db.BaseEntity;
import net.ziemers.swxercise.lg.user.enums.RightState;
import javax.persistence.*;
import javax.validation.constraints.NotNull;
import java.util.Collection;
import java.util.HashSet;
/**
* Rollen sind Container für Benutzerrechte (siehe {@link net.ziemers.swxercise.lg.user.enums.RightState}.
* Eine Rolle kann von einer Vaterrolle erben. Somit umfasst diese Rolle auch alle Rechte der Vaterrolle.
*/
@Entity
@NamedQueries({
@NamedQuery(name = "Role.findById", query = "SELECT r FROM Role r WHERE r.id = :id"),
@NamedQuery(name = "Role.findByName", query = "SELECT r FROM Role r WHERE lower(r.name) = lower(:name)")})
public class Role extends BaseEntity {
@NotNull
private String name;
private Collection<RightState> rights = new HashSet<>();
private Role parent = null;
public Role() {}
public Role(final String name) {
setName(name);
}
public Role(final String name, final RightState right) {
this(name);
rights.add(right);
}
public Role(final String name, final String right) {
this(name, RightState.getByName(right));
}
public boolean hasRight(RightState right) {
return rights.contains(right);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Role withName(final String name) {
setName(name);
return this;
}
@ElementCollection(targetClass = RightState.class, fetch = FetchType.EAGER)
//@JoinTable(name = "Role_rights", joinColumns = @JoinColumn(name = "Role_id"))
//@Column(name = "rights")
@Enumerated(EnumType.STRING)
public Collection<RightState> getRights() {
return rights;
}
public void setRights(Collection<RightState> rights) {
this.rights = rights;
}
public boolean addRight(final RightState right) {
// TODO Doubletten verhindern
this.rights.add(right);
return true;
}
@ManyToOne
public Role getParent() {
return parent;
}
public void setParent(Role parent) {
this.parent = parent;
}
}