View Javadoc

1   /*------------------------------------
2    * � Kaamelot - 2006
3    * ------------------------------------
4    * @author Kaamelot
5    * Projet  : Myrddin
6    * Fichier : AdminProjectManager.java
7    * Description :
8    * This Class implements AdminProjectManager contracts.  
9    */
10  package com.atlassian.jira.project.impl;
11  
12  import java.util.ArrayList;
13  import java.util.Collection;
14  import java.util.HashMap;
15  import java.util.Iterator;
16  import java.util.List;
17  import java.util.Map;
18  
19  import org.ofbiz.core.entity.GenericEntityException;
20  import org.ofbiz.core.entity.GenericValue;
21  
22  import com.atlassian.core.user.GroupUtils;
23  import com.atlassian.jira.permission.PermissionSchemeManager;
24  import com.atlassian.jira.plugin.webfragment.conditions.IssueTypeSchemesDefaultCondition;
25  import com.atlassian.jira.project.AAdminProjectManager;
26  import com.atlassian.jira.project.AdminProjectManagerDirectory;
27  import com.atlassian.jira.project.ProjectManager;
28  import com.atlassian.jira.security.PermissionManager;
29  import com.atlassian.jira.security.Permissions;
30  import com.atlassian.jira.user.util.UserUtil;
31  import com.opensymphony.user.User;
32  
33  /**
34   * @FQCN : com.atlassian.jira.project.impl.DefaultAdminProjectManager
35   * @description : DefaultAdminProjectManager provided information concerning Users and Groups for the Project Administration
36   * @author Kaamelot 2006
37   * @since  
38   */
39  public class DefaultAdminProjectManager extends AAdminProjectManager {
40  
41  	/**
42  	 * @param permissionManager
43  	 * @param permissionSchemeManager
44  	 * @param projectManager
45  	 */
46  	public DefaultAdminProjectManager(PermissionManager _permissionManager, PermissionSchemeManager _permissionSchemeManager, ProjectManager _projectManager, final UserUtil _userUtil,
47  				final AdminProjectManagerDirectory _adminProjectManagerDirectory) {
48  		super(_permissionManager, _permissionSchemeManager, _projectManager, _userUtil, _adminProjectManagerDirectory);
49  	}
50  
51  	/**
52  	 * SIGAdminProjectManager will by default usable on IssueTypeSchemeSIGCondition evaluation
53  	 * 
54  	 * @return the FQCN of Condition
55  	 */
56  	public String getDefaultActivationConditionFQCN() {
57  		return IssueTypeSchemesDefaultCondition.class.getName();
58  	}
59  
60  	public Map getManageableGroupParameters() {
61  		Map _params = new HashMap();
62  		_params.put("permission", new Integer(Permissions.BROWSE));
63  		return _params;
64  	}
65  
66  	/**
67  	 * @param _project
68  	 *           Concerned Project
69  	 * @param _params
70  	 *           List of Parameters required to defined the list of Groups (Here Permissions)
71  	 * @return List of Groups identified in Project's PermissionScheme and having mentioned Permission
72  	 */
73  	public Collection getAuthorizedGroups(final GenericValue _project, final Map _params) {
74  		Integer permission = (Integer) _params.get("permission");
75  		int _permission = (permission == null) ? Permissions.BROWSE : permission.intValue();
76  		Collection list = new ArrayList();
77  		List schemes;
78  		try {
79  			schemes = permissionSchemeManager.getSchemes(_project);
80  			for (Iterator si = schemes.iterator(); si.hasNext();) {
81  				GenericValue scheme = (GenericValue) si.next();
82  				List l = permissionSchemeManager.getEntities(scheme);
83  				for (int n = 0; n < l.size(); n++) {
84  					GenericValue schemePermission = (GenericValue) l.get(n);
85  					int pid = schemePermission.getLong("permission").intValue();
86  					if (pid == _permission && schemePermission.getString("type").equals("group")) {
87  						String groupName = schemePermission.getString("parameter");
88  						list.add(GroupUtils.getGroup(groupName));
89  					}
90  				}
91  			}
92  		} catch (GenericEntityException e) {
93  			e.printStackTrace();
94  		} catch (Exception e) {
95  			e.printStackTrace();
96  		}
97  		return list;
98  	}
99  
100 //	/**
101 //	 */
102 //	public Collection getWorkableGroups(GenericValue _project) {
103 //	}
104 
105 	/**
106 	 * Evaluate if the current user can administer Group for its project
107 	 * 
108 	 * @return True, if current has required Permission or Rule
109 	 * @throws Exception
110 	 */
111 	public boolean isHasManagerPermission(final GenericValue _project, final User _user) {
112 		return isAdmin(_user) || isProjectLead(_project, _user) || isProjectAdmin(_project, _user);
113 	}
114 
115 }