/// <summary> /// </summary> private void btnBulkMergeTerms_Click(object sender, EventArgs e) { StartWait(); if (tbBulkMergeTerms.Text.IsNull()) { return; } this.Invoke((MethodInvoker) delegate { while (true) { TreeNode curNode = tvMMD.SelectedNode; if (curNode == null) { break; } if (curNode.Level != 2) { cout("Choose a termset."); break; } try { var termSet = MMDHelper.GetObj(txtSiteUrl.Text, curNode.Level, curNode) as TermSet; if (!string.IsNullOrEmpty(MMDHelper.errMsg)) { cout("ERROR", MMDHelper.errMsg); break; } if (termSet == null) { cout("ERROR", "Termset not found."); break; } var newTerms = GenUtil.NormalizeEol(tbBulkMergeTerms.Text.Trim()) .Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Where(x => x.Trim().Length > 0) .Distinct() .ToList <string>(); bool termsAdded = false; foreach (var newTerm in newTerms) { var termSearchResults = termSet.GetTerms(newTerm.Trim(), false, StringMatchOption.ExactMatch, 1, false); if (termSearchResults.Any()) { cout(string.Format("Term found, skipping: {0}", newTerm.Trim())); } else { cout(string.Format("Term not found, creating new term: {0}", newTerm.Trim())); try { var termCreated = termSet.CreateTerm(newTerm.Trim(), CultureInfo.CurrentCulture.LCID); termsAdded = true; } catch (Exception ex) { cout("ERROR creating new term: " + ex.Message); } } } if (termsAdded) { termSet.TermStore.CommitAll(); } } catch (Exception exc) { cout("ERROR Bulk Merging Terms", exc.Message); } break; // #important } }); StopWait(); }