PageRenderTime 37ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/src/test/resources/examples/SetUserTimeZone.groovy

https://bitbucket.org/sorin/jira-plugin-intellij
Groovy | 94 lines | 78 code | 14 blank | 2 comment | 10 complexity | 550c2788d00027b34cf6b03027e83873 MD5 | raw file
  1. package examples
  2. import com.atlassian.jira.ComponentManager
  3. import com.atlassian.jira.bc.JiraServiceContextImpl
  4. import com.atlassian.jira.security.JiraAuthenticationContext
  5. import com.atlassian.jira.timezone.TimeZoneService
  6. import com.opensymphony.user.User
  7. import com.opensymphony.user.UserManager
  8. import org.apache.directory.groovyldap.LDAP
  9. import org.apache.log4j.Category
  10. import org.apache.log4j.Level
  11. ComponentManager componentManager = ComponentManager.getInstance()
  12. Category log = log
  13. log.setLevel(Level.DEBUG)
  14. List<String> availableTzIds = TimeZone.getAvailableIDs().toList()
  15. log.debug availableTzIds
  16. TimeZoneService tzService = ComponentManager.getComponentInstanceOfType(TimeZoneService.class)
  17. JiraAuthenticationContext authenticationContext = componentManager.getJiraAuthenticationContext()
  18. LDAP ldap = LDAP.newInstance(
  19. "ldap://gldap.csintra.net:40389/ou=people,dc=intranet,dc=net",
  20. "uid=UNITY,ou=users,ou=access,dc=intranet,dc=net",
  21. "coRDk5dBmVv86dw"
  22. ) as LDAP
  23. log.debug "ldap ${ldap.url}"
  24. // each user - get timezone from gldap - verify it exists, then set it.
  25. // List users = UserManager.getInstance().getUser("admin") as List
  26. List users = UserManager.getInstance().getUsers() as List
  27. Integer kount = 0
  28. int maxUsers = 100000
  29. int minUsers = 0
  30. int missingUsers = 0
  31. int updatedUsers = 0
  32. int badUsernameUsers = 0
  33. users.each {User user ->
  34. kount++
  35. if (kount < maxUsers && kount >= minUsers) {
  36. if (kount % 100 == 0) {
  37. log.warn("$kount users processed")
  38. }
  39. if (user.name.contains("\\")) {
  40. log.error ("Weird username: ${user.name}")
  41. badUsernameUsers++
  42. return
  43. }
  44. List entries = ldap.search(filter: "(csgUPNs=${user.name}@*)")
  45. if (entries.size() == 0) {
  46. log.debug ("No LDAP entry for ${user.name}")
  47. missingUsers++
  48. }
  49. else if (entries.size() == 1) {
  50. Map entry = entries.first() as Map
  51. String csgTimeZone = entry["csgtimezone"]
  52. if (csgTimeZone == "asia/kolkata") {
  53. csgTimeZone = "Asia/Kolkata" // local fix for broken data in GLDAP
  54. }
  55. JiraServiceContextImpl jiraServiceContext = new JiraServiceContextImpl(user)
  56. if (availableTzIds*.toLowerCase().contains(csgTimeZone.toLowerCase())) {
  57. log.debug ("Set timezone to $csgTimeZone for ${user.name}")
  58. try {
  59. tzService.setUserDefaultTimeZone(csgTimeZone, jiraServiceContext)
  60. updatedUsers++
  61. }
  62. catch (IllegalArgumentException e) {
  63. log.warn ("Exception: Invalid timezone: $csgTimeZone for $user")
  64. }
  65. }
  66. else {
  67. log.warn ("Invalid timezone: $csgTimeZone for $user")
  68. }
  69. }
  70. else if (entries.size() > 1) {
  71. log.error ("More than one entry for ${user.name}")
  72. }
  73. }
  74. }
  75. log.debug "Totals: updatedUsers: $updatedUsers, missingUsers: $missingUsers, badUsernameUsers: $badUsernameUsers"
  76. ""