Beispiel #1
0
        private async Task RestoreFromDto(IList <FileSystemItemDto> dtos, Guid parentKey)
        {
            FileSystemItem parentItem;

            if (!FileSystemItems.TryGetValue(parentKey, out parentItem))
            {
                throw new InvalidOperationException($"Parent folder {parentKey} not found.");
            }

            var parentFolder = parentItem as FileSystemFolder;

            if (parentFolder == null)
            {
                throw new InvalidOperationException($"Key {parentKey} does not refer to a folder.");
            }

            foreach (var item in dtos.Where(d => d.ParentKey == parentKey))
            {
                switch (item.Kind)
                {
                case FileSystemItemKind.Folder:
                    AddFileSystemItem(new FileSystemFolder(item.Key, item.Name, parentFolder));
                    await RestoreFromDto(dtos, item.Key);

                    break;

                case FileSystemItemKind.File:
                    AddFileSystemItem(new FileSystemFile(item.Key, item.Name, parentFolder));
                    break;

                default:
                    throw new InvalidOperationException("Expected files and folders only");
                }
            }
        }
Beispiel #2
0
        public async Task <IFileSystemItem> GetItem(Guid key)
        {
            await EnsureInitialized();

            FileSystemItem item;

            if (FileSystemItems.TryGetValue(key, out item))
            {
                return(item);
            }

            return(null);
        }