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
22
23
24
25
26
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 }