Package ru.mail.jira.plugins.lf

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

/*
* Created by Andrey Markelov 12-02-2013.
* Copyright Mail.Ru Group 2013. All rights reserved.
*/
package ru.mail.jira.plugins.lf;

import java.util.List;
import java.util.Map;
import java.util.TreeMap;
import org.apache.log4j.Logger;
import com.atlassian.crowd.embedded.api.User;
import com.atlassian.jira.ComponentManager;
import com.atlassian.jira.bc.issue.search.SearchService;
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.Issue;
import com.atlassian.jira.issue.fields.CustomField;
import com.atlassian.jira.issue.search.SearchException;
import com.atlassian.jira.issue.search.SearchResults;
import com.atlassian.jira.web.action.JiraWebActionSupport;
import com.atlassian.jira.web.bean.PagerFilter;
import com.atlassian.query.Query;
import com.atlassian.sal.api.ApplicationProperties;

/**
* Query field picker.
*
* @author Andrey Markelov
*/
public class MailRuQueryPickerAction
    extends JiraWebActionSupport
{
    /*
     * Unique ID.
     */
    private static final long serialVersionUID = 8862828963589161294L;

    /*
     * Logger.
     */
    private final Logger log = Logger.getLogger(MailRuQueryPickerAction.class);

    private final ApplicationProperties applicationProperties;

    private QueryFieldsMgr qfMgr;

    private Map<String, String> cfValues;

    private String cfid;

    private String inputid;

    private String returnid;

    private String prId;

    /**
     * Search service.
     */
    private final SearchService searchService;

    /**
     * Constructor.
     */
    public MailRuQueryPickerAction(
        CustomFieldManager cfMgr,
        ApplicationProperties applicationProperties,
        QueryFieldsMgr qfMgr,
        SearchService searchService)
    {
        this.applicationProperties = applicationProperties;
        this.qfMgr = qfMgr;
        this.searchService = searchService;
        this.cfValues = new TreeMap<String, String>();
    }

    @Override
    protected String doExecute() throws Exception
    {
        CustomField field = ComponentManager.getInstance().getCustomFieldManager().getCustomFieldObject(cfid);

        String jqlData = null;
        if (field.isAllProjects())
        {
            jqlData = qfMgr.getQueryFieldData(field.getIdAsLong(), Long.valueOf(prId));
        }
        else
        {
            jqlData = qfMgr.getQueryFieldData(field.getIdAsLong(), Long.valueOf(prId));
        }

        User user = ComponentManager.getInstance().getJiraAuthenticationContext().getLoggedInUser();
        SearchService.ParseResult parseResult = searchService.parseQuery(user, jqlData);
        if (parseResult.isValid())
        {
            Query query = parseResult.getQuery();
            try
            {
                SearchResults results = searchService.search(user, query, PagerFilter.getUnlimitedFilter());
                List<Issue> issues = results.getIssues();
                for (Issue i : issues)
                {
                    cfValues.put(i.getKey(), i.getSummary());
                }
            }
            catch (SearchException e)
            {
                log.error("MailRuQueryPickerAction::doExecute - Search exception", e);
            }
        }

        return super.doExecute();
    }

    public String getBaseUrl()
    {
        return applicationProperties.getBaseUrl();
    }

    public String getCfid()
    {
        return cfid;
    }

    public Map<String, String> getCfValues()
    {
        return cfValues;
    }

    public String getInputid()
    {
        return inputid;
    }

    public String getPrId()
    {
        return prId;
    }

    public String getReturnid()
    {
        return returnid;
    }

    public void setCfid(String cfid)
    {
        this.cfid = cfid;
    }

    public void setInputid(String inputid)
    {
        this.inputid = inputid;
    }

    public void setPrId(String prId)
    {
        this.prId = prId;
    }

    public void setReturnid(String returnid)
    {
        this.returnid = returnid;
    }
}
TOP

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

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.