public JiraMapper(IJiraProvider jiraProvider, ConfigJson config) : base(jiraProvider?.Settings?.UserMappingFile) { _jiraProvider = jiraProvider; _config = config; _targetTypes = InitializeTypeMappings(); _fieldMappingsPerType = InitializeFieldMappings(); }
protected DirectumIssueStrategyBase(IJiraProvider jiraProvider, IDirectumJiraExchangeProvider directumJiraExchangeProvider, DirectumToJiraMapper directumToJiraMapper) { _jiraProvider = jiraProvider; _directumJiraExchangeProvider = directumJiraExchangeProvider; _directumToJiraMapper = directumToJiraMapper; }
private void ExecuteMigration(CommandOption user, CommandOption password, CommandOption useOfflineBackup, CommandOption url, CommandOption configFile, bool forceFresh, CommandOption continueOnCritical) { var itemsCount = 0; var exportedItemsCount = 0; var sw = new Stopwatch(); sw.Start(); try { string configFileName = configFile.Value(); ConfigReaderJson configReaderJson = new ConfigReaderJson(configFileName); var config = configReaderJson.Deserialize(); InitSession(config, continueOnCritical.Value()); // Migration session level settings // where the logs and journal will be saved, logs aid debugging, journal is for recovery of interupted process string migrationWorkspace = config.Workspace; var downloadOptions = (DownloadOptions)config.DownloadOptions; var jiraSettings = new JiraSettings(user.Value(), password.Value(), url.Value(), config.SourceProject) { BatchSize = config.BatchSize, UserMappingFile = config.UserMappingFile != null ? Path.Combine(migrationWorkspace, config.UserMappingFile) : string.Empty, AttachmentsDir = Path.Combine(migrationWorkspace, config.AttachmentsFolder), JQL = config.Query, UsingJiraCloud = config.UsingJiraCloud }; IJiraProvider jiraProvider = null; if (useOfflineBackup.HasValue()) { jiraProvider = OfflineJiraProvider.Initialize(useOfflineBackup.Value(), jiraSettings); } else { jiraProvider = JiraProvider.Initialize(jiraSettings); } itemsCount = jiraProvider.GetItemCount(jiraSettings.JQL); BeginSession(configFileName, config, forceFresh, jiraProvider, itemsCount); jiraSettings.EpicLinkField = jiraProvider.GetCustomId(config.EpicLinkField); if (string.IsNullOrEmpty(jiraSettings.EpicLinkField)) { Logger.Log(LogLevel.Warning, $"Epic link field missing for config field '{config.EpicLinkField}'."); } jiraSettings.SprintField = jiraProvider.GetCustomId(config.SprintField); if (string.IsNullOrEmpty(jiraSettings.SprintField)) { Logger.Log(LogLevel.Warning, $"Sprint link field missing for config field '{config.SprintField}'."); } var mapper = new JiraMapper(jiraProvider, config); var localProvider = new WiItemProvider(migrationWorkspace); var exportedKeys = new HashSet<string>(Directory.EnumerateFiles(migrationWorkspace, "*.json").Select(f => Path.GetFileNameWithoutExtension(f))); var skips = forceFresh ? new HashSet<string>(Enumerable.Empty<string>()) : exportedKeys; var issues = jiraProvider.EnumerateIssues(jiraSettings.JQL, skips, downloadOptions); foreach (var issue in issues) { if (issue == null) continue; WiItem wiItem = mapper.Map(issue); if (wiItem != null) { localProvider.Save(wiItem); exportedItemsCount++; Logger.Log(LogLevel.Debug, $"Exported as type '{wiItem.Type}'."); } } } catch (CommandParsingException e) { Logger.Log(LogLevel.Error, $"Invalid command line option(s): {e}"); } catch (Exception e) { Logger.Log(e, $"Unexpected migration error."); } finally { EndSession(itemsCount, sw); } }
private static void BeginSession(string configFile, ConfigJson config, bool force, IJiraProvider jiraProvider, int itemsCount) { var toolVersion = VersionInfo.GetVersionInfo(); var osVersion = System.Runtime.InteropServices.RuntimeInformation.OSDescription.Trim(); var machine = System.Environment.MachineName; var user = $"{System.Environment.UserDomainName}\\{System.Environment.UserName}"; var jiraVersion = jiraProvider.GetJiraVersion(); Logger.Log(LogLevel.Info, $"Export started. Exporting {itemsCount} items."); Logger.StartSession("Jira Export", "jira-export-started", new Dictionary<string, string>() { { "Tool version :", toolVersion }, { "Start time :", DateTime.Now.ToString() }, { "Telemetry :", Logger.TelemetryStatus }, { "Session id :", Logger.SessionId }, { "Tool user :"******"Config :", configFile }, { "Force :", force ? "yes" : "no" }, { "Log level :", config.LogLevel }, { "Machine :", machine }, { "System :", osVersion }, { "Jira url :", jiraProvider.Settings.Url }, { "Jira user :"******"Jira version :", jiraVersion.Version }, { "Jira type :", jiraVersion.DeploymentType } }, new Dictionary<string, string>() { { "item-count", itemsCount.ToString() }, { "system-version", jiraVersion.Version }, { "hosting-type", jiraVersion.DeploymentType } }); }
public DirectumToJiraMapper(IEmployeeProvider employeeProvider, IJiraProvider jiraProvider, Cache cache) { _jiraProvider = jiraProvider ?? throw new ArgumentNullException(nameof(jiraProvider)); _employeeProvider = employeeProvider ?? throw new ArgumentNullException(nameof(employeeProvider)); _cache = cache ?? throw new ArgumentNullException(nameof(cache)); }
public DirectumRegistryChangeStrategy(IJiraProvider jiraProvider, IDirectumJiraExchangeProvider directumJiraExchangeProvider, DirectumToJiraMapper directumToJiraMapper) : base(jiraProvider, directumJiraExchangeProvider, directumToJiraMapper) { }
public ReportController(IJiraProvider jiraProvider, IProfileProvider profileProvider, ProfileMapper profileMapper) { _jiraProvider = jiraProvider; _profileProvider = profileProvider; _profileMapper = profileMapper; }