1 package com.atlassian.jira.project.impl;
2
3 import java.util.HashMap;
4 import java.util.Iterator;
5 import java.util.Map;
6
7 import webwork.action.ServletActionContext;
8
9 import com.atlassian.jira.plugin.webfragment.JiraWebInterfaceManager;
10 import com.atlassian.jira.plugin.webfragment.model.JiraHelper;
11 import com.atlassian.jira.project.AAdminProjectManager;
12 import com.atlassian.jira.project.AdminProjectManager;
13 import com.atlassian.jira.project.AdminProjectManagerDirectory;
14 import com.atlassian.jira.project.Project;
15 import com.atlassian.jira.project.ProjectManager;
16 import com.atlassian.plugin.web.Condition;
17
18
19
20
21
22
23
24 public class DefaultAdminProjectManagerDirectory implements AdminProjectManagerDirectory {
25
26 private static Map adminProjectManagers = new HashMap();
27 private static Map adminProjectManagersByProject = new HashMap();
28 protected ProjectManager projectManager;
29
30 public DefaultAdminProjectManagerDirectory(ProjectManager _projectManager) {
31 projectManager = _projectManager;
32 }
33
34 public Map addAdminProjectManager(AAdminProjectManager _adminProjectManager) {
35 getAdminProjectManagers().put(_adminProjectManager.getId(), _adminProjectManager);
36 return getAdminProjectManagers();
37 }
38
39 public Map getAdminProjectManagers() {
40 return adminProjectManagers;
41 }
42
43
44
45
46
47 public AdminProjectManager getAdminProjectManager(String _apmKey) {
48 AdminProjectManager adminProjectManager = null;
49 if (!adminProjectManagers.isEmpty()) {
50 adminProjectManager = (AdminProjectManager)adminProjectManagers.get(_apmKey);
51 }
52 return adminProjectManager;
53 }
54
55
56
57
58
59 public AdminProjectManager getDefaultAdminProjectManager(Long _projectId) {
60 AdminProjectManager adminProjectManager = null;
61 Project project = projectManager.getProjectObj(_projectId);
62
63 for (Iterator iterator = adminProjectManagers.values().iterator(); iterator.hasNext() && adminProjectManager == null;) {
64 AdminProjectManager apm = (AdminProjectManager) iterator.next();
65 Condition condition = apm.getDefaultActivationCondition();
66 if (condition != null) {
67 Map context = new HashMap();
68 JiraHelper jh = new JiraHelper(ServletActionContext.getRequest(),project.getGenericValue());
69
70 context.put(JiraWebInterfaceManager.CONTEXT_KEY_HELPER, jh);
71 if (condition.shouldDisplay(context)) {
72 adminProjectManager = apm;
73 }
74 }
75 }
76 return adminProjectManager;
77 }
78
79
80
81
82
83 public AdminProjectManager getAdminProjectManagerByProject(Long _projectId) {
84 AdminProjectManager adminProjectManager = (AdminProjectManager)adminProjectManagersByProject.get(_projectId);
85 if (adminProjectManager == null) {
86 adminProjectManager = getDefaultAdminProjectManager(_projectId);
87 setAdminProjectManagerByProject(_projectId, adminProjectManager);
88 }
89 return adminProjectManager;
90 }
91
92 public void setAdminProjectManagerByProject(Long _id, AdminProjectManager adminProjectManager) {
93 adminProjectManagersByProject.put(_id, adminProjectManager);
94 }
95
96 }