1
2
3
4
5
6
7
8
9
10
11 package com.atlassian.jira.group;
12
13
14 import org.apache.log4j.Category;
15 import org.ofbiz.core.entity.GenericValue;
16
17 import com.atlassian.core.user.GroupUtils;
18 import com.atlassian.jira.ManagerFactory;
19 import com.opensymphony.user.Group;
20 import com.opensymphony.user.ImmutableException;
21
22
23
24
25
26
27
28
29
30 public abstract class AGroupProvider implements IGroupProvider {
31
32 protected static final Category log = Category.getInstance(AGroupProvider.class);
33 protected static
34
35 Group projectUserGroup = null;
36 Group projectDevelopperGroup = null;
37 Group projectManagerGroup = null;
38 Group categoryManagerGroup = null;
39 Group administratorsGroup = null;
40
41 public static IGroupProvider getGroupProvider() {
42
43 return (IGroupProvider)null;
44 }
45
46 public AGroupProvider(final GenericValue _project) {
47 GenericValue projectCategory = ManagerFactory.getProjectManager().getProjectCategoryFromProject(_project);
48 String projectCategoryName = projectCategory.getString("name");
49 String projectName = _project.getString("name");
50 retrieveGroups(projectName, projectCategoryName);
51 }
52
53
54
55 public AGroupProvider(final String _projectName) {
56
57 GenericValue project = ManagerFactory.getProjectManager().getProjectByName(_projectName);
58 GenericValue projectCategory = ManagerFactory.getProjectManager().getProjectCategoryFromProject(project);
59 String projectCategoryName = "";
60 if (projectCategory!=null) {
61 projectCategoryName = projectCategory.getString("name");
62 }
63 retrieveGroups(_projectName, projectCategoryName);
64 administratorsGroup = getAdministratorsGroup();
65 }
66
67
68
69 protected void retrieveGroups(final String _projectName) {
70
71 projectUserGroup = getProjectUserGroup(_projectName);
72 projectDevelopperGroup = getProjectDevelopperGroup(_projectName);
73 projectManagerGroup = getProjectManagerGroup(_projectName);
74 administratorsGroup = getAdministratorsGroup(getAdministratorsGroupName());
75 }
76
77
78
79 protected void retrieveGroups(final String _projectName, final String projectCategoryName) {
80 retrieveGroups(_projectName);
81 categoryManagerGroup = getCategoryManagerGroup(projectCategoryName);
82 }
83
84 public abstract String getAdministratorsGroupName();
85
86 public abstract String getCategoryManagerGroupName(final String _patrimonyName);
87
88 public abstract String getProjectManagerGroupName(final String _projectName);
89
90 public abstract String getProjectDevelopperGroupName(final String _projectName);
91
92 public abstract String getProjectUserGroupName(final String _projectName);
93
94 public Group getAdministratorsGroup(final String _administratorsGroupName) {
95 return getNewGroup(_administratorsGroupName);
96 }
97
98 public Group getCategoryManagerGroup(final String _patrimonyName) {
99 return getNewGroup(getCategoryManagerGroupName(_patrimonyName));
100 }
101
102 public Group getProjectManagerGroup(final String _projectName) {
103 return getNewGroup(getProjectManagerGroupName(_projectName));
104 }
105
106 public Group getProjectDevelopperGroup(final String _projectName) {
107 return getNewGroup(getProjectDevelopperGroupName(_projectName));
108 }
109
110 public Group getProjectUserGroup(final String _projectName) {
111 return getNewGroup(getProjectUserGroupName(_projectName));
112 }
113
114 public static Group getNewGroup(final String _groupName) {
115 Group group = null;
116 if (!GroupUtils.existsGroup(_groupName)) {
117 try {
118 group = GroupUtils.getGroupSafely(_groupName);
119 } catch (ImmutableException e) {
120
121 log.error("Error occurred adding group : " + _groupName, e);
122 }
123 } else {
124 log.warn("A group or user named " + _groupName + " already exists: ");
125 group = GroupUtils.getGroup(_groupName);
126 }
127 return group;
128 }
129
130
131
132
133 public Group getAdministratorsGroup() {
134 return administratorsGroup;
135 }
136
137
138
139
140 public Group getCategoryManagerGroup() {
141 return categoryManagerGroup;
142 }
143
144
145
146
147 public Group getProjectDevelopperGroup() {
148 return projectDevelopperGroup;
149 }
150
151
152
153
154 public Group getProjectManagerGroup() {
155 return projectManagerGroup;
156 }
157
158
159
160
161 public Group getProjectUserGroup() {
162 return projectUserGroup;
163 }
164
165 public String[] getAllGroupNames() {
166 return new String[] {
167 projectUserGroup.getName(),
168 projectDevelopperGroup.getName(),
169 projectManagerGroup.getName(),
170 categoryManagerGroup.getName(),
171 administratorsGroup.getName()};
172 }
173
174 public String[] getNonUserGroupNames() {
175 return new String[] {
176 projectDevelopperGroup.getName(),
177 projectManagerGroup.getName(),
178 categoryManagerGroup.getName(),
179 administratorsGroup.getName()};
180 }
181
182 public String[] getAllManagersGroupNames() {
183 return new String[] { projectManagerGroup.getName(), categoryManagerGroup.getName(), administratorsGroup.getName()};
184 }
185
186 public String[] getCategoryManagersGroupNames() {
187 return new String[] { categoryManagerGroup.getName(), administratorsGroup.getName()};
188 }
189
190 }