Example #1
0
        private static void UpdateTerm(TermSetItem termSet, ManagedMetadataEntity entity, IEnumerable <IEnumerable <ManagedMetadataEntity> > termLevels, int currLevel)
        {
            int    lcid     = entity.LCID.HasValue ? entity.LCID.Value : 1033;
            string termName = TaxonomyItem.NormalizeName(entity.GetTermLevel(currLevel));

            if (string.IsNullOrEmpty(termName))
            {
                return;
            }

            Term term = termSet is TermSet
                            ? (termSet as TermSet).GetTerms(termName, lcid, true, StringMatchOption.ExactMatch, 1, false).
                        FirstOrDefault()
                            : termSet.Terms.FirstOrDefault(t => t.Name.Equals(termName, StringComparison.InvariantCulture));

            if (term == null)
            {
                //try
                //{
                term = termSet.CreateTerm(termName, lcid, Guid.NewGuid());
                term.IsAvailableForTagging = entity.AvailableForTagging;
                //}
                //catch (Exception ex)
                //{
                //}
            }

            LabelCollection allLabels = term.GetAllLabels(lcid);

            if (allLabels.Count == 0 || !allLabels.Select(x => x.Value).Contains(termName))
            {
                //try
                //{
                term.CreateLabel(termName, lcid, true);
                term.SetDescription(entity.TermDescription, lcid);
                //}
                //catch (Exception ex)
                //{
                //}
            }

            if (termLevels == null)
            {
                return;
            }
            if (currLevel >= termLevels.Count())
            {
                return;
            }

            IEnumerable <ManagedMetadataEntity> childList =
                termLevels.ElementAt(currLevel).Where(
                    t => t.HasSameLevelTerm(currLevel, entity));

            foreach (ManagedMetadataEntity childEntity in childList)
            {
                UpdateTerm(term, childEntity, termLevels, currLevel + 1);
            }
        }
        private static void UpdateTerm(TermSetItem termSet, ManagedMetadataEntity entity, IEnumerable<IEnumerable<ManagedMetadataEntity>> termLevels, int currLevel)
        {
            int lcid = entity.LCID.HasValue ? entity.LCID.Value : 1033;
            string termName = TaxonomyItem.NormalizeName(entity.GetTermLevel(currLevel));

            if (string.IsNullOrEmpty(termName))
            {
                return;
            }

            Term term = termSet is TermSet
                            ? (termSet as TermSet).GetTerms(termName, lcid, true, StringMatchOption.ExactMatch, 1, false).
                                  FirstOrDefault()
                            : termSet.Terms.FirstOrDefault(t => t.Name.Equals(termName, StringComparison.InvariantCulture));

            if (term == null)
            {
                //try
                //{
                term = termSet.CreateTerm(termName, lcid, Guid.NewGuid());
                term.IsAvailableForTagging = entity.AvailableForTagging;
                //}
                //catch (Exception ex)
                //{
                //}
            }

            LabelCollection allLabels = term.GetAllLabels(lcid);

            if (allLabels.Count == 0 || !allLabels.Select(x => x.Value).Contains(termName))
            {
                //try
                //{
                term.CreateLabel(termName, lcid, true);
                term.SetDescription(entity.TermDescription, lcid);
                //}
                //catch (Exception ex)
                //{
                //}
            }

            if (termLevels == null) { return; }
            if (currLevel >= termLevels.Count()) return;

            IEnumerable<ManagedMetadataEntity> childList =
                termLevels.ElementAt(currLevel).Where(
                    t => t.HasSameLevelTerm(currLevel, entity));

            foreach (ManagedMetadataEntity childEntity in childList)
            {
                UpdateTerm(term, childEntity, termLevels, currLevel + 1);
            }
        }