View Javadoc

1   package com.atlassian.jira.web.action.issue;
2   
3   import java.util.Iterator;
4   import java.util.List;
5   
6   import org.apache.log4j.Logger;
7   
8   import com.atlassian.jira.config.properties.ApplicationProperties;
9   import com.atlassian.jira.issue.Issue;
10  import com.atlassian.jira.issue.IssueFieldConstants;
11  import com.atlassian.jira.issue.customfields.OperationContext;
12  import com.atlassian.jira.issue.fields.FieldManager;
13  import com.atlassian.jira.issue.fields.OrderableField;
14  import com.atlassian.jira.issue.fields.layout.field.FieldLayout;
15  import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem;
16  import com.atlassian.jira.issue.fields.screen.FieldScreenRenderer;
17  import com.atlassian.jira.issue.fields.screen.FieldScreenRendererFactory;
18  import com.atlassian.jira.project.Project;
19  import com.atlassian.jira.user.util.UserUtil;
20  import com.atlassian.jira.util.EasyList;
21  import com.atlassian.jira.util.ErrorCollection;
22  import com.atlassian.jira.util.I18nHelper;
23  import com.opensymphony.user.User;
24  
25  /**
26   * FQCN : com.atlassian.jira.web.action.issue.IssueLinkedCreationHelperBeanImpl
27   * @author Kaamelot
28   * @since 3.10.1.30
29   * Description : Extends IssueCreationHelperBeanImpl in order to provide method for CreateLinkIssue
30   *
31   */
32  public class IssueLinkedCreationHelperBeanImpl extends IssueCreationHelperBeanImpl implements IssueLinkedCreationHelperBean {
33  
34  	public IssueLinkedCreationHelperBeanImpl(UserUtil userUtil, ApplicationProperties applicationProperties, FieldManager fieldManager,
35  			FieldScreenRendererFactory fieldScreenRendererFactory) {
36  		super(userUtil, applicationProperties, fieldManager, fieldScreenRendererFactory);
37  	}
38  
39  	private static final Logger log = Logger.getLogger(IssueLinkedCreationHelperBeanImpl.class);
40  
41  	/**
42  	 * Populate the issue fields in fieldValuesHolder.
43  	 * Sets the project & issue type of the issue & update the fieldValuesHolder
44  	 * with default values of custom fields where appropriate.
45  	 */
46  	public void populateLinkedIssueFields( final Issue issueObject, 
47  														final Project project, 
48  														final String issuetype, 
49  														final OperationContext operationContext, 
50  														final User remoteUser, 
51  														final FieldScreenRenderer fieldScreenRenderer, 
52  														final ErrorCollection errors, 
53  														final I18nHelper i18n) {
54  
55  		FieldLayout fieldLayout = fieldScreenRenderer.getFieldLayout();
56  		List visibleLayoutItems = fieldLayout.getVisibleLayoutItems(remoteUser, project, EasyList.build(issuetype));
57  		for (Iterator iterator = visibleLayoutItems.iterator(); iterator.hasNext();) {
58  			FieldLayoutItem fieldLayoutItem = (FieldLayoutItem) iterator.next();
59  			OrderableField orderableField = fieldLayoutItem.getOrderableField();
60  
61  			if (isToPopulate(orderableField.getId())) {
62  				orderableField.populateFromIssue(operationContext.getCustomFieldValuesHolder(), issueObject);
63  			}
64  		}
65  	}
66  
67  	/** Is the Field valid to populate the a new Issue
68  	 * - Issue Type is always shown as it is always required, then have not to be populated
69  	 * - Timetracking ahve not to be populated
70  	 */
71  	public boolean isToPopulate(String _fieldId) {
72  		boolean isToPopulate = true;
73  		isToPopulate = !IssueFieldConstants.ISSUE_TYPE.equals(_fieldId);
74  		isToPopulate = isToPopulate && !IssueFieldConstants.TIMETRACKING.equals(_fieldId); 
75  		isToPopulate = isToPopulate && !IssueFieldConstants.RESOLUTION.equals(_fieldId); 
76  		isToPopulate = isToPopulate && !IssueFieldConstants.STATUS.equals(_fieldId); 
77  		return isToPopulate;
78  	}
79  
80  }