Exemple #1
0
        public static FileSystemEntry FromDirectory(DirectoryInfo directory, string virtualPath)
        {
            Require.NotNull(directory, "directory");

            return new FileSystemEntry
            {
                Name = directory.Name,
                FullName = directory.FullName,
                IsDirectory = true,
                VirtualPath = virtualPath,
                IsHidden = directory.IsHidden(),
                CreationTime = directory.CreationTime,
                LastWriteTime = directory.LastWriteTime
            };
        }
Exemple #2
0
        private void LoadViews(WidgetDefinition widget)
        {
            var viewsDir = new DirectoryInfo(Server.MapPath(widget.ViewsFolderVirtualPath));
            if (!viewsDir.Exists)
            {
                return;
            }

            foreach (var viewDir in viewsDir.GetDirectories())
            {
                if (viewsDir.IsHidden()) continue;

                var viewFile = viewDir.GetFiles("Default.*", SearchOption.TopDirectoryOnly).FirstOrDefault();
                var view = new WidgetViewDefinition(widget)
                {
                    Name = viewDir.Name,
                    Extension = viewFile.Extension
                };
                widget.Views.Add(view);
            }
        }
Exemple #3
0
        public static FSGraph Create(string root)
        {
            var graph = new FSGraph();
            var dirs = new Stack<string>(20);

            if (!Directory.Exists(root))
            {
                throw new ArgumentException();
            }
            dirs.Push(root);

            while (dirs.Count > 0)
            {
                string currentDir = dirs.Pop();
                var dirInfo = new DirectoryInfo(currentDir);

                if (dirInfo.IsHidden())
                {
                    var vertex1 = graph.Vertices.SingleOrDefault(v => v.FullName == dirInfo.FullName);

                    if (vertex1 == null)
                        vertex1 = new FSVertex(dirInfo.Name, dirInfo.FullName, dirInfo.GetFriendlySize(), VertexType.Directory,
                            dirInfo.CreationTime, dirInfo.LastAccessTime, dirInfo.LastWriteTime);

                    graph.AddVertex(vertex1);

                    string[] subDirs = null;
                    try
                    {
                        subDirs = Directory.GetDirectories(currentDir);

                        foreach (string dir in subDirs)
                        {
                            var dirInfo2 = new DirectoryInfo(dir);
                            if (dirInfo2.IsHidden())
                            {
                                var vertex2 = graph.Vertices.SingleOrDefault(v => v.FullName == dirInfo2.FullName);

                                if (vertex2 == null)
                                    vertex2 = new FSVertex(dirInfo2.Name, dirInfo2.FullName, dirInfo2.GetFriendlySize(), VertexType.Directory,
                                        dirInfo2.CreationTime, dirInfo2.LastAccessTime, dirInfo2.LastWriteTime);

                                graph.AddVertex(vertex2);
                                var edge = new FSEdge(vertex1, vertex2);
                                graph.AddEdge(edge);
                            }
                        }
                    }
                    catch (UnauthorizedAccessException) { }
                    catch (DirectoryNotFoundException) { }

                    string[] files = null;
                    try
                    {
                        files = Directory.GetFiles(currentDir);
                    }
                    catch (UnauthorizedAccessException) {}
                    catch (DirectoryNotFoundException) {}

                    if (files != null)
                    {
                        foreach (string file in files)
                        {
                            try
                            {
                                var fileInfo = new FileInfo(file);

                                var vertex2 = graph.Vertices.SingleOrDefault(v => v.FullName == fileInfo.FullName);

                                if (vertex2 == null)
                                    vertex2 = new FSVertex(fileInfo.Name, fileInfo.FullName, fileInfo.GetFriendlySize(), VertexType.File,
                                        fileInfo.CreationTime, fileInfo.LastAccessTime, fileInfo.LastWriteTime);

                                graph.AddVertex(vertex2);
                                graph.AddEdge(new FSEdge(vertex1, vertex2));
                            }
                            catch (FileNotFoundException) {}
                        }
                    }

                    if (subDirs != null)
                    {
                        foreach (string dir in subDirs)
                            dirs.Push(dir);
                    }
                }
            }
            return graph;
        }