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
27
28
29
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
43
44
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
68
69
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 }