diff --git a/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs b/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs index 8dcd1197..70da1dc2 100644 --- a/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs +++ b/SabreTools.DatFiles.Test/ItemDictionaryDBTests.cs @@ -803,8 +803,8 @@ namespace SabreTools.DatFiles.Test Assert.Equal(1, dict.DatStatistics.TotalCount); Assert.Equal(1, dict.DatStatistics.GetItemCount(ItemType.Rom)); Assert.Equal(12345, dict.DatStatistics.TotalSize); - Assert.Equal(1, dict.DatStatistics.HashCounts[HashType.CRC32]); - Assert.Equal(0, dict.DatStatistics.HashCounts[HashType.MD5]); + Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); + Assert.Equal(0, dict.DatStatistics.GetHashCount(HashType.MD5)); item.SetFieldValue(Models.Metadata.Rom.MD5Key, "deadbeef"); @@ -813,8 +813,8 @@ namespace SabreTools.DatFiles.Test Assert.Equal(1, dict.DatStatistics.TotalCount); Assert.Equal(1, dict.DatStatistics.GetItemCount(ItemType.Rom)); Assert.Equal(12345, dict.DatStatistics.TotalSize); - Assert.Equal(1, dict.DatStatistics.HashCounts[HashType.CRC32]); - Assert.Equal(1, dict.DatStatistics.HashCounts[HashType.MD5]); + Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); + Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.MD5)); } #endregion diff --git a/SabreTools.DatFiles.Test/ItemDictionaryTests.cs b/SabreTools.DatFiles.Test/ItemDictionaryTests.cs index 48be92bb..be8d8853 100644 --- a/SabreTools.DatFiles.Test/ItemDictionaryTests.cs +++ b/SabreTools.DatFiles.Test/ItemDictionaryTests.cs @@ -640,8 +640,8 @@ namespace SabreTools.DatFiles.Test Assert.Equal(1, dict.DatStatistics.TotalCount); Assert.Equal(1, dict.DatStatistics.GetItemCount(ItemType.Rom)); Assert.Equal(12345, dict.DatStatistics.TotalSize); - Assert.Equal(1, dict.DatStatistics.HashCounts[HashType.CRC32]); - Assert.Equal(0, dict.DatStatistics.HashCounts[HashType.MD5]); + Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); + Assert.Equal(0, dict.DatStatistics.GetHashCount(HashType.MD5)); item.SetFieldValue(Models.Metadata.Rom.MD5Key, "deadbeef"); @@ -650,8 +650,8 @@ namespace SabreTools.DatFiles.Test Assert.Equal(1, dict.DatStatistics.TotalCount); Assert.Equal(1, dict.DatStatistics.GetItemCount(ItemType.Rom)); Assert.Equal(12345, dict.DatStatistics.TotalSize); - Assert.Equal(1, dict.DatStatistics.HashCounts[HashType.CRC32]); - Assert.Equal(1, dict.DatStatistics.HashCounts[HashType.MD5]); + Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.CRC32)); + Assert.Equal(1, dict.DatStatistics.GetHashCount(HashType.MD5)); } #endregion diff --git a/SabreTools.DatFiles/DatStatistics.cs b/SabreTools.DatFiles/DatStatistics.cs index 38873ce4..b38e48bb 100644 --- a/SabreTools.DatFiles/DatStatistics.cs +++ b/SabreTools.DatFiles/DatStatistics.cs @@ -13,11 +13,21 @@ namespace SabreTools.DatFiles { #region Private instance variables + /// + /// Number of items for each hash type + /// + private readonly Dictionary _hashCounts = []; + /// /// Number of items for each item type /// private readonly Dictionary _itemCounts = []; + /// + /// Number of items for each item status + /// + private readonly Dictionary _statusCounts = []; + /// /// Lock for statistics calculation /// @@ -43,16 +53,6 @@ namespace SabreTools.DatFiles /// public long TotalSize { get; private set; } = 0; - /// - /// Number of items for each hash type - /// - public Dictionary HashCounts { get; } = []; - - /// - /// Number of items for each item status - /// - public Dictionary StatusCounts { get; } = []; - /// /// Number of items with the remove flag /// @@ -183,13 +183,13 @@ namespace SabreTools.DatFiles TotalSize += stats.TotalSize; // Individual hash counts - foreach (var hashCountKvp in stats.HashCounts) + foreach (var hashCountKvp in stats._hashCounts) { AddHashCount(hashCountKvp.Key, hashCountKvp.Value); } // Individual status counts - foreach (var statusCountKvp in stats.StatusCounts) + foreach (var statusCountKvp in stats._statusCounts) { AddStatusCount(statusCountKvp.Key, statusCountKvp.Value); } @@ -204,12 +204,12 @@ namespace SabreTools.DatFiles /// The number of items with that hash, if it exists public long GetHashCount(HashType hashType) { - lock (HashCounts) + lock (_hashCounts) { - if (!HashCounts.ContainsKey(hashType)) + if (!_hashCounts.ContainsKey(hashType)) return 0; - return HashCounts[hashType]; + return _hashCounts[hashType]; } } @@ -236,12 +236,12 @@ namespace SabreTools.DatFiles /// The number of items of that type, if it exists public long GetStatusCount(ItemStatus itemStatus) { - lock (StatusCounts) + lock (_statusCounts) { - if (!StatusCounts.ContainsKey(itemStatus)) + if (!_statusCounts.ContainsKey(itemStatus)) return 0; - return StatusCounts[itemStatus]; + return _statusCounts[itemStatus]; } } @@ -252,14 +252,14 @@ namespace SabreTools.DatFiles /// Amount to increment by, defaults to 1 private void AddHashCount(HashType hashType, long interval = 1) { - lock (HashCounts) + lock (_hashCounts) { - if (!HashCounts.ContainsKey(hashType)) - HashCounts[hashType] = 0; + if (!_hashCounts.ContainsKey(hashType)) + _hashCounts[hashType] = 0; - HashCounts[hashType] += interval; - if (HashCounts[hashType] < 0) - HashCounts[hashType] = 0; + _hashCounts[hashType] += interval; + if (_hashCounts[hashType] < 0) + _hashCounts[hashType] = 0; } } @@ -288,14 +288,14 @@ namespace SabreTools.DatFiles /// Amount to increment by, defaults to 1 private void AddStatusCount(ItemStatus itemStatus, long interval = 1) { - lock (StatusCounts) + lock (_statusCounts) { - if (!StatusCounts.ContainsKey(itemStatus)) - StatusCounts[itemStatus] = 0; + if (!_statusCounts.ContainsKey(itemStatus)) + _statusCounts[itemStatus] = 0; - StatusCounts[itemStatus] += interval; - if (StatusCounts[itemStatus] < 0) - StatusCounts[itemStatus] = 0; + _statusCounts[itemStatus] += interval; + if (_statusCounts[itemStatus] < 0) + _statusCounts[itemStatus] = 0; } } @@ -375,8 +375,8 @@ namespace SabreTools.DatFiles _itemCounts.Clear(); GameCount = 0; TotalSize = 0; - HashCounts.Clear(); - StatusCounts.Clear(); + _hashCounts.Clear(); + _statusCounts.Clear(); RemovedCount = 0; } @@ -387,14 +387,14 @@ namespace SabreTools.DatFiles /// Amount to increment by, defaults to 1 private void RemoveHashCount(HashType hashType, long interval = 1) { - lock (HashCounts) + lock (_hashCounts) { - if (!HashCounts.ContainsKey(hashType)) + if (!_hashCounts.ContainsKey(hashType)) return; - HashCounts[hashType] -= interval; - if (HashCounts[hashType] < 0) - HashCounts[hashType] = 0; + _hashCounts[hashType] -= interval; + if (_hashCounts[hashType] < 0) + _hashCounts[hashType] = 0; } } @@ -423,14 +423,14 @@ namespace SabreTools.DatFiles /// Amount to increment by, defaults to 1 private void RemoveStatusCount(ItemStatus itemStatus, long interval = 1) { - lock (StatusCounts) + lock (_statusCounts) { - if (!StatusCounts.ContainsKey(itemStatus)) + if (!_statusCounts.ContainsKey(itemStatus)) return; - StatusCounts[itemStatus] -= interval; - if (StatusCounts[itemStatus] < 0) - StatusCounts[itemStatus] = 0; + _statusCounts[itemStatus] -= interval; + if (_statusCounts[itemStatus] < 0) + _statusCounts[itemStatus] = 0; } }