Exemple #1
0
 // --------------------------------------------------------------------
 // 統計を必要に応じて更新
 // --------------------------------------------------------------------
 private static void UpdateExistStatisticsIfNeeded(TYukariStatistics existStatistics, TYukariRequest yukariRequest, DbSet <TFound> founds)
 {
     CopyYukariRequestToYukariStatistics(yukariRequest, existStatistics);
     CopyFoundToYukariStatisticsIfNeeded(founds, existStatistics);
 }
Exemple #2
0
        // --------------------------------------------------------------------
        // TYukariRequest → TYukariStatistics へコピー
        // --------------------------------------------------------------------
        private static void CopyYukariRequestToYukariStatistics(TYukariRequest yukariRequest, TYukariStatistics yukariStatistics)
        {
            // EF Core では、代入しても実際の値が更新されていなければ更新と判定されない(無駄な保存が発生しない)模様なので、プログラムでは更新チェックはせずに常に代入する
            // 途中で変わるものについては、変わったら Dirty フラグを立てる必要がある
            yukariStatistics.RequestId        = yukariRequest.Id;
            yukariStatistics.RequestMoviePath = yukariRequest.Path;
            yukariStatistics.RequestSinger    = yukariRequest.Singer;

            yukariStatistics.Dirty         |= yukariStatistics.RequestComment != yukariRequest.Comment;
            yukariStatistics.RequestComment = yukariRequest.Comment;

            yukariStatistics.Dirty       |= yukariStatistics.RequestOrder != yukariRequest.Order;
            yukariStatistics.RequestOrder = yukariRequest.Order;

            yukariStatistics.Dirty           |= yukariStatistics.RequestKeyChange != yukariRequest.KeyChange;
            yukariStatistics.RequestKeyChange = yukariRequest.KeyChange;
        }
Exemple #3
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;
        }
Exemple #4
0
        // --------------------------------------------------------------------
        // TFound → TYukariStatistics へコピー(ゆかり統計が属性確認済ではない場合のみ)
        // --------------------------------------------------------------------
        private static void CopyFoundToYukariStatisticsIfNeeded(DbSet <TFound> founds, TYukariStatistics yukariStatistics)
        {
            if (yukariStatistics.AttributesDone)
            {
                return;
            }

            TFound?found = founds.FirstOrDefault(x => x.Path == yukariStatistics.RequestMoviePath);

            if (found == null)
            {
                Debug.WriteLine("CopyFoundToYukariStatisticsIfNeeded() 属性確認しようとしたが見つからない " + yukariStatistics.RequestMoviePath);
                return;
            }
            DbCommon.CopyFoundToYukariStatisticsIfAttributesPrepared(found, yukariStatistics);
        }
Exemple #5
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);
        }