示例#1
0
 private static void RemoveIfEmpty(string folderName)
 {
     if (CanRemove(folderName))
     {
         FileHelper.RemoveDirectory(folderName);
     }
 }
        protected override void FixInternal()
        {
            if (!Movie.AutomaticFolderRoot.HasValue())
            {
                throw new FixCheckException("Movie has no automatic folder root");
            }
            if (Movie.ManualLocations.Count > 1)
            {
                throw new FixCheckException("Movie has multiple manual locations - unclear which to copy across");
            }
            if (Movie.ManualLocations.Count == 0)
            {
                //no files to copy
                Movie.UseAutomaticFolders = true;
                Movie.UseManualLocations  = false;
                return;
            }

            if (Movie.ManualLocations.Count == 1)
            {
                DirectoryInfo source = new DirectoryInfo(Movie.ManualLocations.First());
                if (!source.Exists)
                {
                    Movie.UseManualLocations = false;
                    return;
                }

                if (!source.EnumerateFiles().Any() && !source.EnumerateDirectories().Any())
                {
                    //directory has nothing in it
                    FileHelper.RemoveDirectory(source.FullName);
                    Movie.UseManualLocations = false;
                    return;
                }

                //try to copy/move files
                if (Movie.AutomaticLocations().Count() > 1)
                {
                    throw new FixCheckException("Multiple target locations for the automated folders");
                }

                if (!Movie.AutomaticLocations().Any())
                {
                    throw new FixCheckException("No target automatic folders can be established");
                }

                if (source.FullName.Equals(Movie.AutomaticLocations().First(), StringComparison.CurrentCultureIgnoreCase))
                {
                    Movie.UseManualLocations = false;
                    return;
                }

                //we have one location
                CopyOrMove(Movie.ManualLocations[0], Movie.AutomaticLocations().First());
                Movie.UseAutomaticFolders = true;
                Movie.UseManualLocations  = false;
            }
        }
        protected override void FixInternal()
        {
            if (!Movie.AutomaticFolderRoot.HasValue())
            {
                throw new FixCheckException("Movie has no automatic folder root");
            }
            if (Movie.ManualLocations.Count > 1)
            {
                throw new FixCheckException("Movie has multiple manual locations - unclear which to copy across");
            }
            if (Movie.ManualLocations.Count == 0)
            {
                //no files to copy
                Movie.UseAutomaticFolders = true;
                Movie.UseManualLocations  = false;
                return;
            }

            if (Movie.ManualLocations.Count == 1)
            {
                DirectoryInfo source = new DirectoryInfo(Movie.ManualLocations.First());
                if (!source.Exists)
                {
                    Movie.UseManualLocations  = false;
                    Movie.UseAutomaticFolders = true;
                    return;
                }

                if (!source.EnumerateFiles().Any() && !source.EnumerateDirectories().Any())
                {
                    //directory has nothing in it
                    FileHelper.RemoveDirectory(source.FullName);
                    Movie.UseManualLocations  = false;
                    Movie.UseAutomaticFolders = true;
                    return;
                }

                Movie.UseAutomaticFolders = true;
                //try to copy/move files
                List <string> automaticLocations = Movie.AutomaticLocations().ToList();

                if (automaticLocations.Count > 1)
                {
                    throw new FixCheckException("Multiple target locations for the automated folders");
                }

                if (!automaticLocations.Any())
                {
                    throw new FixCheckException("No target automatic folders can be established");
                }

                if (source.FullName.Equals(automaticLocations.First(), StringComparison.CurrentCultureIgnoreCase))
                {
                    Movie.UseManualLocations = false;
                    return;
                }

                //Do we want to copy the whole folder or just some files from witin?
                //we have one location to copy to

                bool manualLocationOnlyHasOneMovie = source.EnumerateFiles().Where(f => f.IsMovieFile()).All(file => Movie.NameMatch(file, false));

                if (manualLocationOnlyHasOneMovie)
                {
                    CopyOrMove(source, automaticLocations.First());
                }
                else
                {
                    MoveFiles(source.EnumerateFiles().Where(f => f.IsMovieFile()).Where(file => Movie.NameMatch(file, false)), automaticLocations.First());
                }

                Movie.UseManualLocations = false;
            }
        }