Пример #1
0
        private void FileWatcherRenamed(object sender, RenamedEventArgs e)
        {
            Trace.WriteLine(Trace.kKinsky, "PlaylistWatcher.FileSystemWatcherRenamed: e.OldFullPath=" + e.OldFullPath + ", e.FullPath=" + e.FullPath);

            // a file has been renamed - rename the corresponding entry
            bool playlistRenamed = false;

            lock (iLock)
            {
                if (iPlaylists.ContainsKey(e.OldFullPath))
                {
                    iPlaylists.Remove(e.OldFullPath);
                    FileInfo i = new FileInfo(e.FullPath);
                    iPlaylists.Add(i.FullName, i.Name.Replace(i.Extension, ""));
                    playlistRenamed = true;
                }
            }

            if (playlistRenamed)
            {
                PlaylistRemoved evRem = EventPlaylistRemoved;
                if (evRem != null)
                {
                    evRem(e.OldFullPath);
                }
                PlaylistAdded evAdd = EventPlaylistAdded;
                if (evAdd != null)
                {
                    evAdd(e.FullPath);
                }
            }
        }
Пример #2
0
 public void Handle(PlaylistAdded evt)
 {
     if (_playlistRepository.Exists(evt.UserId))
     {
         _playlistRepository.Update(evt.UserId);
     }
     else
     {
         _playlistRepository.Add(evt.UserId, evt.PlaylistId, evt.Name);
     }
 }
Пример #3
0
        public Task AddPlaylist(UserPlaylist playlist)
        {
            Playlists.Add(playlist);
            PlaylistAdded?.Invoke(this, playlist);

            using (
                var command =
                    new SQLiteCommand(
                        "INSERT INTO `Playlists` (Name, Guid) VALUES (@name, @guid)", _connection))
            {
                command.Parameters.AddWithValue("@name", playlist.Name);
                command.Parameters.AddGuid("@guid", playlist.Id);

                return(command.ExecuteNonQueryAsync());
            }
        }
 internal virtual void OnPlaylistAdded(PlaylistEventArgs e)
 {
     PlaylistAdded.RaiseEvent(this, e);
 }
Пример #5
0
        public async Task <Playlist> AddPlaylist(string name, IEnumerable <string> filenames)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            await _dbContextMutex.WaitAsync();

            var existingPlaylist = _dukeboxData.Playlists.FirstOrDefault(a => a.Name.Equals(name, StringComparison.CurrentCulture));

            if (existingPlaylist != null)
            {
                _dbContextMutex.Release();

                logger.WarnFormat("Not adding playlist with name '{0}' as another playlist with the same name already exists in the database", name);
                return(existingPlaylist);
            }

            if (filenames == null)
            {
                throw new ArgumentNullException("filenames");
            }

            var stopwatch   = Stopwatch.StartNew();
            var newPlaylist = new Playlist()
            {
                Name = name, FilenamesCsv = string.Join(",", filenames)
            };

            try
            {
                _dukeboxData.Playlists.Add(newPlaylist);
                await _dukeboxData.SaveChangesAsync();

                // Invalidate playlist cache.
                _allPlaylistsCache = null;

                stopwatch.Stop();
                logger.InfoFormat("Added playlist to library: {0}", newPlaylist.Name);
                logger.DebugFormat("Adding playlist to library took {0}ms. Playlist id: {1}", stopwatch.ElapsedMilliseconds, newPlaylist.Id);

                PlaylistAdded?.Invoke(this.PlaylistAdded, EventArgs.Empty);

                return(newPlaylist);
            }
            catch (DbEntityValidationException ex)
            {
                logger.ErrorFormat("Error adding playlist '{0}' to database due to entity validation errors", newPlaylist.Name);
                _dukeboxData.LogEntityValidationException(ex);
            }
            catch (Exception ex)
            {
                logger.Error(string.Format("Error adding playlist '{0}' to database", newPlaylist.Name), ex);
            }
            finally
            {
                _dbContextMutex.Release();
            }

            return(null);
        }