Ejemplo n.º 1
0
        public DocumentFile CreateNewFile(RootDirectoryDetails root)
        {
            var parentDirectory = FindOrCreateParentDirectory(root);

            if (parentDirectory.FindFile(FileName) == null)
            {
                return(CreateFile(root));
            }

            for (var i = 1; i <= 10000; i++)
            {
                var modifierSegment = $"({i})";
                var fileName        = FileName;

                if (fileName.Contains("."))
                {
                    fileName = fileName.Substring(0, fileName.LastIndexOf(".", StringComparison.CurrentCulture)) + modifierSegment + fileName.Substring(fileName.LastIndexOf(".", StringComparison.CurrentCulture));
                }
                else
                {
                    fileName = fileName + modifierSegment;
                }

                var existingFile = parentDirectory.FindFile(fileName);
                if (existingFile == null || existingFile.IsFile == false)
                {
                    var file = parentDirectory.CreateFile(MimeType, fileName);
                    FileName = file.Name;
                    return(file);
                }
            }

            return(null);
        }
Ejemplo n.º 2
0
 public DocumentFile FindOrCreateFile(RootDirectoryDetails root)
 {
     if (DoesFileExist(root, out var file) == false)
     {
         file = CreateFile(root);
     }
     return(file);
 }
Ejemplo n.º 3
0
        public DocumentFile FindDirectory(RootDirectoryDetails root)
        {
            var relativePath    = GetRelativePath(root.RootDirectory, DownloadDirectory);
            var segments        = relativePath.Split('/').Where(i => string.IsNullOrWhiteSpace(i) == false).ToArray();
            var parentDirectory = root.DocumentFile;

            foreach (var segment in segments)
            {
                parentDirectory = parentDirectory.FindFile(segment);
                if (parentDirectory == null || parentDirectory.IsDirectory == false)
                {
                    return(null);
                }
            }

            return(parentDirectory);
        }
Ejemplo n.º 4
0
        private DocumentFile FindOrCreateParentDirectory(RootDirectoryDetails root)
        {
            var relativePath    = GetRelativePath(root.RootDirectory, DownloadDirectory);
            var segments        = relativePath.Split('/').Where(i => string.IsNullOrWhiteSpace(i) == false).ToArray();
            var parentDirectory = root.DocumentFile;

            foreach (var segment in segments)
            {
                var tmpParentDirectory = parentDirectory.FindFile(segment);
                if (tmpParentDirectory == null || tmpParentDirectory.IsDirectory == false)
                {
                    tmpParentDirectory = parentDirectory.CreateDirectory(segment);
                }

                parentDirectory = tmpParentDirectory;
            }

            return(parentDirectory);
        }
Ejemplo n.º 5
0
        public DocumentFile CreateFile(RootDirectoryDetails root)
        {
            var parentDirectory = FindOrCreateParentDirectory(root);

            if (parentDirectory == null)
            {
                return(null);
            }

            var file = parentDirectory.FindFile(FileName);

            if (file == null || file.IsFile == false)
            {
                file = parentDirectory.CreateFile(MimeType, FileName);
            }

            FileName = file.Name;

            return(file);
        }
Ejemplo n.º 6
0
 public bool DoesFileExist(RootDirectoryDetails root, out DocumentFile foundFile)
 {
     return((foundFile = FindFile(root)) != null);
 }
Ejemplo n.º 7
0
        public DocumentFile FindFile(RootDirectoryDetails root)
        {
            var parentDirectory = FindDirectory(root);

            return(parentDirectory?.FindFile(FileName));
        }