View Javadoc

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  	// Retrieve Required Manager and Delegator
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  		// Retrieve specified Custom Field
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  	/** Update specified CustomField Date for Notifiable Update  
49  	 * @param _issue Issue to Update for Close Event
50  	 * @param _cfName CustomField Name  
51  	 */
52  	public static List setIssueNotifiable(final Issue _issue, final  String _cfName) {
53  		return updateCustomFieldDate(_issue,_cfName,UtilDateTime.nowTimestamp());
54  	}
55  	
56  	/** Updates Versions references for an Issue 
57  	 * @param _issue Issue to update
58  	 * @param _fieldName Version FieldId concerned
59  	 * @param _values List of Version
60  	 * @throws Exception
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  	/** Updates Fix Versions references for an Issue 
73  	 * @param _issue Issue to update
74  	 * @param _values List of Version
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  	/** Updates Affected Versions references for an Issue 
85  	 * @param _issue Issue to update
86  	 * @param _values List of Version
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  }