/// ------------------------------------------------------------------------------------ /// <summary> /// Writes this category to the the specified annotation, creating a new category if /// needed. /// </summary> /// ------------------------------------------------------------------------------------ internal void WriteToCache(IScrScriptureNote ann) { int ws = (string.IsNullOrEmpty(IcuLocale) ? ann.Cache.DefaultAnalWs : ScrNoteImportManager.GetWsForLocale(IcuLocale)); ICmPossibility category; if (CategoryPath.IndexOf(StringUtils.kChObject) != -1) { // The category specified the full path of the category possibility. category = ann.Cache.LangProject.TranslatedScriptureOA.NoteCategoriesOA.FindOrCreatePossibility( CategoryPath, ws); } else { // The category does not contain a delimiter, so we may need to search // the entire possibility tree for a matching category in case it is a // sub-possibility. category = ann.Cache.LangProject.TranslatedScriptureOA.NoteCategoriesOA.FindOrCreatePossibility( CategoryPath, ws, false); } IFdoReferenceSequence <ICmPossibility> categoryList = ann.CategoriesRS; if (!categoryList.Contains(category)) { categoryList.Add(category); } }