Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
            }
        }