Hi,
I want to run a JQL query to fetch some issues inside a groovy script an then doing something (adding a comment) on the issues from the result. Is there a current 6.4.x running codesample?
Regards,
Dirk
Community moderators have prevented the ability to post new answers.
Hi,
Yes, latest version of Script Runner works on JIRA 6.4.x.
To fetch issues using JQL i woluld recommend to look into JIRA API. Basically you can do it with code like this:
import com.atlassian.jira.jql.builder.JqlQueryBuilder; import com.atlassian.jira.issue.search.SearchException; import com.atlassian.jira.issue.search.SearchProvider; import com.atlassian.jira.issue.search.SearchResults; import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.web.bean.PagerFilter; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.jql.builder.JqlClauseBuilder; import com.atlassian.jira.issue.Issue; import com.atlassian.crowd.embedded.api.User; JqlQueryBuilder jqlBuilder = JqlQueryBuilder.newBuilder(); List<Issue> issueList = new ArrayList<Issue>(); JqlClauseBuilder clauseBuilder = JqlQueryBuilder.newClauseBuilder(); clauseBuilder.customField(10107L).like("some string"); SearchProvider searchProvider = ComponentAccessor.getComponentOfType(SearchProvider.class); CustomFieldManager cfManager = ComponentAccessor.getCustomFieldManager(); CustomField myCF = cfManager.getCustomFieldObject(10003L); User user = ComponentAccessor.getUserUtil().getUserByKey("userKey").getDirectoryUser(); //OR cfManager.getCustomFieldObjectByName("My custom field name"); jqlBuilder.where().status().notEq("Closed").and().status().notEq("Resolved").and().customField(myCF.getIdAsLong()).isNotEmpty().and().addClause(clauseBuilder.buildClause()); try { final SearchResults results = searchProvider.searchOverrideSecurity(jqlBuilder.buildQuery(), user, PagerFilter.getUnlimitedFilter(), null); issueList = results.getIssues(); }catch(SearchException e){ e.printStackTrace(); }
Is there a way to change from jqlBuilder.where().status().no .... to a Method / Factory which takes the origin JQL String to Object-Model?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I am not aware of such method...
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
> can you explain what you mean by: to a Method / Factory which takes the origin JQL String to Object-Model?
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
If it means what I think you mean then JqlQueryParser does that.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks Tomasz for a great answer, also https://jamieechlin.atlassian.net/wiki/display/GRV/Miscellaneous+Groovy+Scripts#MiscellaneousGroovyScripts-ExecutingaQuery still works AFAIK. Looks right...
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
SearchService sserv = ComponentAccessor.getComponentOfType(SearchService.class); ParseResult parseQuery = sserv .parseQuery(user,"MY JQL");
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.