private void RemoveEntry(EntryModel entry) { if (entry == null) { return; } foreach (var entryParentId in entry.ParentIds) { if (_folderDic.ContainsKey(entryParentId) && _folderDic[entryParentId].Entries.Contains(entry)) { _folderDic[entryParentId].Entries.Remove(entry); } } _entryGuids.Remove(entry.GetId()); RemoveFromSearchIndex(entry); }
private void AddEntry(EntryModel entry) { if (entry.Name.ToLower().Contains("league")) { entry.Name.ToLower(); } if (!FixParentModel(entry)) { return; } //already added if (_entryGuids.Contains(entry.GetId())) { return; } //if only garbage guid we are finished here if (entry.ParentIds.Contains(_garbageGuid)) { _folderDic[_garbageGuid].Entries.AddUniqueSorted(entry); } //else add to tree structure else { List <FolderModel> parentsToAdd = new List <FolderModel>(); lock (this) { //already added if (_entryGuids.Contains(entry.GetId())) { return; } _entryGuids.Add(entry.GetId()); //if only garbage guid we are finished here if (entry.ParentIds.Contains(_garbageGuid)) { _folderDic[_garbageGuid].Entries.AddUniqueSorted(entry); } else { //do children stuff foreach (var folderParentId in entry.ParentIds) { if (!_folderDic.ContainsKey(folderParentId)) { //parent folder not initialized yet if (!_folderGuidToEntryDic.ContainsKey(folderParentId)) { _folderGuidToEntryDic[folderParentId] = new List <EntryModel>(); } _folderGuidToEntryDic[folderParentId].Add(entry); } else { //parent folder active parentsToAdd.Add(_folderDic[folderParentId]); } } } } //add itself to all parents foreach (var folderModel in parentsToAdd) { folderModel.Entries.AddUniqueSorted(entry); } AddToSearchIndex(entry); } }