Exemplo n.º 1
0
        private void EnsureTrackFolder(TrackFile trackFile, Artist artist, Album album, string filePath)
        {
            var trackFolder  = Path.GetDirectoryName(filePath);
            var albumFolder  = _buildFileNames.BuildAlbumPath(artist, album);
            var artistFolder = artist.Path;
            var rootFolder   = new OsPath(artistFolder).Directory.FullPath;

            if (!_diskProvider.FolderExists(rootFolder))
            {
                throw new RootFolderNotFoundException(string.Format("Root folder '{0}' was not found.", rootFolder));
            }

            var changed  = false;
            var newEvent = new TrackFolderCreatedEvent(artist, trackFile);

            if (!_diskProvider.FolderExists(artistFolder))
            {
                CreateFolder(artistFolder);
                newEvent.ArtistFolder = artistFolder;
                changed = true;
            }

            if (artistFolder != albumFolder && !_diskProvider.FolderExists(albumFolder))
            {
                CreateFolder(albumFolder);
                newEvent.AlbumFolder = albumFolder;
                changed = true;
            }

            if (albumFolder != trackFolder && !_diskProvider.FolderExists(trackFolder))
            {
                CreateFolder(trackFolder);
                newEvent.TrackFolder = trackFolder;
                changed = true;
            }

            if (changed)
            {
                _eventAggregator.PublishEvent(newEvent);
            }
        }