コード例 #1
0
        /// <summary>
        /// Updates the DB episode.
        /// </summary>
        /// <param name="episode">The episode.</param>
        /// <param name="e">The db episode.</param>
        /// <exception cref="Uncas.PodCastPlayer.Repository.RepositoryException"></exception>
        private void UpdateDBEpisode(
            Episode episode,
            DBEpisode e)
        {
            e.Date            = episode.Date;
            e.Description     = episode.Description;
            e.DownloadedBytes =
                episode.DownloadedBytes;
            e.FileName        = episode.FileName;
            e.FileSizeInBytes =
                episode.FileSizeInBytes;
            e.MediaUrl        = episode.MediaUrl.ToString();
            e.PendingDownload =
                episode.PendingDownload;
            e.Title = episode.Title;

            try
            {
                this.DB.Update <DBEpisode>(e);
            }
            catch (Exception ex)
            {
                // TODO: EXCEPTION: Unknown SubSonic exception
                throw new RepositoryException(
                          "Error updating episode",
                          ex);
            }
        }
コード例 #2
0
        /// <summary>
        /// Gets as model.
        /// </summary>
        /// <param name="episode">The episode.</param>
        /// <param name="podCasts">The pod casts.</param>
        /// <returns>The model episode.</returns>
        /// <exception cref="Uncas.PodCastPlayer.Repository.RepositoryException"></exception>
        public static Episode AsModel(
            this DBEpisode episode,
            IList <DBPodCast> podCasts)
        {
            Debug.Assert(
                podCasts != null,
                "Internal code assumes that there are pod casts!");
            Debug.Assert(
                podCasts.Count > 0,
                "Internal code assumes that there are pod casts!");
            if (podCasts == null ||
                episode.MediaUrl == null)
            {
                throw new RepositoryException(
                          InvalidDataText);
            }

            var podCast =
                podCasts.Where(
                    pc => pc.PodCastId == episode.RefPodCastId)
                .SingleOrDefault();

            if (podCast == null)
            {
                throw new RepositoryException(
                          InvalidDataText);
            }

            Uri mediaUrl = null;

            try
            {
                mediaUrl = new Uri(episode.MediaUrl);
            }
            catch (UriFormatException ex)
            {
                throw new RepositoryException(
                          InvalidDataText,
                          ex);
            }

            return(Episode.ConstructEpisode(
                       episode.EpisodeId,
                       episode.Date,
                       episode.Title,
                       episode.Description,
                       mediaUrl,
                       podCast.AsModel(),
                       true));
        }
コード例 #3
0
        /// <summary>
        /// Gets as index item.
        /// </summary>
        /// <param name="episode">The episode.</param>
        /// <returns>The episode index item view model.</returns>
        public static EpisodeIndexItemViewModel AsIndexItem(
            this DBEpisode episode)
        {
            bool downloadCompleted =
                EpisodeMediaInfo.IsDownloadCompleted(
                    episode.FileSizeInBytes,
                    episode.DownloadedBytes);

            return(new EpisodeIndexItemViewModel(
                       episode.Date,
                       episode.EpisodeId,
                       episode.Title,
                       episode.PendingDownload,
                       downloadCompleted));
        }