Guest User

Untitled

a guest
Oct 26th, 2018
252
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Groovy 3.01 KB | None | 0 0
  1. package com.onresolve.jira.groovy.jql
  2.  
  3. import com.atlassian.jira.issue.Issue
  4. import com.atlassian.jira.util.MessageSetImpl
  5. import com.atlassian.query.operand.FunctionOperand
  6. import com.atlassian.jira.util.MessageSet
  7. import com.atlassian.query.clause.TerminalClause
  8. import com.atlassian.jira.jql.query.QueryCreationContext
  9. import com.onresolve.scriptrunner.runner.customisers.WithPlugin
  10. import org.apache.lucene.index.Term
  11. import org.apache.lucene.search.BooleanClause
  12. import org.apache.lucene.search.BooleanQuery
  13. import org.apache.lucene.search.Query
  14. import org.apache.lucene.search.TermQuery
  15. import com.atlassian.jira.component.ComponentAccessor
  16. import com.atlassian.jira.user.ApplicationUser;
  17. import com.atlassian.jira.security.JiraAuthenticationContext;
  18. import com.atlassian.jira.security.roles.*
  19.  
  20. import com.tempoplugin.timetracking.team.TeamService
  21.  
  22. import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
  23.  
  24. @WithPlugin("is.origo.jira.tempo-plugin")
  25. class UserInRoleTempo extends AbstractScriptedJqlFunction implements JqlQueryFunction {
  26.  
  27.     TeamService teamService = ScriptRunnerImpl.getPluginComponent(TeamService)
  28.  
  29.     @Override
  30.     List<Map> getArguments() {
  31.         [
  32.                 ["description": "Subquery"],
  33.                 ["field": "assignee or reporter"],
  34.                 ["role": "Role X"]
  35.         ]
  36.     }
  37.  
  38.     @Override
  39.     String getFunctionName() {
  40.         "UserInRoleTempo"
  41.     }
  42.  
  43.  
  44.     MessageSet validate(ApplicationUser user, FunctionOperand operand, TerminalClause terminalClause) {
  45.         def messageSet = new MessageSetImpl()
  46.         return messageSet
  47.     }
  48.  
  49.     @Override
  50.     String getDescription() {
  51.         "Function to know if user is in any project role of the parameter"
  52.     }
  53.  
  54.     Query getQuery(QueryCreationContext queryCreationContext, FunctionOperand operand, TerminalClause terminalClause) {
  55.         JiraAuthenticationContext context = ComponentAccessor.getJiraAuthenticationContext();
  56.         ProjectRoleManager projectRoleManager = ComponentAccessor.getOSGiComponentInstanceOfType(ProjectRoleManager.class)
  57.         ApplicationUser applicationUser = context.loggedInUser
  58.         ProjectRoleActors projectRoleActors = null
  59.         def booleanQuery = new BooleanQuery()
  60.         def typeuser
  61.         issues = getIssues(operand.args[0], applicationUser)
  62.         issues.each {Issue issue ->
  63.             try{
  64.                 projectRoleActors = projectRoleManager.getProjectRoleActors(projectRoleManager.getProjectRole(operand.args[2]), issue.getProjectObject())
  65.                 if (operand.args[1] == "assignee" )
  66.                     typeuser = issue.getAssignee()
  67.                 else
  68.                     typeuser = issue.getReporter()
  69.                 if ( projectRoleActors.getUsers().contains(typeuser) ) {
  70.                     booleanQuery.add(new TermQuery(new Term("issue_id", issue.id as String)), BooleanClause.Occur.SHOULD)
  71.                 }
  72.             }catch(NullPointerException NPE){
  73.  
  74.             }
  75.         }
  76.  
  77.         return booleanQuery
  78.     }
  79. }
Advertisement
Add Comment
Please, Sign In to add comment