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"); } } }
public void CreateFileSystemItem(FileSystemItemType type, string content) { var newItem = fileSystemItemCreator.Create(type, content, openedFileSystemItem, FileSystemItemAreaType.Miniature); openedFileSystemItem.AddChild(newItem); FileSystemItems.Insert(0, newItem); }
public virtual async Task <ITag> GetTag(string path, string name) { var item = await FileSystemItems.AsNoTracking().SingleOrDefaultAsync(i => i.Path == path); if (item == null) { throw new Exception($"Item could not be found: {path}"); } return(await GetTag(item.Id, name)); }
public virtual async Task <ITag> CreateTag(Guid id, string name, string value) { var item = await FileSystemItems.AsNoTracking().SingleOrDefaultAsync(i => i.Id == id); if (item == null) { throw new Exception($"Item could not be found: {id}"); } return(await CreateTag(item, name, value)); }
public async Task <IFileSystemItem> GetItem(Guid key) { await EnsureInitialized(); FileSystemItem item; if (FileSystemItems.TryGetValue(key, out item)) { return(item); } return(null); }
private T AddFileSystemItem <T>(T item) where T : FileSystemItem { if (item == null) { throw new ArgumentNullException(nameof(item)); } if (FileSystemItems.ContainsKey(item.Key)) { throw new ArgumentException($"Item {item.Key} is already added"); } FileSystemItems.Add(item.Key, item); return(item); }
private void ChangeOpenedItemsByNewItemType() { switch (openedFileSystemItem.Type) { case FileSystemItemType.Directory: FileSystemItems.AddRange(openedFileSystemItem.Children); break; case FileSystemItemType.File: openedFileSystemItem.ModifyArea(FileSystemItemAreaType.MaximumArea); FileSystemItems.Add(openedFileSystemItem); break; } }
public FavoriteItemViewModel(IEnumerable <WorkspaceItemModel> fileSystemItems, Guid key = default(Guid)) { if (fileSystemItems == null) { throw new ArgumentNullException(nameof(fileSystemItems)); } Key = key; FileSystemItems = fileSystemItems.Where(f => f.Kind == WorkspaceItemKindEnum.File || f.Kind == WorkspaceItemKindEnum.InputStream).ToArray(); var inputStream = FileSystemItems.FirstOrDefault(f => f.Kind == WorkspaceItemKindEnum.InputStream); if (inputStream == null) { throw new InvalidOperationException($"Input stream is not presented in the list of file system items"); } InputStreamKey = inputStream.Key; }
public async Task <IFileSystemItem> GetFileSystemItem(Expression <Func <IFileSystemItem, bool> > filter) { return(await Task.Run(() => FileSystemItems.SingleOrDefault(filter))); }
private void RemoveFileSystemItems(IEnumerable <FileSystemItem> items) { items.ToList().ForEach(p => FileSystemItems.Remove(p.Key)); }