private ExportSvnParameters ExportZentaoBug(string svnRepository, string targetDirectory) { var bugs = new List <int>(); foreach (var rawBug in txtZentaoBug.Lines) { if (string.IsNullOrWhiteSpace(rawBug)) { continue; } var rawBugs = rawBug.Split(','); foreach (var raw in rawBugs) { if (!int.TryParse(raw.Trim(), out var bug)) { MessageBox.Show(string.Format("{0} 不是有效的数字", rawBug.Trim()), "错误", MessageBoxButtons.OK); return(null); } bugs.Add(bug); } } if (bugs.Count <= 0) { MessageBox.Show("没有输入禅道Bug号", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } var bugExporter = new ZentaoDbBugRevisionExporter(); var bugNumbers = bugExporter.Export(bugs); var filter = new HashSet <uint>(); foreach (var rawBugNumber in bugNumbers) { if (!filter.Contains(rawBugNumber)) { filter.Add(rawBugNumber); } } var svnRoot = new Uri(svnRepository); var parameters = new ExportSvnParameters { Numbers = new List <uint>(filter), SvnRepository = svnRoot, TargetDirectory = targetDirectory }; return(parameters); }
private ExportSvnParameters ExportSvnDirectly(string svnRepository, string targetDirectory) { var numbers = new List <uint>(); foreach (var rawNumber in txtNumbers.Lines) { if (string.IsNullOrWhiteSpace(rawNumber)) { continue; } var rawNumbers = rawNumber.Split(','); foreach (var raw in rawNumbers) { if (!uint.TryParse(raw.Trim(), out var number)) { MessageBox.Show(string.Format("{0} 不是有效的数字", rawNumber.Trim()), "错误", MessageBoxButtons.OK); return(null); } numbers.Add(number); } } if (numbers.Count <= 0) { MessageBox.Show("没有输入版本号", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return(null); } var svnRoot = new Uri(svnRepository); var parameters = new ExportSvnParameters { Numbers = numbers, SvnRepository = svnRoot, TargetDirectory = targetDirectory }; return(parameters); }
private ExportSvnParameters ExportZentaoBuild(string svnRepository, string targetDirectory) { var data = cbxZentaoBuild.SelectedItem as ZentaoBuildData; if (data == null) { return(null); } var rawNumbers = new List <uint>(); var storyExporter = new ZentaoDbStoryRevisionExporter(); var storyNumbers = storyExporter.Export(data.Stories); rawNumbers.AddRange(storyNumbers); var bugExporter = new ZentaoDbBugRevisionExporter(); var bugNumbers = bugExporter.Export(data.Bugs); rawNumbers.AddRange(bugNumbers); var filter = new HashSet <uint>(); foreach (var rawNumber in rawNumbers) { if (!filter.Contains(rawNumber)) { filter.Add(rawNumber); } } var svnRoot = new Uri(svnRepository); var parameters = new ExportSvnParameters { Numbers = new List <uint>(filter), SvnRepository = svnRoot, TargetDirectory = targetDirectory }; return(parameters); }
private void btnExport_Click(object sender, EventArgs e) { if (string.IsNullOrWhiteSpace(cbxSvnRepository.Text)) { errorProvider.SetError(cbxSvnRepository, "SVN 根路径不能为空"); return; } if (string.IsNullOrWhiteSpace(txtTargetDirectory.Text)) { errorProvider.SetError(txtTargetDirectory, "导出目录不能为空"); return; } if (string.IsNullOrWhiteSpace(txtNumbers.Text) || txtNumbers.Lines.Length == 0) { errorProvider.SetError(txtNumbers, "请输入要导出的内容"); } errorProvider.Clear(); var svnRepository = cbxSvnRepository.Text.Trim(); var svnRepositoryResult = ValidateSvnRepostory(svnRepository); if (!string.IsNullOrEmpty(svnRepositoryResult)) { MessageBox.Show(svnRepositoryResult, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } var targetDirectory = txtTargetDirectory.Text.Trim(); var targetResult = ValidateTargetDirectory(targetDirectory); if (!string.IsNullOrEmpty(targetResult)) { MessageBox.Show(targetResult, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } lock (_svnExportMutex) { _svnExportLog.Clear(); _svnDeleteLog.Clear(); } ExportSvnParameters parameters = null; // SVN Revision if (tbExportWay.SelectedTab == tabPageSvnRevision) { parameters = ExportSvnDirectly(svnRepository, targetDirectory); } // 禅道Build else if (tbExportWay.SelectedTab == tabPageZentaoBuild) { parameters = ExportZentaoBuild(svnRepository, targetDirectory); } // 禅道Bug else if (tbExportWay.SelectedTab == tabPageZentaoBug) { parameters = ExportZentaoBug(svnRepository, targetDirectory); } else if (tbExportWay.SelectedTab == tabPageZentaoStory) { parameters = ExportZentaoStory(svnRepository, targetDirectory); } if (parameters != null) { btnExport.Enabled = false; exportSvnBackgroundWorker.RunWorkerAsync(parameters); } }