View Javadoc

1   /* ------------------------------------
2    * © Kaamelot - 2006
3    * ------------------------------------
4    * Projet  : KaamelotAddOn
5    * Fichier : AGroupProvider.java
6    * $Id$ 
7    * $Date$ 
8    * $Log$
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   * @author Kaamelot - V.Thoulé - 2006
24   * <b>Description :</b><br/>
25   * Gestion des Groupes pour un nouveau Projet
26   * @version $Id$
27   * @history - 25 Feb 2006 - Class Creation
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  //		IGroupProvider = IGroupProvider
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  		// Retrieve or Create Groups for new Project
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  		// Create Groups for new Project
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 				//				addError("addName", "Error occurred adding group : " + addName);
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 	 * @return
132 	 */
133 	public Group getAdministratorsGroup() {
134 		return administratorsGroup;
135 	}
136 
137 	/**
138 	 * @return
139 	 */
140 	public Group getCategoryManagerGroup() {
141 		return categoryManagerGroup;
142 	}
143 
144 	/**
145 	 * @return
146 	 */
147 	public Group getProjectDevelopperGroup() {
148 		return projectDevelopperGroup;
149 	}
150 
151 	/**
152 	 * @return
153 	 */
154 	public Group getProjectManagerGroup() {
155 		return projectManagerGroup;
156 	}
157 
158 	/**
159 	 * @return
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 }