Esempio n. 1
0
 public FileSystemService(ISnowflakeService snowflakeService)
 {
     _snowflakeService = snowflakeService;
 }
Esempio n. 2
0
        public ContentManagerService(IDataService dataService, IFileSystemService fileSystemService, ISnowflakeService snowflakeService, IStorageService storageService)
        {
            _dataService       = dataService;
            _fileSystemService = fileSystemService;
            _snowflakeService  = snowflakeService;

            List <Track> tracks = dataService.Load(Constants.DataStoreNames.Tracks, () => new List <Track>());

            HashSet <string> trackFiles    = new HashSet <string>(tracks.Select(track => track.Filepath));
            HashSet <string> existingFiles = new HashSet <string>();

            foreach (TrackFolder folder in storageService.TrackFolders)
            {
                foreach (string file in fileSystemService.LoadFiles(folder.Path))
                {
                    existingFiles.Add(file);
                }
            }

            foreach (string trackFile in trackFiles)
            {
                if (!existingFiles.Contains(trackFile))
                {
                    tracks.RemoveAt(tracks.FindIndex(track => track.Filepath == trackFile));
                }
            }

            foreach (string file in existingFiles)
            {
                if (!trackFiles.Contains(file))
                {
                    tracks.Add(new Track(snowflakeService.GenerateSnowflake(), file));
                }
            }

            _trackRepository = tracks.ToDictionary(track => track.Id, track => track);

            _playlists = _dataService.Load(Constants.DataStoreNames.Playlists, () => new List <Playlist>());

            _managedPlaylists = dataService.Load(Constants.DataStoreNames.ManagedPlaylists, () => Enumerable.Empty <Playlist>())
                                .ToDictionary(playlist =>
            {
                Enum.TryParse(playlist.Name, out ManagedPlaylist result);
                return(result);
            },
                                              playlist => playlist);

            if (!_managedPlaylists.ContainsKey(ManagedPlaylist.Favorites))
            {
                _managedPlaylists[ManagedPlaylist.Favorites] = new Playlist
                                                               (
                    _snowflakeService.GenerateSnowflake(),
                    ManagedPlaylist.Favorites.ToString(),
                    false,
                    0,
                    TimeSpan.Zero,
                    _trackRepository.Values.Where(track => track.IsFavorite)
                    .Select(track => new PlaylistTrack(0, track))
                                                               );
            }

            foreach (Playlist playlist in _playlists)
            {
                playlist.Load(_trackRepository);
            }

            foreach (Playlist playlist in _managedPlaylists.Values)
            {
                playlist.Load(_trackRepository);
            }
        }