Package ru.mail.jira.plugins.lf

Source Code of ru.mail.jira.plugins.lf.SingleLinkerFieldValidator

/*
* Created by Andrey Markelov 29-11-2012.
* Copyright Mail.Ru Group 2012. All rights reserved.
*/
package ru.mail.jira.plugins.lf;

import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.util.JiraWebUtils;
import com.opensymphony.module.propertyset.PropertySet;
import com.opensymphony.workflow.InvalidInputException;
import com.opensymphony.workflow.Validator;
import com.opensymphony.workflow.WorkflowException;

/**
* Validate linked issues statuses.
*
* @author Andrey Markelov
*/
public class SingleLinkerFieldValidator
    implements Validator
{
    /**
     * Constructor.
     */
    public SingleLinkerFieldValidator() {}

    @Override
    public void validate(
        Map transientVars,
        Map args,
        PropertySet ps)
    throws InvalidInputException, WorkflowException
    {
        Issue issue = (Issue) transientVars.get("issue");

        String cfId = (String) args.get("cfId");
        String invalid_statuses = (String) args.get("invalid_statuses");

        if (cfId != null && cfId.length() > 0)
        {
            CustomField cfObj = ComponentManager.getInstance().getCustomFieldManager().getCustomFieldObject(cfId);
            if (cfObj != null)
            {
                Object cfValObj = issue.getCustomFieldValue(cfObj);
                if (cfValObj != null)
                {
                    String linkedIssueKey = cfValObj.toString();
                    Issue linkedIssue = ComponentManager.getInstance().getIssueManager().getIssueObject(linkedIssueKey);
                    if (linkedIssue != null)
                    {
                        Set<String> params = new TreeSet<String>();
                        if (invalid_statuses != null)
                        {
                            StringTokenizer st = new StringTokenizer(invalid_statuses, "&");
                            while (st.hasMoreTokens())
                            {
                                String token = st.nextToken();
                                if (token.length() > 0)
                                {
                                    params.add(token.trim());
                                }
                            }
                        }
                        if (params.contains(linkedIssue.getStatusObject().getId()))
                        {
                            String issueUrl = Utils.getBaseUrl(JiraWebUtils.getHttpRequest()) + "/browse/" + linkedIssue.getKey();
                            throw new InvalidInputException(
                                ComponentAccessor.getJiraAuthenticationContext().getI18nHelper().getText("queryfields.linkervalidator.error", issueUrl, linkedIssue.getStatusObject().getName()));
                        }
                    }
                }
            }
        }
    }
}
TOP

Related Classes of ru.mail.jira.plugins.lf.SingleLinkerFieldValidator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.