Пример #1
0
        /// <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();
        }