Exemple #1
0
        // --------------------------------------------------------------------
        // TFound → TYukariStatistics へコピー(TFound の属性情報がある場合のみ)
        // --------------------------------------------------------------------
        public static void CopyFoundToYukariStatisticsIfAttributesPrepared(TFound found, TYukariStatistics yukariStatistics)
        {
            if (found.FileSize < 0)
            {
                Debug.WriteLine("CopyFoundToYukariStatisticsIfAttributesPrepared() 属性確認しようとしたがまだ整理されていない " + yukariStatistics.RequestMoviePath);
                return;
            }

            yukariStatistics.Dirty         |= !yukariStatistics.AttributesDone;
            yukariStatistics.AttributesDone = true;

            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.Worker), yukariStatistics, nameof(yukariStatistics.Worker));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.SongReleaseDate), yukariStatistics, nameof(yukariStatistics.SongReleaseDate));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.Category), yukariStatistics, nameof(yukariStatistics.CategoryName));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.TieUpName), yukariStatistics, nameof(yukariStatistics.TieUpName));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.TieUpAgeLimit), yukariStatistics, nameof(yukariStatistics.TieUpAgeLimit));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.MakerName), yukariStatistics, nameof(yukariStatistics.MakerName));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.TieUpGroupName), yukariStatistics, nameof(yukariStatistics.TieUpGroupName));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.SongName), yukariStatistics, nameof(yukariStatistics.SongName));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.SongOpEd), yukariStatistics, nameof(yukariStatistics.SongOpEd));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.ArtistName), yukariStatistics, nameof(yukariStatistics.ArtistName));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.LyristName), yukariStatistics, nameof(yukariStatistics.LyristName));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.ComposerName), yukariStatistics, nameof(yukariStatistics.ComposerName));
            CopyFoundToYukariStatisticsIfUpdated(found, nameof(found.ArrangerName), yukariStatistics, nameof(yukariStatistics.ArrangerName));

            Debug.WriteLine("CopyFoundToYukariStatisticsIfAttributesPrepared() 属性確認実施 " + yukariStatistics.RequestMoviePath);
        }
Exemple #2
0
        // --------------------------------------------------------------------
        // TFound → TYukariStatistics へプロパティーを 1 つコピー(TFound と TYukariStatistics が異なる場合のみ)
        // --------------------------------------------------------------------
        public static void CopyFoundToYukariStatisticsIfUpdated(TFound found, String foundPropertyName, TYukariStatistics yukariStatistics, String statisticsPropertyName)
        {
            Type         foundType              = typeof(TFound);
            PropertyInfo?foundPropertyInfo      = foundType.GetProperty(foundPropertyName);
            Type         statisticsType         = typeof(TYukariStatistics);
            PropertyInfo?statisticsPropertyInfo = statisticsType.GetProperty(statisticsPropertyName);

            Debug.Assert(foundPropertyInfo != null && statisticsPropertyInfo != null, "CopyFoundToYukariStatisticsIfUpdated() bad propertyName");

            Object?foundValue      = foundPropertyInfo.GetValue(found);
            Object?statisticsValue = statisticsPropertyInfo.GetValue(yukariStatistics);

            if (foundPropertyInfo.PropertyType == typeof(String))
            {
                // String の場合は null と String.Empty を同値扱い
                if (String.IsNullOrEmpty((String?)foundValue) && String.IsNullOrEmpty((String?)statisticsValue))
                {
                    return;
                }
            }
            if (foundValue == null && statisticsValue == null || foundValue?.Equals(statisticsValue) == true)
            {
                return;
            }

            // 異なるのでコピー
            Debug.WriteLine("CopyFoundToYukariStatisticsIfUpdated() copy " + yukariStatistics.Id + ", " + foundPropertyInfo.Name + ": " + foundValue);
            statisticsPropertyInfo.SetValue(yukariStatistics, foundValue);
            yukariStatistics.Dirty = true;
        }
        // ====================================================================
        // protected 関数
        // ====================================================================

        // --------------------------------------------------------------------
        // 曲情報を文字列に追加する際のテーブル内容を追加
        // --------------------------------------------------------------------
        protected override void AppendSongInfoAddTd(StringBuilder stringBuilder, OutputItems chapterItem, TFound found)
        {
            base.AppendSongInfoAddTd(stringBuilder, chapterItem, found);
            stringBuilder.Append("<td class=\"small\"><a href=\"" + FILE_NAME_REPORT_ENTRY + ListLinkArg(YlConstants.SERVER_OPTION_NAME_UID + "=" + found.Uid) + "\">報告</a></td>");
        }