Mercurial > public > JIRA
diff ssdt-jira-plugins-v2/plugins/src/main/java/org/nwoca/ssdt/jira/RequireDocumentIssueValidator.java @ 0:92d945347fc0
V2 of the SSDT JIRA Plugins. Uses new Maven 2 based project. Created
for JIRA 3.12.
author | smith |
---|---|
date | Tue, 20 May 2008 17:11:35 -0400 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ssdt-jira-plugins-v2/plugins/src/main/java/org/nwoca/ssdt/jira/RequireDocumentIssueValidator.java Tue May 20 17:11:35 2008 -0400 @@ -0,0 +1,88 @@ +/* + * 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.ComponentManager; +import com.atlassian.jira.ManagerFactory; +import com.atlassian.jira.issue.Issue; +import com.atlassian.jira.issue.MutableIssue; +import com.atlassian.jira.issue.fields.CustomField; +import com.atlassian.jira.issue.link.IssueLink; +import com.atlassian.jira.issue.link.IssueLinkManager; +import com.atlassian.jira.workflow.WorkflowActionsBean; +import com.opensymphony.module.propertyset.PropertySet; +import com.opensymphony.workflow.InvalidInputException; +import com.opensymphony.workflow.Validator; +import com.opensymphony.workflow.WorkflowException; +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * Validator requires to an issue type of "Document" or a sub-task of type "Document". + * + * These are custom issue types used by the SSDT. + * + * @author SMITH + */ +public class RequireDocumentIssueValidator implements Validator { + + + /** + * Creates a new instance of RequireDocumentIssueValidator + */ + public RequireDocumentIssueValidator() { + } + + public void validate(Map transientVars, Map args, PropertySet ps) + throws InvalidInputException, WorkflowException { + + Issue issue = (Issue) transientVars.get("issue"); + CustomField docRequiredField = ManagerFactory.getCustomFieldManager() + .getCustomFieldObjectByName("Documentation Required"); + + if (docRequiredField == null) { + return; + } + + String docRequired = (String)issue.getCustomFieldValue(docRequiredField); + + if (docRequired == null || docRequired.startsWith("No")) { + return; + } + + if (docRequired.startsWith("Yes")) { + + Collection subtasks = issue.getSubTaskObjects(); + for (Object o : subtasks) { + MutableIssue subt = (MutableIssue)o; + if (subt.getIssueTypeObject().getName().equals("Document Subtask")) { + return; + } + } + + IssueLinkManager lm = ComponentManager.getInstance().getIssueLinkManager(); + List links = lm.getOutwardLinks(issue.getId()); + for (Object o : links) { + IssueLink link = (IssueLink)o; + if (link.getIssueLinkType().getName().equals("Documention") ) { + return; + } + } + + throw new InvalidInputException("Issue requiring documentation must have " + + "at least one 'Document' Subtask or a 'Documention' link." ); + + } + + return; + } + +}