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?)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
The code is for a particular issue but the question is for all the comments in the system made by a particular role.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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) } } } }
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.