PageRenderTime 48ms CodeModel.GetById 23ms RepoModel.GetById 1ms app.codeStats 0ms

/src/test/resources/examples/RenameDuplicateUsers.groovy

https://bitbucket.org/sorin/jira-plugin-intellij
Groovy | 121 lines | 82 code | 20 blank | 19 comment | 9 complexity | c86854fe3ab38efe9083962e3075195c MD5 | raw file
  1. package examples
  2. import com.atlassian.core.ofbiz.CoreFactory
  3. import com.atlassian.jira.util.ErrorCollection
  4. import com.onresolve.jira.groovy.CannedScriptRunner
  5. import com.onresolve.jira.groovy.GroovyRunner
  6. import java.sql.Connection
  7. import java.sql.PreparedStatement
  8. import java.sql.ResultSet
  9. import java.sql.ResultSetMetaData
  10. import org.apache.log4j.Category
  11. import org.apache.log4j.Level
  12. import org.ofbiz.core.entity.ConnectionFactory
  13. import org.ofbiz.core.entity.GenericDelegator
  14. import com.onresolve.jira.groovy.canned.CannedScript
  15. import com.onresolve.jira.groovy.ScriptManager
  16. import com.atlassian.jira.ComponentManager
  17. GenericDelegator delegator = CoreFactory.getGenericDelegator()
  18. String helperName = delegator.getGroupHelperName("default");
  19. Connection conn = ConnectionFactory.getConnection(helperName);
  20. String sqlStmt = """
  21. select username
  22. from userbase
  23. where lower(username) in (
  24. select LOWER(username) from userbase
  25. group by LOWER(username)
  26. having count(LOWER(username)) > 1
  27. )
  28. order by lower(username)
  29. """
  30. Category log = log
  31. log.setLevel(Level.DEBUG)
  32. GroovyRunner runner = new CannedScriptRunner()
  33. PreparedStatement stmt = conn.prepareStatement(sqlStmt, ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
  34. ResultSet rs = stmt.executeQuery();
  35. log.debug rs
  36. ResultSetMetaData rsMetaData = rs.getMetaData();
  37. int numberOfColumns = rsMetaData.getColumnCount();
  38. List renameUsers = []
  39. if (0)
  40. {
  41. // Map<String, Object> inputs = [
  42. // (RenameUser.FIELD_FROM_USER_ID) : "A263251",
  43. // (RenameUser.FIELD_TO_USER_ID): "a263251",
  44. // (RenameUser.FIELD_MERGE): true,
  45. // ] as Map<String, Object>
  46. // log.debug(inputs)
  47. // RenameUser renameUser = new RenameUser()
  48. // renameUser.log.setLevel(Level.DEBUG)
  49. // ErrorCollection errorCollection = renameUser.doValidate(inputs, true)
  50. // if (errorCollection.hasAnyErrors()) {
  51. // log.error "errorCollection has errors"
  52. // log.error errorCollection
  53. // }
  54. // else {
  55. // // log.debug renameUser.getDescription(inputs, true)
  56. // runner.getCannedScriptHumanDesc(RenameUser.class.getName(), inputs, true)
  57. // }
  58. }
  59. // return
  60. while (rs.next()) {
  61. for (int i = 1; i < numberOfColumns + 1; i++) {
  62. renameUsers.add(rs.getObject(i))
  63. }
  64. }
  65. log.debug renameUsers
  66. log.debug renameUsers.size()
  67. Map<String, List> renameUserMap = [:]
  68. renameUsers.eachWithIndex {String s, int i ->
  69. if (! renameUserMap.get(s.toLowerCase())) {
  70. renameUserMap.put(s.toLowerCase(), [])
  71. }
  72. renameUserMap[s.toLowerCase()].add(s)
  73. }
  74. log.debug renameUserMap
  75. renameUserMap.each {String k, List v ->
  76. if (! v.contains(k)) {
  77. log.warn "Problem with user $k"
  78. }
  79. v.each {String mergeFrom ->
  80. if (mergeFrom != k) {
  81. log.debug "Merge from $mergeFrom to $k"
  82. ScriptManager scriptManager = (ScriptManager) ComponentManager.getComponentInstanceOfType(ScriptManager.class);
  83. GroovyClassLoader gcl = scriptManager.getGcl();
  84. CannedScript renameUser = (CannedScript) gcl.loadClass("com.onresolve.jira.groovy.canned.admin.RenameUser", true, false).newInstance();
  85. Map<String, Object> inputs = [
  86. (renameUser.FIELD_FROM_USER_ID) : mergeFrom,
  87. (renameUser.FIELD_TO_USER_ID): k,
  88. (renameUser.FIELD_MERGE): true,
  89. ] as Map<String, Object>
  90. renameUser.log.setLevel(Level.DEBUG)
  91. ErrorCollection errorCollection = renameUser.doValidate(inputs, true)
  92. if (errorCollection.hasAnyErrors()) {
  93. log.error errorCollection
  94. }
  95. else {
  96. // runner.getCannedScriptHumanDesc(RenameUser.class.getName(), inputs, true)
  97. runner.run(renameUser.class.getName(), inputs)
  98. }
  99. }
  100. }
  101. }