public void Reset(IssueMigration migration) { migration.TempWorkItemId = default; migration.WorkItemId = default; migration.IssueImported = false; migration.Attachments.ForEach(a => a.Imported = false); Save(migration); }
public void Save(IssueMigration migration) { var file = _localDirs.GetIssueMigrationStatusFile(migration.IssueId); var json = JsonConvert.SerializeObject(migration, Formatting.Indented); // Intentionally not passing _cancellationToken. // I don't want to risk leaving file in a bad state. // small files should write quickly anyway. File.WriteAllText(file.FullName, json); }
private void UpdateAttachmentMigrationMetaData(IssueMigration migration, List <Attachment> attachments) { var attachmentsById = migration.Attachments.ToDictionary(a => Int64.Parse(_jiraContext.LocalDirs.GetAttachmentIdFromPath(a.File))); foreach (var attachment in attachments) { var attachmentMigration = attachmentsById.GetOrAdd(attachment.Id, key => new AttachmentMigration()); if (!attachmentMigration.Imported || !attachmentMigration.File.EndsWith(attachment.Filename)) { // if the item wasn't imported OR if a different file name is used // ... I don't think can happen, but... just in case attachmentMigration.Imported = false; var attachmentFile = _jiraContext.Api.GetAttachment(attachment).Result; var relativePath = _jiraContext.LocalDirs.GetRelativePath(attachmentFile); attachmentMigration.File = relativePath; } } }
public void UpdateMigrationMetaData(IssueMigration migration) { IssueId issueId = migration.IssueId; try { // waiting on results prevents overwhelming Jira API resulting in 503's var issueData = _jiraContext.Api.GetIssue(issueId).Result; if (issueData == null) { Logger.Error($"Failed to retrieve json data for {issueId}", issueId); return; } var issue = issueData.ToObject <Issue>(); migration.IssueType = issue.Fields.IssueType.Name; migration.Status = issue.Fields.Status.Name; migration.StatusCategory = issue.Fields.Status.StatusCategory.Name; var attachments = issue.Fields.Attachments; if (!issue.ChangeLog.Histories.Any()) { Logger.Warn("History missing for {issueId}", issueId); } UpdateAttachmentMigrationMetaData(migration, attachments); migration.ExportCompleted = true; _migrationRepository.Save(migration); AlertIfPartialPagedData(issueId, issueData); } catch (Exception e) { e.Data["IssueId"] = issueId.ToString(); throw; } }