페이지 트리

버전 비교

  • 이 줄이 추가되었습니다.
  • 이 줄이 삭제되었습니다.
  • 서식이 변경되었습니다.

...

코드 블럭
languagegroovy
linenumberstrue
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)
}

...