PageRenderTime 36ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/src/main/java/com/atlassian/jira/plugins/bitbucket/activeobjects/PropertyMigrator.java

https://bitbucket.org/atlassian/jira-bitbucket-connector/
Java | 103 lines | 84 code | 16 blank | 3 comment | 4 complexity | ce469d4e5c98f2a1b5e3e2154b1f3bb3 MD5 | raw file
  1. package com.atlassian.jira.plugins.bitbucket.activeobjects;
  2. import java.net.MalformedURLException;
  3. import java.net.URL;
  4. import java.util.List;
  5. import java.util.Map;
  6. import org.slf4j.Logger;
  7. import org.slf4j.LoggerFactory;
  8. import com.atlassian.activeobjects.external.ActiveObjects;
  9. import com.atlassian.activeobjects.external.ActiveObjectsUpgradeTask;
  10. import com.atlassian.activeobjects.external.ModelVersion;
  11. import com.atlassian.jira.plugins.bitbucket.activeobjects.v1.IssueMapping;
  12. import com.atlassian.jira.plugins.bitbucket.activeobjects.v1.ProjectMapping;
  13. import com.atlassian.jira.project.Project;
  14. import com.atlassian.jira.project.ProjectManager;
  15. import com.google.common.collect.Maps;
  16. /**
  17. */
  18. @SuppressWarnings("deprecation")
  19. public class PropertyMigrator implements ActiveObjectsUpgradeTask
  20. {
  21. private final Logger logger = LoggerFactory.getLogger(PropertyMigrator.class);
  22. private final ProjectManager projectManager;
  23. private final BitbucketProjectSettings settings;
  24. public PropertyMigrator(ProjectManager projectManager, BitbucketProjectSettings settings)
  25. {
  26. this.projectManager = projectManager;
  27. this.settings = settings;
  28. }
  29. @Override
  30. @SuppressWarnings("unchecked")
  31. public void upgrade(ModelVersion modelVersion, final ActiveObjects activeObjects)
  32. {
  33. logger.debug("upgrade [ " + modelVersion + " ]");
  34. //noinspection unchecked
  35. activeObjects.migrate(IssueMapping.class, ProjectMapping.class);
  36. List<Project> projects = projectManager.getProjectObjects();
  37. for (Project project : projects)
  38. {
  39. String projectKey = project.getKey();
  40. List<String> repositories = settings.getRepositories(projectKey);
  41. for (String repository : repositories)
  42. {
  43. String username = settings.getUsername(projectKey, repository);
  44. String password = settings.getPassword(projectKey, repository);
  45. String repositoryUri = RepositoryUri.parse(repository).getRepositoryUri();
  46. logger.debug("migrate repository [ {} ]", repositoryUri);
  47. Map<String, Object> map = Maps.newHashMap();
  48. map.put("PROJECT_KEY", projectKey);
  49. map.put("REPOSITORY_URI", repositoryUri);
  50. map.put("USERNAME", username);
  51. map.put("PASSWORD", password);
  52. activeObjects.create(ProjectMapping.class, map);
  53. try
  54. {
  55. List<String> issueIds = settings.getIssueIds(projectKey, repository);
  56. for (String issueId : issueIds)
  57. {
  58. List<String> commits = settings.getCommits(projectKey, repository, issueId);
  59. for (String commit : commits)
  60. {
  61. URL changesetURL = new URL(commit);
  62. String changesetPath = changesetURL.getPath();
  63. String node = changesetPath.substring(changesetPath.lastIndexOf("/") + 1);
  64. logger.debug("add changeset [ {} ] to [ {} ]", changesetPath, issueId);
  65. Map<String, Object> issueMap = Maps.newHashMap();
  66. issueMap.put("NODE", node);
  67. issueMap.put("PROJECT_KEY", projectKey);
  68. issueMap.put("ISSUE_ID", issueId);
  69. issueMap.put("REPOSITORY_URI", repositoryUri);
  70. activeObjects.create(IssueMapping.class, issueMap);
  71. }
  72. }
  73. }
  74. catch (MalformedURLException e)
  75. {
  76. logger.error("invalid repository url [ " + repository + " ] was not processed");
  77. }
  78. }
  79. }
  80. logger.debug("completed property migration");
  81. }
  82. @Override
  83. public ModelVersion getModelVersion()
  84. {
  85. return ModelVersion.valueOf("1");
  86. }
  87. }