1 package com.atlassian.user.impl.memory;
2
3 import com.atlassian.user.*;
4 import com.atlassian.user.impl.DefaultGroup;
5 import com.atlassian.user.impl.DuplicateEntityException;
6 import com.atlassian.user.impl.memory.provider.MemoryProvider;
7 import com.atlassian.user.repository.RepositoryIdentifier;
8 import com.atlassian.user.search.page.Pager;
9 import com.atlassian.user.search.page.PagerUtils;
10 import com.atlassian.user.util.Assert;
11
12 import java.util.List;
13
14
15
16
17 public class MemoryGroupManager implements GroupManager
18 {
19 private final MemoryProvider provider;
20 private final RepositoryIdentifier repository;
21
22 public MemoryGroupManager(RepositoryIdentifier repository, MemoryProvider provider)
23 {
24 this.provider = provider;
25 this.repository = repository;
26 }
27
28 public Group createGroup(String groupName) throws EntityException
29 {
30 if (getGroup(groupName) != null)
31 throw new DuplicateEntityException("The group [" + groupName + "] already exists.");
32
33 Group group = new DefaultGroup(groupName);
34 provider.addGroup(group);
35
36 return group;
37 }
38
39 public void removeGroup(Group group) throws EntityException
40 {
41 provider.removeGroup(group);
42 }
43
44 public void addMembership(Group group, User user)
45 {
46 if (group == null)
47 throw new IllegalArgumentException("Can't add membership for null group");
48 if (getGroup(group.getName()) == null)
49 throw new IllegalArgumentException("Can't add membership for unknown group: [" + group.getName() + "]");
50 provider.addMembership(group, user);
51 }
52
53 public boolean hasMembership(Group group, User user)
54 {
55 return provider.hasMembership(group, user);
56 }
57
58 public Pager<Group> getGroups()
59 {
60 return provider.getGroups();
61
62 }
63
64 public Group getGroup(String groupName)
65 {
66 return provider.getGroup(groupName);
67 }
68
69 public Pager<Group> getGroups(User user) throws EntityException
70 {
71 Assert.notNull(user, "User must not be null");
72 return provider.getGroups(user);
73 }
74
75 public List<Group> getWritableGroups()
76 {
77 return PagerUtils.toList(getGroups());
78 }
79
80 public RepositoryIdentifier getConfiguration()
81 {
82 return repository;
83 }
84
85
86
87
88 public RepositoryIdentifier getIdentifier()
89 {
90 return repository;
91 }
92
93 public RepositoryIdentifier getRepository(Entity entity) throws EntityException
94 {
95 if (getGroup(entity.getName()) != null)
96 return repository;
97
98 return null;
99 }
100
101 public String getApplicationKey()
102 {
103 return null;
104 }
105
106 public boolean isCreative()
107 {
108 return true;
109 }
110
111 public void removeMembership(Group group, User user)
112 {
113 if (group==null || getGroup(group.getName()) == null)
114 throw new IllegalArgumentException("Can't remove membership for unknown group: [" +
115 (group==null ? "null" : group.getName()) + "]");
116 provider.removeMembership(group, user);
117 }
118
119 public Pager<String> getMemberNames(Group group)
120 {
121 return provider.getMemberNames(group);
122 }
123
124 public Pager<String> getLocalMemberNames(Group group) throws EntityException
125 {
126 return provider.getLocalMemberNames(group);
127 }
128
129 public Pager<String> getExternalMemberNames(Group group) throws EntityException
130 {
131 return provider.getExternalMemberNames(group);
132 }
133
134 public boolean isReadOnly(Group group) throws EntityException
135 {
136 return false;
137 }
138
139 public boolean supportsExternalMembership() throws EntityException
140 {
141 return true;
142 }
143 }