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 void CreateFileSystemItem(FileSystemItemType type, string content)
        {
            var newItem = fileSystemItemCreator.Create(type, content, openedFileSystemItem, FileSystemItemAreaType.Miniature);

            openedFileSystemItem.AddChild(newItem);

            FileSystemItems.Insert(0, newItem);
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        public async Task <IFileSystemItem> GetItem(Guid key)
        {
            await EnsureInitialized();

            FileSystemItem item;

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

            return(null);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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;
            }
        }
Beispiel #8
0
        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;
        }
Beispiel #9
0
 public async Task <IFileSystemItem> GetFileSystemItem(Expression <Func <IFileSystemItem, bool> > filter)
 {
     return(await Task.Run(() => FileSystemItems.SingleOrDefault(filter)));
 }
Beispiel #10
0
 private void RemoveFileSystemItems(IEnumerable <FileSystemItem> items)
 {
     items.ToList().ForEach(p => FileSystemItems.Remove(p.Key));
 }