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.