Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.72 KB | None | 0 0
  1. import com.atlassian.sal.api.component.ComponentLocator
  2. import com.atlassian.confluence.pages.CommentManager
  3. import com.atlassian.confluence.pages.PageManager
  4. import com.atlassian.confluence.spaces.SpaceManager
  5. import com.atlassian.confluence.pages.Page
  6. import com.atlassian.confluence.user.UserAccessor
  7. import com.atlassian.sal.api.user.UserKey
  8. import com.atlassian.sal.api.user.UserManager
  9. import com.atlassian.confluence.core.DefaultSaveContext
  10. import com.atlassian.confluence.core.SaveContext
  11. import com.atlassian.confluence.event.events.content.page.PageEvent
  12. import com.atlassian.applinks.api.ApplicationLinkService
  13. import com.atlassian.applinks.api.application.jira.JiraApplicationType
  14. import com.atlassian.sal.api.net.Response
  15. import com.atlassian.sal.api.net.ResponseException
  16. import com.atlassian.sal.api.net.ResponseHandler
  17. import com.onresolve.scriptrunner.runner.customisers.WithPlugin
  18. import groovy.json.JsonBuilder
  19. import groovy.json.JsonSlurper
  20. import org.apache.http.util.EntityUtils
  21. import org.jsoup.Jsoup
  22. import org.jsoup.nodes.Document
  23. import org.jsoup.nodes.Element
  24. import static com.atlassian.sal.api.net.Request.MethodType.POST
  25. import org.apache.log4j.Level
  26. import org.apache.log4j.Logger
  27.  
  28. log = Logger.getLogger("com.test.Page")
  29. log.setLevel(Level.DEBUG)
  30.  
  31. def pageManager = ComponentLocator.getComponent(PageManager)
  32. def entityUtils = ComponentLocator.getComponent(EntityUtils)
  33. def profile = ComponentLocator.getComponent(UserManager)
  34. def userAccessor = ComponentLocator.getComponent(UserAccessor)
  35.  
  36. def appLinkService = ComponentLocator.getComponent(ApplicationLinkService)
  37. def appLink = appLinkService.getPrimaryApplicationLink(JiraApplicationType)
  38. def applicationLinkRequestFactory = appLink.createAuthenticatedRequestFactory()
  39.  
  40. def page = pageManager.getPage('OP','2019-10-09 Meeting notes')
  41. def text_page = page.getBodyAsString()
  42.  
  43. // ==================
  44.  
  45. def doc = Jsoup.parse(text_page)
  46. ArrayList<String> subAss = new ArrayList<>();
  47. def table = doc.select("table").get(1) // Выбираем первую таблицу
  48. def rows = table.select("tr")
  49. int e = 0 // соавторы
  50. int j = 0 // авторы
  51. int w = 0 // дата
  52. def q
  53. def t
  54. def dateNew
  55. for (int i = 1; i < rows.size(); i++) {
  56. def row = rows.get(i)
  57. def cols = row.select("td")
  58. def summary = cols.get(1).text()
  59. def description = cols.get(2).text()
  60. def subAssignee = cols.get(4).select('ac|link')
  61. //log.debug(subAssignee.size())
  62.  
  63. for( int r = 0; r < subAssignee.size(); r++){
  64. if(subAssignee.size() != 0){
  65. def user = subAssignee[e].select('ri|user').attr('ri:userkey')
  66. e = e + 1
  67. q = userAccessor.getUserByKey(new UserKey(user))
  68. subAss.add(q.name)
  69. log.debug(subAss)
  70. } else {}
  71. }
  72.  
  73. def assignee = cols.get(3).select('ac|link')
  74. //log.debug(assignee)
  75.  
  76. for (int y = 0; y < assignee.size(); y++){
  77. if(assignee.size() != 0){
  78. def user = assignee.select('ri|user').attr('ri:userkey')
  79. //j = j + 1
  80. t = userAccessor.getUserByKey(new UserKey(user))
  81. //log.debug(t.name)
  82. } else {}
  83. }
  84.  
  85. def date = cols.get(6).select('time')
  86. //log.debug(date)
  87.  
  88. for(int u = 0; u < date.size(); u++){
  89. if (date.size() != 0 ){
  90. //def dat = cols.select('time')
  91. dateNew = date.attr('datetime')
  92. //w = w + 1
  93. //log.debug(dateNew)
  94. } else {}
  95. }
  96.  
  97. //}
  98.  
  99. //==========================
  100.  
  101. //==============================================
  102.  
  103. def body = new JsonBuilder([
  104. fields: [
  105. project : [key: "QQ"],
  106. issuetype : [name: "Техническая консультация"],
  107. summary : summary,//result[ i+1],
  108. description: description,//result[i+2],
  109. reporter : [name: "bazhenov_av"],//[name: "jira"],
  110. assignee : [name: t.name],
  111. //priority : [result[i+4]],
  112. customfield_11801 : dateNew //result[i+5] //select('time').attr('datetime')
  113. //customfield_12007 : [name: subAss]
  114. ]
  115. ]).toString()
  116.  
  117.  
  118.  
  119. def request = applicationLinkRequestFactory.createRequest(POST, "/rest/api/2/issue")
  120. .addHeader("Content-Type", "application/json")
  121. .setEntity(body)
  122. request.execute(new ResponseHandler<Response>() {
  123. @Override
  124. void handle(Response response) throws ResponseException {
  125. if (response.statusCode != 201) {
  126. log.error("Creating Jira issue failed: ${response.responseBodyAsString}")
  127. }
  128.  
  129.  
  130. def issueData = (new JsonSlurper()).parseText(response.getResponseBodyAsString())
  131. def linkWiki = new JsonBuilder([
  132. globalId: "appId=5aac7244-e0d3-31df-a7f5-d93dce867807&pageId=10748184",
  133. application: [type: "com.atlassian.confluence"],
  134. relationship:"Wiki Page",
  135. object: [
  136. url:"http://confluence-test-app.sands.local/pages/viewpage.action?pageId=10748184",
  137. title:"Wiki Page",
  138. ]
  139. ]).toString()
  140. def linkW = applicationLinkRequestFactory.createRequest(POST, "/rest/api/2/issue/${issueData.key}/remotelink")
  141. .addHeader("Content-Type", "application/json")
  142. .setEntity(linkWiki)
  143. //==============================
  144. linkW.execute(new ResponseHandler<Response>() {
  145. @Override
  146. void handle(Response responseLink) throws ResponseException {
  147. if (responseLink.statusCode != 201) {
  148. log.error("Creating Link failed: ${responseLink.responseBodyAsString}")
  149. }
  150. }
  151. })
  152.  
  153. }
  154. })
  155.  
  156. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement