Hi.
I need to delete all comments made by a particular project Role in JIRA. I tried to do this via direct database accept, but would prefer a Groovy solution.
Can anybody help me with this?
Here is code to del all comments for given issue which were created by users into specified role:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.comments.Comment import com.atlassian.jira.issue.comments.CommentManager import com.atlassian.jira.security.roles.ProjectRole import com.atlassian.jira.security.roles.ProjectRoleManager CommentManager commentManager = ComponentAccessor.getCommentManager(); Issue issue = ComponentAccessor.getIssueManager().getIssueObject("issueKey"); ProjectRoleManager prjRoleMng = ComponentAccessor.getComponent(ProjectRoleManager); ProjectRole role = prjRoleMng.getProjectRole("Role"); for(Comment comment: commentManager.getComments(issue)){ if( prjRoleMng.isUserInProjectRole(comment.getAuthorApplicationUser(), role, issue.getProjectObject())){ commentManager.delete(comment) } }
And can I sanitize every matching comment in the system? (the system would be a test JIRA instance having only the needed projects)
Or, maybe, I can just run a DELETE against the jiraaction table? Are there any pitfalls in doing this? (like these comments cross-referenced somewhere in the DB?)
The code is for a particular issue but the question is for all the comments in the system made by a particular role.
Here is code for all issues into all projects:
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.comments.Comment import com.atlassian.jira.issue.comments.CommentManager import com.atlassian.jira.project.Project import com.atlassian.jira.security.roles.ProjectRole import com.atlassian.jira.security.roles.ProjectRoleManager CommentManager commentManager = ComponentAccessor.getCommentManager(); IssueManager issueManager = ComponentAccessor.getIssueManager(); ProjectRoleManager prjRoleMng = ComponentAccessor.getComponent(ProjectRoleManager); ProjectRole role = prjRoleMng.getProjectRole("Role"); for(Project project: ComponentAccessor.getProjectManager().getProjectObjects()) { for (Issue curIssue : issueManager.getIssueObjects(issueManager.getIssueIdsForProject(project.getId()))) { for (Comment comment : commentManager.getComments(curIssue)) { if (prjRoleMng.isUserInProjectRole(comment.getAuthorApplicationUser(), role, project)) { commentManager.delete(comment) } } } }
It looks like you're new here. Sign in or register to get started.