...
코드 블럭 | ||||
---|---|---|---|---|
| ||||
import com.atlassian.jira.issue.Issue import com.atlassian.jira.issue.IssueManager import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.attachment.FileSystemAttachmentDirectoryAccessor import org.apache.log4j.Level import org.apache.log4j.Logger import com.atlassian.jira.issue.attachment.CreateAttachmentParamsBean import java.io.File import com.atlassian.jira.issue.comments.MutableComment import com.atlassian.jira.issue.comments.Comment import com.atlassian.jira.user.ApplicationUser import com.atlassian.jira.event.type.EventDispatchOption import com.onresolve.scriptrunner.parameters.annotation.* import com.atlassian.jira.project.Project def log = Logger.getLogger("com.curvc") log.setLevel(Level.DEBUG) def customFieldManager = ComponentAccessor.getCustomFieldManager() def issueManager = ComponentAccessor.getIssueManager() def userManager = ComponentAccessor.getUserManager() def projectManager = ComponentAccessor.getProjectManager() def commentManager = ComponentAccessor.getCommentManager() // 변경할 이슈 입력 @ShortTextInput(label = "Issue", description = "Enter a issueKey") String issueKey //찾을 유저 명 입력 @UserPicker(label = "Original User", description = "Select a user") ApplicationUser user log.info("본래 유저: " + user.displayName) // 변경할 유저명 입력 @UserPicker(label = "Change User", description = "Select a Chnage user") ApplicationUser changeUser log.info("변경할 유저: " + changeUser.displayName) // admin user @UserPicker(label = "Admin User", description = "Select a admin user") ApplicationUser adminuser def issue = issueManager.getIssueByCurrentKey(issueKey) if(issue instanceof MutableIssue){ issue as MutableIssue } else { log.info("해당 issueKey에 대한 Issue가 없습니다.") return } issue as MutableIssue log.info(issue.getKey()) if(issue.reporter == user){ // 담당자 변경 issue.setReporter(changeUser) // 첨부파일들 변경 def attachments = ComponentAccessor.attachmentManager.getAttachments(issue) log.info("첨부파일 수: " + attachments.size()) for (attachment in attachments) { String type = attachment.getMimetype() def attachmentname = attachment.getFilename().toString() log.info(attachmentname) def attachmentUser = userManager.getUserByKey(attachment.getAuthorKey()) log.info(attachmentUser) //변경될 첨부파일명 String fileName = attachmentname.toString() def attachmentid = attachment.getId().toString() // 첨부파일 위치 파악 def filelocate = ComponentAccessor.getComponent(FileSystemAttachmentDirectoryAccessor.class).getAttachmentDirectory(issue) def filepath = filelocate.toString() + '/' + attachmentid File oriFile = new File(filepath) log.info(filepath) // 기존첨부파일 신규 등록 def bean = new CreateAttachmentParamsBean.Builder() .file(oriFile) .filename(fileName) .contentType(type) .author(changeUser) .issue(issue) .createdTime(attachment.getCreated()) .build() ComponentAccessor.attachmentManager.createAttachment(bean) log.info("create attachment " + fileName) //Jira 이슈에서 첨부파일 삭제 ComponentAccessor.attachmentManager.deleteAttachment(attachment) log.info("attahment: " + attachmentname + " recreated") } //댓글 변경 def comments = commentManager.getCommentsForUser(issue, user) log.info(issue.getKey() + " 댓글 수: " + comments.size()) for (int i = 0; i < comments.size(); i++){ def mutableComment = commentManager.getMutableComment(comments[i].getId()) log.info(mutableComment.getAuthorFullName()) if(mutableComment.getAuthorApplicationUser().getKey() == user.getKey()){ commentManager.create(issue, changeUser, changeUser, mutableComment.getBody(), mutableComment.getGroupLevel(), mutableComment.getRoleLevelId(), mutableComment.getCreated(), mutableComment.getUpdated(), false) commentManager.delete(mutableComment) log.info("comment recreated") } } // 이슈 갱신 issueManager.updateIssue(adminuser, issue, EventDispatchOption.ISSUE_UPDATED, false) } |
...