View Javadoc

1   package com.atlassian.jira.portal;
2   
3   import java.util.Map;
4   import java.util.TreeMap;
5   
6   import org.apache.log4j.Category;
7   
8   import com.atlassian.configurable.ValuesGenerator;
9   import com.atlassian.jira.ComponentManager;
10  import com.atlassian.jira.ManagerFactory;
11  import com.atlassian.jira.config.KaamelotKeys;
12  import com.atlassian.jira.config.properties.ApplicationProperties;
13  import com.atlassian.jira.security.JiraAuthenticationContext;
14  import com.opensymphony.user.EntityNotFoundException;
15  import com.opensymphony.user.User;
16  import com.opensymphony.user.UserManager;
17  
18  /**
19   * FQCN : com.atlassian.jira.portal.AutoTransitionServiceSearcherValuesGenerator
20   * @author Kaamelot
21   * @since 3.10.1.30
22   * Description : Provides a list of User usable as Searcher in AutorTransitionService 
23   * - Current Remote User (an Administrator account)
24   * - User mentioned in AutoTransitionService Settings
25   */
26  public class AutoTransitionServiceSearcherValuesGenerator implements ValuesGenerator {
27  
28  	protected final static Category log = Category.getInstance(AutoTransitionServiceSearcherValuesGenerator.class);
29  	
30  	protected static ApplicationProperties applicationProperties = ManagerFactory.getApplicationProperties();
31  
32  	protected static UserManager userManager = (UserManager) ComponentManager.getComponentInstanceOfType(UserManager.class);
33  	
34  	/** @return Map of User Name
35  	 */
36  	public Map getValues(Map arg0) {
37        Map values = new TreeMap();
38        appendUser(values,getRemoteUser());
39        appendUser(values,getDefaultSearcher());
40  		return values;
41  	}
42  	
43  	/**
44  	 * @param _values Map to update
45  	 * @param _user User to add as valid Values
46  	 */
47  	protected void appendUser(Map _values, User _user) {
48  		if (_user != null) {
49  	      _values.put(_user.getName(), _user.getFullName());
50  		}
51  	}
52  	
53  	/**
54  	 * @return Current Remote User (Normally an Administrator)
55  	 */
56  	protected User getRemoteUser() {
57  		JiraAuthenticationContext authenticationContext = (JiraAuthenticationContext) ComponentManager.getComponentInstanceOfType(JiraAuthenticationContext.class);
58  		return authenticationContext.getUser();
59  	}
60  	
61  	/**
62  	 * @return User provided by Settings
63  	 */
64  	protected User getDefaultSearcher() {
65  		String defaultSearcher = applicationProperties.getString(KaamelotKeys.DEFAULT_AUTO_TRANSITION_SERVICE_SEARCHER_USER);
66  		User defaultSearcherUser = null;
67  		try {
68  			defaultSearcherUser = userManager.getUser(defaultSearcher);
69  		} catch (EntityNotFoundException e) {
70  		     log.error("Service configuration error: cannot find user (" + defaultSearcher + ").");
71  		     return null;
72  		}		
73  		return defaultSearcherUser;
74  	}
75  	
76  
77  }