示例#1
0
        public IFolderContent[] Search(string name, int page)
        {
            return(_concurrentManager.PerformWithSynchronization(
                       new List <IFolderContent>()
            {
                new FolderContent(_constance.HomeFolderName, _constance.HomeFolderPath, FolderContentType.Folder)
            },
                       () =>
            {
                var numOfElementToSkip = (page - 1) * _constance.DefaultNumberOfElementOnPage;
                if (_searchCache.Contains(name))
                {
                    var searchResult = _searchCache.GetFromCache(name);
                    return searchResult.Skip(numOfElementToSkip).Take(_constance.DefaultNumberOfElementOnPage).ToArray();
                }

                var result = new List <IFolderContent>();
                var homeFolder = _folderContentFolderService.GetFolder(_constance.HomeFolderName, _constance.HomeFolderPath);
                RecursiveSearch(name, homeFolder, result);

                _searchCache.AddToCache(name, result.ToArray());

                var resultPageArray = result.Skip(numOfElementToSkip).Take(_constance.DefaultNumberOfElementOnPage)
                                      .ToArray();
                return resultPageArray;
            }));
        }
示例#2
0
        public string OnNewSearch(SearchObject searchObject)
        {
            string searchGuid = _searchCache.AddToCache(searchObject);

            return(searchGuid);
        }