View Javadoc

1   package com.atlassian.jira.workflow.condition;
2   
3   import java.sql.Timestamp;
4   import java.util.Date;
5   import java.util.Map;
6   
7   import org.apache.log4j.Category;
8   
9   import com.atlassian.jira.ComponentManager;
10  import com.atlassian.jira.issue.CustomFieldManager;
11  import com.atlassian.jira.issue.MutableIssue;
12  import com.atlassian.jira.issue.customfields.CustomFieldType;
13  import com.atlassian.jira.issue.customfields.impl.DateCFType;
14  import com.atlassian.jira.issue.customfields.impl.DateTimeCFType;
15  import com.atlassian.jira.issue.fields.CustomField;
16  import com.atlassian.jira.util.DateTools;
17  import com.opensymphony.module.propertyset.PropertySet;
18  import com.opensymphony.workflow.WorkflowException;
19  
20  /**
21   * @FQCN : com.atlassian.jira.workflow.condition.DateReachedCondition
22   * @description  Evaluate if a Date is reached (> Today)
23   * 
24   * @author Kaamelot
25   * @since 3.10.1.33
26   * @version 3.10.1.34
27   */
28  public class DateReachedCondition  extends AbstractJiraCondition {
29  
30  	private static final Category log = Category.getInstance(DateReachedCondition.class);
31  
32  	public String CF_NAME = "customField.name";
33  	protected CustomFieldManager customFieldManager = ComponentManager.getInstance().getCustomFieldManager();
34  
35  	public boolean passesCondition(Map _transientVars, Map _args, PropertySet _ps) throws WorkflowException {
36  		boolean isReached = false;
37  		MutableIssue issue = (MutableIssue) _transientVars.get("issue");
38  		String customFieldName = (String) _args.get(CF_NAME);
39  		CustomField customField = customFieldManager.getCustomFieldObjectByName(customFieldName);
40  		CustomFieldType cft = customField.getCustomFieldType();
41  		if (cft instanceof DateCFType || cft instanceof DateTimeCFType) {
42  			Timestamp ts = (Timestamp)issue.getCustomFieldValue(customField);
43  			isReached = isReached(ts);
44  		} else {
45  			log.error(customFieldName + " is not DateCFType neither DateTimeCFType, but " + cft.getClass().getName());
46  		}
47  		return isReached;
48  	}
49  	
50  	public boolean isReached(Date _date) {
51  		boolean isReached = false;
52  		if (_date != null) {
53  			isReached = (DateTools.getToday().getTime() - _date.getTime() ) > 0 ;
54  		}
55  		return isReached;
56  	}
57  	
58  }