Mercurial > public > JIRA
view ssdt-jira-plugins-v2/plugins/src/main/java/org/nwoca/ssdt/jira/RequireNoTimeRemainingValidator.java @ 1:56349dc044f5
Added validators for Time tracking. Validators: Require an estimate
and require no time remaining
author | smith |
---|---|
date | Thu, 22 May 2008 15:45:43 -0400 |
parents | |
children | 4ca1ef5be75e |
line wrap: on
line source
/* * RequireDocumentIssueValidator.java * * Created on May 14, 2007, 1:04 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package org.nwoca.ssdt.jira; import com.atlassian.jira.ManagerFactory; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.IssueUtils; import com.atlassian.jira.issue.fields.CustomField; import com.opensymphony.module.propertyset.PropertySet; import com.opensymphony.workflow.InvalidInputException; import com.opensymphony.workflow.Validator; import com.opensymphony.workflow.WorkflowException; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * Requires zero time remaining if the issue has Time Tracking. Can use * during resolve step. * * @author SMITH */ public class RequireNoTimeRemainingValidator implements Validator { private final List<CustomField> cfs = new ArrayList<CustomField>(); /** * Creates a new instance of RequireDocumentIssueValidator. */ public RequireNoTimeRemainingValidator() { CustomFieldManager cfm = ManagerFactory.getCustomFieldManager(); for (Object obj : cfm.getCustomFieldObjects()) { CustomField cf = (CustomField) obj; if (!cf.getName().contains("Message")) { cfs.add(cf); System.out.println("Custom Field: " + cf.getName()); } } } public void validate(Map transientVars, Map args, PropertySet ps) throws InvalidInputException, WorkflowException { Issue issue = (Issue) transientVars.get("issue"); // System.out.println("Issue: " + issue.getKey()); // System.out.println(" OE: " + issue.getOriginalEstimate()); // System.out.println(" E: " + issue.getEstimate() + "/" +issue.getEstimate() ); // System.out.println(" TS: " + issue.getTimeSpent()); // System.out.println(" hasTimeTracking:" + IssueUtils.hasTimeTracking(issue)); // // for (CustomField cf : cfs) { // System.out.println(" CF " + cf.getName() + ": " + issue.getCustomFieldValue(cf)); // } // // { // Iterator it = transientVars.entrySet().iterator(); // System.out.println(" Transient: "); // while (it.hasNext()) { // Map.Entry e = (Map.Entry) it.next(); // System.out.println(" " + e.getKey() + ": " + e.getValue()); // } // } // // { // Iterator it = args.entrySet().iterator(); // System.out.println(" Args: "); // while (it.hasNext()) { // Map.Entry e = (Map.Entry) it.next(); // System.out.println(" " + e.getKey() + ": " + e.getValue()); // } // } // // if (IssueUtils.hasTimeTracking(issue) && issue.getEstimate().longValue() != 0 ) { throw new InvalidInputException("There is still Estimated Time Remaining on this issue."); } } }