Newer
Older
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
package it.inaf.ia2.gms.model;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class GroupNode {
private String groupId;
private String groupName;
private Set<Permission> permissions;
private boolean hasChildren;
public GroupNode() {
permissions = new HashSet<>();
}
public String getGroupId() {
return groupId;
}
public void setGroupId(String groupId) {
this.groupId = groupId;
}
public String getGroupName() {
return groupName;
}
public void setGroupName(String groupName) {
this.groupName = groupName;
}
public List<Permission> getPermissions() {
return Collections.unmodifiableList(new ArrayList<>(permissions));
}
public void setPermissions(Set<Permission> permissions) {
this.permissions = permissions;
}
public void addPermission(Permission permission) {
// remove implied permissions
switch (permission) {
case ADMIN:
permissions.add(permission);
permissions.remove(Permission.MANAGE_MEMBERS);
permissions.remove(Permission.VIEW_MEMBERS);
permissions.remove(Permission.TRAVERSE);
break;
case MANAGE_MEMBERS:
if (!permissions.contains(Permission.ADMIN)) {
permissions.add(permission);
permissions.remove(Permission.VIEW_MEMBERS);
permissions.remove(Permission.TRAVERSE);
}
break;
case VIEW_MEMBERS:
if (!permissions.contains(Permission.ADMIN)
&& !permissions.contains(Permission.MANAGE_MEMBERS)) {
permissions.add(permission);
permissions.remove(Permission.TRAVERSE);
}
break;
case TRAVERSE:
if (permissions.isEmpty()) {
permissions.add(permission);
}
break;
}
}
public boolean isHasChildren() {
return hasChildren;
}
public void setHasChildren(boolean hasChildren) {
this.hasChildren = hasChildren;
}
}