1 package com.atlassian.jira.workflow.function;
2
3 import java.util.Collection;
4 import java.util.Iterator;
5 import java.util.Map;
6
7 import com.atlassian.jira.ComponentManager;
8 import com.atlassian.jira.function.issue.FunctionHelper;
9 import com.atlassian.jira.issue.Issue;
10 import com.atlassian.jira.issue.MutableIssue;
11 import com.atlassian.jira.project.version.VersionManager;
12 import com.opensymphony.module.propertyset.PropertySet;
13 import com.opensymphony.workflow.FunctionProvider;
14 import com.opensymphony.workflow.WorkflowException;
15
16
17
18
19
20
21
22
23 public abstract class APropagateVersion extends ATransitionFunction implements FunctionProvider {
24 protected VersionManager versionManager = ComponentManager.getInstance().getVersionManager();
25
26
27
28
29 public void execute(Map transientVars, Map args, PropertySet ps) throws WorkflowException {
30 init(transientVars, args, ps);
31 propagateVersion();
32 }
33
34
35
36
37 protected void propagateVersion() {
38 Collection versions = getIssue().getFixVersions();
39 Collection linkedIssues = getLinkedIssues(getIssue());
40 propagateVersion(versions,linkedIssues);
41 }
42
43
44
45
46
47 protected abstract Collection getVersions(Issue _issue);
48
49
50
51
52
53 protected abstract Collection getLinkedIssues(Issue _issue);
54
55
56
57
58 protected void propagateVersion(Collection _versions, Collection _linkedIssues) {
59 for (Iterator it = _linkedIssues.iterator(); it.hasNext();) {
60 MutableIssue linkedIssue = (MutableIssue) it.next();
61 FunctionHelper.updateIssueFieldFixForVersion(linkedIssue, _versions);
62 }
63 }
64
65 }