private static string GetTermLevel(ManagedMetadataEntity entity, int termLevel) { switch (termLevel) { case 1: return((entity.Level1Term ?? string.Empty).Trim()); case 2: return((entity.Level2Term ?? string.Empty).Trim()); case 3: return((entity.Level3Term ?? string.Empty).Trim()); case 4: return((entity.Level4Term ?? string.Empty).Trim()); case 5: return((entity.Level5Term ?? string.Empty).Trim()); case 6: return((entity.Level6Term ?? string.Empty).Trim()); case 7: return((entity.Level7Term ?? string.Empty).Trim()); default: return(string.Empty); } }
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); } }
public bool HasSameLevelTerm(int termLevel, ManagedMetadataEntity entity) { var levelTerms = new[] { Level1Term, Level2Term, Level3Term, Level4Term, Level5Term, Level6Term, Level7Term }; for (int i = 0; i < Math.Min(termLevel, levelTerms.Length); i++) { string levelTerm1 = (levelTerms[i] ?? string.Empty).Trim(); string levelTerm2 = GetTermLevel(entity, i + 1); if (!levelTerm1.Equals(levelTerm2)) { return false; } } return true; }
public bool HasSameLevelTerm(int termLevel, ManagedMetadataEntity entity) { var levelTerms = new[] { Level1Term, Level2Term, Level3Term, Level4Term, Level5Term, Level6Term, Level7Term }; for (int i = 0; i < Math.Min(termLevel, levelTerms.Length); i++) { string levelTerm1 = (levelTerms[i] ?? string.Empty).Trim(); string levelTerm2 = GetTermLevel(entity, i + 1); if (!levelTerm1.Equals(levelTerm2)) { return(false); } } return(true); }
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 ManagedMetadataEntity GetEntity(IEnumerable<string> values) { if (values == null) { return null; } int count = values.Count(); ManagedMetadataEntity entity = new ManagedMetadataEntity(); if (count > 0) { try { entity.TermSetName = values.ElementAt(0); if (count > 1) { entity.TermSetDescription = values.ElementAt(1); if (count > 2) { int lcid; if (int.TryParse(values.ElementAt(2), out lcid)) { entity.LCID = entity.LCID == default(int) ? 1033 : lcid; } if (count > 3) { bool availableForTagging; if (bool.TryParse(values.ElementAt(3), out availableForTagging)) { entity.AvailableForTagging = availableForTagging; } if (count > 4) { entity.TermDescription = values.ElementAt(4); if (count > 5) { entity.Level1Term = values.ElementAt(5); if (count > 6) { entity.Level2Term = values.ElementAt(6); } if (count > 7) { entity.Level3Term = values.ElementAt(7); } if (count > 8) { entity.Level4Term = values.ElementAt(8); } if (count > 9) { entity.Level5Term = values.ElementAt(9); } if (count > 10) { entity.Level6Term = values.ElementAt(10); } if (count > 11) { entity.Level7Term = values.ElementAt(11); } } } } } } } catch (Exception ex) { } } return entity; }
private static string GetTermLevel(ManagedMetadataEntity entity, int termLevel) { switch (termLevel) { case 1: return (entity.Level1Term ?? string.Empty).Trim(); case 2: return (entity.Level2Term ?? string.Empty).Trim(); case 3: return (entity.Level3Term ?? string.Empty).Trim(); case 4: return (entity.Level4Term ?? string.Empty).Trim(); case 5: return (entity.Level5Term ?? string.Empty).Trim(); case 6: return (entity.Level6Term ?? string.Empty).Trim(); case 7: return (entity.Level7Term ?? string.Empty).Trim(); default: return string.Empty; } }
private static ManagedMetadataEntity GetEntity(IEnumerable <string> values) { if (values == null) { return(null); } int count = values.Count(); ManagedMetadataEntity entity = new ManagedMetadataEntity(); if (count > 0) { try { entity.TermSetName = values.ElementAt(0); if (count > 1) { entity.TermSetDescription = values.ElementAt(1); if (count > 2) { int lcid; if (int.TryParse(values.ElementAt(2), out lcid)) { entity.LCID = entity.LCID == default(int) ? 1033 : lcid; } if (count > 3) { bool availableForTagging; if (bool.TryParse(values.ElementAt(3), out availableForTagging)) { entity.AvailableForTagging = availableForTagging; } if (count > 4) { entity.TermDescription = values.ElementAt(4); if (count > 5) { entity.Level1Term = values.ElementAt(5); if (count > 6) { entity.Level2Term = values.ElementAt(6); } if (count > 7) { entity.Level3Term = values.ElementAt(7); } if (count > 8) { entity.Level4Term = values.ElementAt(8); } if (count > 9) { entity.Level5Term = values.ElementAt(9); } if (count > 10) { entity.Level6Term = values.ElementAt(10); } if (count > 11) { entity.Level7Term = values.ElementAt(11); } } } } } } } catch (Exception ex) { } } return(entity); }