Beispiel #1
0
 private void UpdateRatings(MediaDataSet.TracksRow track, MediaDataSet.AlbumsRow album, MediaDataSet.ArtistsRow artist, MediaDataSet.GenresRow genre, RatingDelta delta)
 {
     track.Rating = UpdateRating(track.Rating, delta.Track);
     album.Rating = UpdateRating(album.Rating, delta.Album);
     artist.Rating = UpdateRating(artist.Rating, delta.Artist);
     genre.Rating = UpdateRating(genre.Rating, delta.Genre);
 }
Beispiel #2
0
        /// <summary>
        /// Track event handler
        /// </summary>
        /// <param name="p_artist">Artist</param>
        /// <param name="p_album">Album</param>
        /// <param name="p_name">Name</param>
        /// <param name="p_duration">Duration</param>
        /// <param name="p_genre">Genre</param>
        /// <param name="p_trackID">TrackID</param>
        /// <param name="p_delta">Delta values</param>
        private void TrackEvent(String p_artist, String p_album, String p_name, int p_duration, String p_genre, String p_trackID, RatingDelta p_delta)
        {
            try
            {
                if (Parameters.IgnoreWhenLocked)
                {
                    lock (sessionLock)
                    {
                        if (isLocked) return;
                    }
                }

                if (p_artist == null)
                {
                    p_artist = String.Empty;
                }

                if (p_album == null)
                {
                    p_album = String.Empty;
                }

                if (p_name == null)
                {
                    p_name = String.Empty;
                }

                if (p_genre == null)
                {
                    p_genre = String.Empty;
                }

                bool newInfo = false;

                MediaDataSet.ArtistsRow artist = ds.Artists.SingleOrDefault(s => (s.Name.Equals(p_artist.Trim())));
                if (artist == null)
                {
                    artist = ds.Artists.NewArtistsRow();
                    artist.Name = p_artist.Trim();
                    artist.Rating = 0;
                    ds.Artists.AddArtistsRow(artist);
                    newInfo = true;
                }

                MediaDataSet.GenresRow genre = ds.Genres.SingleOrDefault(s => (s.Name.Equals(p_genre.Trim())));
                if (genre == null)
                {
                    genre = ds.Genres.NewGenresRow();
                    genre.Name = p_genre.Trim();
                    genre.Rating = 0;
                    ds.Genres.AddGenresRow(genre);
                    newInfo = true;
                }

                MediaDataSet.AlbumsRow album = ds.Albums.SingleOrDefault(s =>
                    ((s.Name.Equals(p_album.Trim())) && (s.ArtistID == artist.ID)));
                if (album == null)
                {
                    album = ds.Albums.NewAlbumsRow();
                    album.Name = p_album.Trim();
                    album.ArtistsRow = artist;
                    album.Rating = 0;
                    ds.Albums.AddAlbumsRow(album);
                    newInfo = true;
                }

                MediaDataSet.TracksRow track = null;
                if (!newInfo)
                {
                    // trying to lookup track in database
                    track = ds.Tracks.SingleOrDefault(s => ((s.Name.Equals(p_name.Trim())) && (s.ArtistID == artist.ID) &&
                        (s.AlbumID == album.ID) && (s.GenreID == genre.ID)));
                    if (track == null)
                    {
                        newInfo = true;
                    }
                }

                if (newInfo)
                {
                    track = ds.Tracks.NewTracksRow();
                    track.Name = p_name.Trim();
                    track.Duration = p_duration;
                    track.TrackID = p_trackID;
                    track.AlbumsRow = album;
                    track.ArtistsRow = artist;
                    track.GenresRow = genre;
                    track.Rating = 0;
                    ds.Tracks.AddTracksRow(track);
                }

                this.UpdateRatings(track, album, artist, genre, p_delta);

                ds.AcceptChanges();
            }
            catch (Exception e)
            {
                Log.Write(e);
            }
        }