1 package com.atlassian.jira.web.action.issue;
2
3 import org.ofbiz.core.entity.GenericEntityException;
4 import org.ofbiz.core.entity.GenericValue;
5
6 import com.atlassian.jira.issue.Issue;
7 import com.atlassian.jira.issue.IssueFactory;
8 import com.atlassian.jira.issue.fields.FieldManager;
9 import com.atlassian.jira.issue.fields.screen.FieldScreenRenderLayoutItem;
10 import com.atlassian.jira.issue.link.IssueLinkManager;
11 import com.atlassian.jira.project.Project;
12 import com.atlassian.jira.security.PermissionManager;
13
14
15
16
17
18
19
20
21
22
23
24 public class CreateLinkedIssue extends CreateIssueDetails {
25
26
27 private static final long serialVersionUID = 1L;
28
29 protected final FieldManager fieldManager;
30
31 protected final IssueFactory issueFactory;
32
33 protected final PermissionManager permissionManager;
34
35 private final IssueLinkManager issueLinkManager;
36
37 protected IssueLinkedCreationHelperBean issueLinkedCreationHelperBean;
38
39
40 private Issue originalIssue;
41
42
43 private String originalIssueId;
44
45
46 private String linkTypeId;
47
48 public CreateLinkedIssue(IssueFactory issueFactory, IssueLinkedCreationHelperBean issueLinkedCreationHelperBean, PermissionManager permissionManager, FieldManager fieldManager, IssueLinkManager issueLinkManager) {
49 super(issueFactory, issueLinkedCreationHelperBean);
50 this.permissionManager = permissionManager;
51 this.fieldManager = fieldManager;
52 this.issueFactory = issueFactory;
53 this.issueLinkedCreationHelperBean = issueLinkedCreationHelperBean;
54 this.issueLinkManager = issueLinkManager;
55 }
56
57 public String doDefault() throws Exception {
58
59 Issue issueObject = getIssueObject(getIssue());
60 setOriginalIssue(issueObject);
61 setOriginalIssueId(issueObject.getId().toString());
62
63
64 resetIssue();
65
66
67 setPid(getOriginalIssue().getProjectObject().getId());
68 getIssueObject().setProject(getProject());
69 getIssueObject().setIssueType(getIssueTypeGV());
70
71
72 setIssueDetailsFromOriginalIssue();
73
74 return INPUT;
75 }
76
77
78 public void setIssueDetailsFromOriginalIssue() throws GenericEntityException {
79
80 issueLinkedCreationHelperBean.populateLinkedIssueFields(getOriginalIssue(),
81 getProjectObject(),
82 getIssuetype(),
83 this,
84 getRemoteUser(),
85 getFieldScreenRenderer(),
86 this,
87 this);
88
89 }
90
91 protected String doPostCreationTasks() throws Exception {
92 doLinkWithOriginalIssue();
93 return super.doPostCreationTasks();
94 }
95
96 protected void doLinkWithOriginalIssue() throws Exception {
97 Long linkTypeId = Long.valueOf(getLinkTypeId());
98 Long originalId = Long.valueOf(getOriginalIssueId());
99 issueLinkManager.createIssueLink(originalId, getIssue().getLong("id"), linkTypeId , null, getRemoteUser());
100 }
101
102 public Issue getIssueObject(GenericValue genericValue) {
103 return issueFactory.getIssue(genericValue);
104 }
105
106 public Project getProjectObject() {
107 return getProjectManager().getProjectObj(getPid());
108 }
109
110 public FieldScreenRenderLayoutItem getFieldScreenRenderLayoutItem(String fieldId) {
111 return getFieldScreenRenderer().getFieldScreenRenderLayoutItem(fieldManager.getOrderableField(fieldId));
112 }
113
114 public Issue getOriginalIssue() {
115 return originalIssue;
116 }
117
118 public void setOriginalIssue(Issue originalIssue) {
119 this.originalIssue = originalIssue;
120 }
121
122
123
124
125
126
127
128
129
130 public String getLinkTypeId() {
131 return linkTypeId;
132 }
133
134 public void setLinkTypeId(String linkTypeId) {
135 this.linkTypeId = linkTypeId;
136 }
137
138 public String getOriginalIssueId() {
139 return originalIssueId;
140 }
141
142 public void setOriginalIssueId(String originalIssueId) {
143 this.originalIssueId = originalIssueId;
144 }
145
146 }