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