Esempio n. 1
0
        /// <summary>
        ///		Borra un blob
        /// </summary>
        private async Task DeleteBlobAsync(NodeStorageContainerFileViewModel item)
        {
            if (item != null &&
                SolutionViewModel.MainViewModel.MainController.HostController.SystemController.ShowQuestion($"¿Desea elimina el blob '{item.Text}'?"))
            {
                using (BlockLogModel block = SolutionViewModel.MainViewModel.MainController.Logger.Default.CreateBlock(LogModel.LogType.Info, "Comienza el borrado de blobs"))
                {
                    // Borra los elementos
                    try
                    {
                        ICloudStorageManager manager = new StorageManager().OpenAzureStorageBlob(item.Storage.GetNormalizedConnectionString());

                        // Borra cada uno de los blobs del nodo
                        foreach (BlobNodeModel blob in GetBlobs(item.Blob))
                        {
                            // Log
                            block.Info($"Borrando {blob.Blob.FullFileName}");
                            // Borra el blob
                            await manager.DeleteAsync(blob.Blob.Container, blob.Blob.FullFileName);
                        }
                    }
                    catch (Exception exception)
                    {
                        SolutionViewModel.MainViewModel.MainController.Logger.Default.LogItems.Error($"Error al borrar el blob. {exception.Message}");
                    }
                    // Log
                    block.Info("Fin del borrado de blobs");
                    SolutionViewModel.MainViewModel.MainController.Logger.Flush();
                    // Actualiza el árbol
                    Load();
                }
            }
        }
        /// <summary>
        ///		Añade un nodo al árbol de nodos reproduciendo la estructura de directorios
        /// </summary>
        private List <BaseTreeNodeViewModel> GetTreeNodes(List <BlobNodeModel> blobs, IHierarchicalViewModel parent)
        {
            List <BaseTreeNodeViewModel> nodes = new List <BaseTreeNodeViewModel>();

            // Añade los nodos
            foreach (BlobNodeModel blob in blobs)
            {
                BaseTreeNodeViewModel node = new NodeStorageContainerFileViewModel(TreeViewModel, parent, Storage, blob, blob.Children.Count > 0);

                // Añade los nodos hijo
                if (blob.Children.Count > 0)
                {
                    List <BaseTreeNodeViewModel> children = GetTreeNodes(blob.Children, node);

                    foreach (BaseTreeNodeViewModel child in children)
                    {
                        node.Children.Add(child);
                    }
                }
                // Añade el nodo a la lista
                nodes.Add(node);
            }
            // Devuelve la colección de nodos
            return(nodes);
        }