/// <summary>
        /// </summary>
        private static void ExportToCsv(List <MsExportObject> lstExObjs, string fileName)
        {
            StringBuilder sb = new StringBuilder("");

            sb.AppendLine(
                "\"Term Set Name\",\"Term Set Description\",\"LCID\",\"Available for Tagging\",\"Term Description\",\"Level 1 Term\",\"Level 2 Term\",\"Level 3 Term\",\"Level 4 Term\",\"Level 5 Term\",\"Level 6 Term\",\"Level 7 Term\"");

            foreach (var msExportObject in lstExObjs)
            {
                sb.AppendLine((string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9},{10},{11}",
                                             GenUtil.MmdDenormalize(msExportObject.TermSetName),
                                             msExportObject.TermSetDescription,
                                             msExportObject.Lcid,
                                             msExportObject.AvailableforTagging,
                                             msExportObject.TermDescription,
                                             GenUtil.MmdDenormalize(msExportObject.Level1Term),
                                             GenUtil.MmdDenormalize(msExportObject.Level2Term),
                                             GenUtil.MmdDenormalize(msExportObject.Level3Term),
                                             GenUtil.MmdDenormalize(msExportObject.Level4Term),
                                             GenUtil.MmdDenormalize(msExportObject.Level5Term),
                                             GenUtil.MmdDenormalize(msExportObject.Level6Term),
                                             GenUtil.MmdDenormalize(msExportObject.Level7Term)
                                             )));
            }

            FileStream   fs     = new FileStream(fileName, FileMode.Create);
            StreamWriter writer = new StreamWriter(fs);

            writer.Write(sb.ToString());
            writer.Close();
            fs.Close();
        }
        /// <summary>
        /// </summary>
        private static void ExportToXml(ref XmlWriter xmlWriter, TermSet termSet, Term term)
        {
            if (termSet != null)
            {
                // export termset
                xmlWriter.WriteStartElement("termset"); // <termset>
                xmlWriter.WriteAttributeString("name", GenUtil.MmdDenormalize(termSet.Name));
                xmlWriter.WriteAttributeString("id", termSet.Id.ToString());
                xmlWriter.WriteAttributeString("description", termSet.Description);
                xmlWriter.WriteAttributeString("isavailfortagging", (termSet.IsAvailableForTagging ? "true" : "false"));
                xmlWriter.WriteAttributeString("isopenfortermcreation", (termSet.IsOpenForTermCreation ? "true" : "false"));

                foreach (var curTerm in termSet.Terms)
                {
                    ExportToXml(ref xmlWriter, null, curTerm);
                }

                xmlWriter.WriteEndElement(); // </termset>
            }
            else if (term != null)
            {
                // export term
                xmlWriter.WriteStartElement("term"); // <term>
                xmlWriter.WriteAttributeString("name", GenUtil.MmdDenormalize(term.Name));
                xmlWriter.WriteAttributeString("id", term.Id.ToString());
                xmlWriter.WriteAttributeString("description", term.GetDescription());
                xmlWriter.WriteAttributeString("isavailfortagging", term.IsAvailableForTagging ? "true" : "false");
                xmlWriter.WriteAttributeString("reuse", !term.IsRoot && term.IsReused ? "true" : "false");
                xmlWriter.WriteAttributeString("reusebranch", "false"); // #todo# how to determine if reusebranch is true?

                if (term.Labels.Count > 0)
                {
                    foreach (var label in term.Labels)
                    {
                        if (label.Value != term.Name)
                        {
                            xmlWriter.WriteStartElement("label"); // <label>
                            xmlWriter.WriteAttributeString("name", GenUtil.MmdDenormalize(label.Value));
                            xmlWriter.WriteEndElement();          // </label>
                        }
                    }
                }

                foreach (var curTerm in term.Terms)
                {
                    ExportToXml(ref xmlWriter, null, curTerm);
                }

                xmlWriter.WriteEndElement(); // </term>
            }
        }
Пример #3
0
        /// <summary>
        /// </summary>
        private void btnCreateTerm_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Are you sure?", "Confirm", MessageBoxButtons.YesNo) != DialogResult.Yes)
            {
                return;
            }

            StartWait();

            this.Invoke((MethodInvoker) delegate
            {
                while (true)
                {
                    TreeNode curNode = tvMMD.SelectedNode;

                    if (curNode == null)
                    {
                        break;
                    }

                    if (txtTermName.Text.Trim().Length == 0)
                    {
                        cout("Cannot create term, name is required.");
                        break;
                    }

                    Term newTerm = null;

                    try
                    {
                        if (curNode.Level == 2)
                        {
                            // add term to termset
                            TermSet tSet = MMDHelper.GetObj(txtSiteUrl.Text, curNode.Level, curNode) as TermSet;

                            if (!string.IsNullOrEmpty(MMDHelper.errMsg))
                            {
                                cout("ERROR", MMDHelper.errMsg);
                                break;
                            }

                            if (GenUtil.IsNull(txtNewTermGuid.Text) ||
                                txtNewTermGuid.Text.Trim().ToLower() == NewTermGuidLabel.Trim().ToLower() ||
                                !GenUtil.IsGuid(txtNewTermGuid.Text))
                            {
                                newTerm = tSet.CreateTerm(GenUtil.MmdNormalize(txtTermName.Text), CultureInfo.CurrentCulture.LCID);
                            }
                            else
                            {
                                if (!GenUtil.IsGuid(txtNewTermGuid.Text))
                                {
                                    MessageBox.Show("Cannot create term, invalid new term Guid.");
                                    break;
                                }
                                else
                                {
                                    newTerm = tSet.CreateTerm(GenUtil.MmdNormalize(txtTermName.Text), CultureInfo.CurrentCulture.LCID, new Guid(txtNewTermGuid.Text));
                                }
                            }
                        }
                        else if (curNode.Level >= 3)
                        {
                            // add term to term
                            Term term = MMDHelper.GetObj(txtSiteUrl.Text, curNode.Level, curNode) as Term;

                            if (!string.IsNullOrEmpty(MMDHelper.errMsg))
                            {
                                cout("ERROR", MMDHelper.errMsg);
                                break;
                            }

                            if (GenUtil.IsNull(txtNewTermGuid.Text) ||
                                txtNewTermGuid.Text.Trim().ToLower() == NewTermGuidLabel.Trim().ToLower() ||
                                !GenUtil.IsGuid(txtNewTermGuid.Text))
                            {
                                newTerm = term.CreateTerm(GenUtil.MmdNormalize(txtTermName.Text), CultureInfo.CurrentCulture.LCID);
                            }
                            else
                            {
                                if (!GenUtil.IsGuid(txtNewTermGuid.Text))
                                {
                                    MessageBox.Show("Cannot create term, invalid new term Guid.");
                                    break;
                                }
                                else
                                {
                                    newTerm = term.CreateTerm(GenUtil.MmdNormalize(txtTermName.Text), CultureInfo.CurrentCulture.LCID, new Guid(txtNewTermGuid.Text));
                                }
                            }
                        }
                        else
                        {
                            MessageBox.Show("Cannot create term in current location, select a termset or term.");
                            break;
                        }

                        if (newTerm != null)
                        {
                            newTerm.IsAvailableForTagging = chkTermIsAvailableForTagging.Checked;

                            // labels
                            if (!GenUtil.IsNull(txtTermLabels.Text))
                            {
                                foreach (string lbl in GenUtil.MmdNormalize(txtTermLabels.Text).Split(new char[] { ';' }))
                                {
                                    if (!GenUtil.IsNull(lbl) &&
                                        lbl.ToLower() != GenUtil.MmdNormalize(newTerm.Name).ToLower())
                                    {
                                        newTerm.CreateLabel(lbl, CultureInfo.CurrentCulture.LCID, false);
                                    }
                                }
                            }

                            newTerm.TermStore.CommitAll();

                            // add term to tree
                            TreeNode newNode = new TreeNode();
                            newNode.Text     = string.Format("{0} [0]", GenUtil.MmdDenormalize(newTerm.Name));
                            newNode.Name     = newTerm.Id.ToString();

                            curNode.Nodes.Add(newNode);
                            curNode.Expand();

                            cout("New Term Created");

                            txtNewTermGuid.Text = NewTermGuidLabel;
                        }
                    }
                    catch (Exception ex)
                    {
                        cout("ERROR creating term", ex.Message);
                    }

                    break;
                }
            });

            StopWait();
        }
Пример #4
0
        /// <summary>
        /// </summary>
        private void btnCreateTermSet_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Are you sure?", "Confirm", MessageBoxButtons.YesNo) != DialogResult.Yes)
            {
                return;
            }

            StartWait();

            this.Invoke((MethodInvoker) delegate
            {
                while (true)
                {
                    TreeNode curNode = tvMMD.SelectedNode;

                    if (curNode == null)
                    {
                        break;
                    }

                    if (txtTermSetName.Text.Trim().Length == 0)
                    {
                        cout("Cannot create termset, name is required.");
                        break;
                    }

                    Group tGroup = null;

                    if (curNode.Level == 1)
                    {
                        // create new termset in group
                        tGroup = MMDHelper.GetObj(txtSiteUrl.Text, curNode.Level, curNode) as Group;

                        if (!string.IsNullOrEmpty(MMDHelper.errMsg))
                        {
                            cout("ERROR", MMDHelper.errMsg);
                            break;
                        }
                    }
                    else
                    {
                        MessageBox.Show("Cannot create termset in current location, select a group.");
                        break;
                    }

                    if (tGroup != null)
                    {
                        if (tGroup.TermSets.Any(x =>
                                                GenUtil.MmdNormalize(x.Name).ToLower() == GenUtil.MmdNormalize(txtTermSetName.Text).ToLower()))
                        {
                            cout("Cannot create termset, name not unique.");
                            break;
                        }

                        try
                        {
                            // create new termset
                            TermSet tSet = tGroup.CreateTermSet(GenUtil.MmdNormalize(txtTermSetName.Text.Trim()));
                            tSet.IsAvailableForTagging = chkTermSetIsAvailableForTagging.Checked;
                            tSet.Description           = txtTermSetDescription.Text.Trim();
                            tSet.TermStore.CommitAll();

                            // add termset to tree
                            TreeNode newNode = new TreeNode();
                            newNode.Text     = string.Format("{0} [0]", GenUtil.MmdDenormalize(tSet.Name));
                            newNode.Name     = tSet.Id.ToString();

                            curNode.Nodes.Add(newNode);
                            curNode.Expand();

                            cout("New TermSet Created");
                        }
                        catch (Exception exc)
                        {
                            cout("ERROR creating termset", exc.Message);
                        }
                    }

                    break;
                }
            });

            StopWait();
        }
Пример #5
0
        /// <summary>
        /// Load Node details (termstore, group, termset, term)
        /// </summary>
        void tvMMD_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            StartWait();

            this.Invoke((MethodInvoker) delegate
            {
                while (true)
                {
                    if (e.Node.Level == 0)
                    {
                        // termstore, load current node detail
                        TermStore tStore = MMDHelper.GetObj(txtSiteUrl.Text, e.Node.Level, e.Node) as TermStore;

                        if (!string.IsNullOrEmpty(MMDHelper.errMsg))
                        {
                            cout("ERROR", MMDHelper.errMsg);
                            break;
                        }

                        txtTermStoreId.Text   = tStore.Id.ToString();
                        txtTermStoreName.Text = tStore.Name ?? "";

                        txtCurSelNode.Text = tStore.Name;

                        // select tab
                        tabControl1.SelectTab(tabTermStore);
                    }
                    else if (e.Node.Level == 1)
                    {
                        // termgroup, load current node detail
                        Group tGroup = MMDHelper.GetObj(txtSiteUrl.Text, e.Node.Level, e.Node) as Group;

                        if (!string.IsNullOrEmpty(MMDHelper.errMsg))
                        {
                            cout("ERROR", MMDHelper.errMsg);
                            break;
                        }

                        txtTermGroupId.Text    = tGroup.Id.ToString();
                        txtTermGroupName.Text  = tGroup.Name ?? "";
                        txtTermGroupDescr.Text = tGroup.Description ?? "";

                        txtCurSelNode.Text = tGroup.Name;

                        // select tab
                        tabControl1.SelectTab(tabGroup);
                    }
                    else if (e.Node.Level == 2)
                    {
                        // termset
                        TermSet tSet = MMDHelper.GetObj(txtSiteUrl.Text, e.Node.Level, e.Node) as TermSet;

                        if (!string.IsNullOrEmpty(MMDHelper.errMsg))
                        {
                            cout("ERROR", MMDHelper.errMsg);
                            break;
                        }

                        txtTermSetCustomSortOrder.Text = tSet.CustomSortOrder;
                        txtTermSetDescription.Text     = tSet.Description;
                        txtTermSetId.Text = tSet.Id.ToString();
                        chkTermSetIsAvailableForTagging.Checked = tSet.IsAvailableForTagging;
                        txtTermSetIsOpenForTermCreation.Text    = tSet.IsOpenForTermCreation.ToString();
                        txtTermSetLastModifiedDate.Text         = tSet.LastModifiedDate.ToString();
                        txtTermSetName.Text = GenUtil.MmdDenormalize(tSet.Name);

                        txtCurSelNode.Text = tSet.Name;

                        // select tab
                        tabControl1.SelectTab(tabTermSet);
                    }
                    else if (e.Node.Level >= 3)
                    {
                        // term
                        Term term = MMDHelper.GetObj(txtSiteUrl.Text, e.Node.Level, e.Node) as Term;

                        if (!string.IsNullOrEmpty(MMDHelper.errMsg))
                        {
                            cout("ERROR", MMDHelper.errMsg);
                            break;
                        }

                        txtTermCreatedDate.Text     = term.CreatedDate.ToString();
                        txtTermCustomSortOrder.Text = term.CustomSortOrder;
                        txtTermId.Text = term.Id.ToString();
                        chkTermIsAvailableForTagging.Checked = term.IsAvailableForTagging;
                        chkTermIsKeyword.Checked             = term.IsKeyword;
                        chkTermIsReused.Checked      = term.IsReused;
                        chkTermIsRoot.Checked        = term.IsRoot;
                        chkTermIsSourceTerm.Checked  = term.IsSourceTerm;
                        txtTermLabels.Text           = GenUtil.MmdDenormalize(GenUtil.LabelsToString(term.Labels, term.Name));
                        txtTermLastModifiedDate.Text = term.LastModifiedDate.ToString();
                        txtTermName.Text             = GenUtil.MmdDenormalize(term.Name);
                        txtTermTermsCount.Text       = term.TermsCount.ToString();

                        txtCurSelNode.Text = term.Name;

                        // select tab
                        tabControl1.SelectTab(tabTerm);

                        txtNewTermGuid.Text = NewTermGuidLabel;
                    }

                    break;
                }
            });

            StopWait();
        }
        /// <summary>
        /// Recursive writer of terms
        /// </summary>
        private static void WriteTerm(string termStoreName, string groupName, string termSetName, Term term, int level, bool splitLevels)
        {
            string id   = GenUtil.CSVer(term.Id.ToString());
            string name = GenUtil.CSVer(term.Name);

            // get labels
            //List<string> lstLabels = term.Labels.Where(x => x.Value != term.Name).Select(x => GenUtil.CSVer(x.Value)).ToList<string>();

            //string labels = string.Join(",", lstLabels.ToArray<string>());

            //if (term.Labels.Count <= 0)
            //    labels = "";

            // get parent
            Term termParent = term.Parent;

            string termParentId   = "null";
            string termParentName = "null";

            if (termParent != null)
            {
                termParentId   = GenUtil.CSVer(termParent.Id.ToString());
                termParentName = GenUtil.CSVer(termParent.Name);
            }


            if (splitLevels)
            {
                foreach (Microsoft.SharePoint.Taxonomy.Label lbl in term.Labels)
                {
                    sbOutput.Append(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}" + Environment.NewLine,
                                                  termStoreName,
                                                  groupName,
                                                  GenUtil.MmdDenormalize(termSetName),
                                                  level.ToString(),
                                                  termParentId,
                                                  GenUtil.MmdDenormalize(termParentName),
                                                  id,
                                                  GenUtil.MmdDenormalize(GenUtil.CSVer(term.Name)),
                                                  GenUtil.MmdDenormalize(GenUtil.CSVer(lbl.Value)),
                                                  lbl.IsDefaultForLanguage.ToString()
                                                  ));
                }
            }
            else
            {
                // get labels, not including termname (default label)
                //var lstLabels = term.Labels.Where(x => x.Value != term.Name).Select(x => GenUtil.CSVer(x.Value)).ToList<string>();
                var lstLabels = term.Labels.Where(x => !x.IsDefaultForLanguage).Select(x => GenUtil.CSVer(x.Value)).ToList <string>();

                string labels = string.Join(",", lstLabels.ToArray <string>());

                if (term.Labels.Count <= 0)
                {
                    labels = "";
                }

                sbOutput.Append(string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}" + Environment.NewLine,
                                              termStoreName,
                                              groupName,
                                              GenUtil.MmdDenormalize(termSetName),
                                              level.ToString(),
                                              termParentId,
                                              GenUtil.MmdDenormalize(termParentName),
                                              id,
                                              GenUtil.MmdDenormalize(name),
                                              GenUtil.MmdDenormalize(labels)));
            }


            if (term.Terms.Count > 0)
            {
                level++;

                foreach (Term childTerm in term.Terms)
                {
                    WriteTerm(termStoreName, groupName, termSetName, childTerm, level, splitLevels);
                }
            }
        }