1 package com.atlassian.jira.function.issue;
2
3 import java.sql.Timestamp;
4 import java.util.Collection;
5 import java.util.List;
6
7 import org.ofbiz.core.entity.GenericDelegator;
8 import org.ofbiz.core.util.UtilDateTime;
9
10 import com.atlassian.jira.ComponentManager;
11 import com.atlassian.jira.ManagerFactory;
12 import com.atlassian.jira.issue.CustomFieldManager;
13 import com.atlassian.jira.issue.Issue;
14 import com.atlassian.jira.issue.IssueFieldConstants;
15 import com.atlassian.jira.issue.ModifiedValue;
16 import com.atlassian.jira.issue.fields.CustomField;
17 import com.atlassian.jira.issue.fields.OrderableField;
18 import com.atlassian.jira.issue.fields.layout.field.FieldLayoutItem;
19 import com.atlassian.jira.issue.util.DefaultIssueChangeHolder;
20 import com.atlassian.jira.issue.util.IssueChangeHolder;
21 import com.atlassian.jira.project.ProjectManager;
22
23 public class FunctionHelper {
24
25
26 protected static CustomFieldManager cfMgr = ManagerFactory.getCustomFieldManager();
27 protected static ProjectManager prjMgr = ManagerFactory.getProjectManager();
28 protected static GenericDelegator delegator = GenericDelegator.getGenericDelegator("default");
29
30
31 public static List updateCustomFieldDate(final Issue _issue, final String _customFieldName , final Timestamp _timestamp, final boolean _override) {
32 IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
33
34 CustomField cf = cfMgr.getCustomFieldObjectByName(_customFieldName);
35 ModifiedValue modifiedValue = new ModifiedValue(_issue.getCustomFieldValue(cf), _timestamp);
36
37 if (_override || cf.getValue(_issue)==null) {
38 cf.updateValue(null,_issue, modifiedValue,changeHolder);
39 }
40 return changeHolder.getChangeItems();
41 }
42
43
44 public static List updateCustomFieldDate(final Issue _issue, final String _customFieldName , final Timestamp _timestamp) {
45 return updateCustomFieldDate(_issue,_customFieldName,_timestamp, true);
46 }
47
48
49
50
51
52 public static List setIssueNotifiable(final Issue _issue, final String _cfName) {
53 return updateCustomFieldDate(_issue,_cfName,UtilDateTime.nowTimestamp());
54 }
55
56
57
58
59
60
61
62 private static void updateIssueFieldVersion(final Issue _issue, final String _fieldName, final Collection _values) throws Exception {
63 IssueChangeHolder changeHolder = new DefaultIssueChangeHolder();
64 ModifiedValue modifiedValue = new ModifiedValue(_issue.getFixVersions(), _values);
65
66 OrderableField fieldVersion = (OrderableField) ComponentManager.getInstance().getFieldManager().getField(_fieldName);
67 FieldLayoutItem fieldLayoutItem = ComponentManager.getInstance().getFieldLayoutManager().getFieldLayout(_issue.getGenericValue()).getFieldLayoutItem(fieldVersion);
68
69 fieldVersion.updateValue(fieldLayoutItem, _issue, modifiedValue, changeHolder);
70 }
71
72
73
74
75
76 public static void updateIssueFieldFixForVersion(final Issue _issue, Collection _values) {
77 try {
78 updateIssueFieldVersion(_issue, IssueFieldConstants.FIX_FOR_VERSIONS, _values);
79 } catch (Exception e) {
80 e.printStackTrace();
81 }
82 }
83
84
85
86
87
88 public static void updateIssueFieldAffectedVersion(final Issue _issue, Collection _values) {
89 try {
90 updateIssueFieldVersion(_issue, IssueFieldConstants.AFFECTED_VERSIONS, _values);
91 } catch (Exception e) {
92 e.printStackTrace();
93 }
94 }
95
96 }