diff --git a/SabreTools.DatFiles.Test/DatFileTests.Filtering.cs b/SabreTools.DatFiles.Test/DatFileTests.Filtering.cs
index bde2716b..e89310fe 100644
--- a/SabreTools.DatFiles.Test/DatFileTests.Filtering.cs
+++ b/SabreTools.DatFiles.Test/DatFileTests.Filtering.cs
@@ -8,6 +8,12 @@ namespace SabreTools.DatFiles.Test
{
public partial class DatFileTests
{
+ #region ExecuteFilters
+
+ // TODO: Add ExecuteFilters tests
+
+ #endregion
+
#region MachineDescriptionToName
[Fact]
diff --git a/SabreTools.DatFiles/DatFile.Filtering.cs b/SabreTools.DatFiles/DatFile.Filtering.cs
index 44f2908f..33f33e44 100644
--- a/SabreTools.DatFiles/DatFile.Filtering.cs
+++ b/SabreTools.DatFiles/DatFile.Filtering.cs
@@ -34,8 +34,8 @@ namespace SabreTools.DatFiles
/// Preconfigured filter runner to use
public void ExecuteFilters(FilterRunner filterRunner)
{
- Items.ExecuteFilters(filterRunner);
- ItemsDB.ExecuteFilters(filterRunner);
+ ExecuteFiltersImpl(filterRunner);
+ ExecuteFiltersImplDB(filterRunner);
}
///
@@ -184,6 +184,99 @@ namespace SabreTools.DatFiles
return mapping;
}
+ ///
+ /// Execute all filters in a filter runner on the items in the dictionary
+ ///
+ /// Preconfigured filter runner to use
+ private void ExecuteFiltersImpl(FilterRunner filterRunner)
+ {
+ List keys = [.. Items.Keys];
+#if NET452_OR_GREATER || NETCOREAPP
+ Parallel.ForEach(keys, Core.Globals.ParallelOptions, key =>
+#elif NET40_OR_GREATER
+ Parallel.ForEach(keys, key =>
+#else
+ foreach (var key in keys)
+#endif
+ {
+ ExecuteFilterOnBucket(filterRunner, key);
+#if NET40_OR_GREATER || NETCOREAPP
+ });
+#else
+ }
+#endif
+ }
+
+ ///
+ /// Execute all filters in a filter runner on the items in the dictionary
+ ///
+ /// Preconfigured filter runner to use
+ private void ExecuteFiltersImplDB(FilterRunner filterRunner)
+ {
+ List keys = [.. ItemsDB.SortedKeys];
+#if NET452_OR_GREATER || NETCOREAPP
+ Parallel.ForEach(keys, Globals.ParallelOptions, key =>
+#elif NET40_OR_GREATER
+ Parallel.ForEach(keys, key =>
+#else
+ foreach (var key in keys)
+#endif
+ {
+ ExecuteFilterOnBucketDB(filterRunner, key);
+#if NET40_OR_GREATER || NETCOREAPP
+ });
+#else
+ }
+#endif
+ }
+
+ ///
+ /// Execute all filters in a filter runner on a single bucket
+ ///
+ /// Preconfigured filter runner to use
+ /// Name of the bucket to filter on
+ private void ExecuteFilterOnBucket(FilterRunner filterRunner, string bucketName)
+ {
+ List? items = GetItemsForBucket(bucketName);
+ if (items == null)
+ return;
+
+ // Filter all items in the current key
+ List newItems = [];
+ foreach (var item in items)
+ {
+ if (item.PassesFilter(filterRunner))
+ newItems.Add(item);
+ }
+
+ // Set the value in the key to the new set
+ Remove(bucketName);
+ Add(bucketName, newItems);
+ }
+
+ ///
+ /// Execute all filters in a filter runner on a single bucket
+ ///
+ /// Preconfigured filter runner to use
+ /// Name of the bucket to filter on
+ private void ExecuteFilterOnBucketDB(FilterRunner filterRunner, string bucketName)
+ {
+ var items = GetItemsForBucketDB(bucketName);
+ if (items == null)
+ return;
+
+ // Filter all items in the current key
+ List newItems = [];
+ foreach (var item in items)
+ {
+ if (item.Value.PassesFilterDB(filterRunner))
+ newItems.Add(item.Key);
+ }
+
+ // Set the value in the key to the new set
+ ItemsDB._buckets[bucketName] = newItems;
+ }
+
///
/// Use game descriptions as names, updating cloneof/romof/sampleof
///
diff --git a/SabreTools.DatFiles/ItemDictionary.cs b/SabreTools.DatFiles/ItemDictionary.cs
index 568125c8..0503f9d7 100644
--- a/SabreTools.DatFiles/ItemDictionary.cs
+++ b/SabreTools.DatFiles/ItemDictionary.cs
@@ -8,7 +8,6 @@ using System.Threading.Tasks;
#endif
using System.Xml.Serialization;
using Newtonsoft.Json;
-using SabreTools.Core.Filter;
using SabreTools.Core.Tools;
using SabreTools.DatItems;
using SabreTools.DatItems.Formats;
@@ -827,58 +826,6 @@ namespace SabreTools.DatFiles
#endregion
- // TODO: All internal, can this be put into a better location?
- #region Filtering
-
- ///
- /// Execute all filters in a filter runner on the items in the dictionary
- ///
- /// Preconfigured filter runner to use
- internal void ExecuteFilters(FilterRunner filterRunner)
- {
- List keys = [.. Keys];
-#if NET452_OR_GREATER || NETCOREAPP
- Parallel.ForEach(keys, Core.Globals.ParallelOptions, key =>
-#elif NET40_OR_GREATER
- Parallel.ForEach(keys, key =>
-#else
- foreach (var key in keys)
-#endif
- {
- ExecuteFilterOnBucket(filterRunner, key);
-#if NET40_OR_GREATER || NETCOREAPP
- });
-#else
- }
-#endif
- }
-
- ///
- /// Execute all filters in a filter runner on a single bucket
- ///
- /// Preconfigured filter runner to use
- /// Name of the bucket to filter on
- private void ExecuteFilterOnBucket(FilterRunner filterRunner, string bucketName)
- {
- List? items = GetItemsForBucket(bucketName);
- if (items == null)
- return;
-
- // Filter all items in the current key
- List newItems = [];
- foreach (var item in items)
- {
- if (item.PassesFilter(filterRunner))
- newItems.Add(item);
- }
-
- // Set the value in the key to the new set
- Remove(bucketName);
- Add(bucketName, newItems);
- }
-
- #endregion
-
#region Statistics
///
diff --git a/SabreTools.DatFiles/ItemDictionaryDB.cs b/SabreTools.DatFiles/ItemDictionaryDB.cs
index 5e298119..f4658fa7 100644
--- a/SabreTools.DatFiles/ItemDictionaryDB.cs
+++ b/SabreTools.DatFiles/ItemDictionaryDB.cs
@@ -10,7 +10,6 @@ using System.Threading.Tasks;
#endif
using System.Xml.Serialization;
using Newtonsoft.Json;
-using SabreTools.Core.Filter;
using SabreTools.Core.Tools;
using SabreTools.DatItems;
using SabreTools.DatItems.Formats;
@@ -1206,57 +1205,6 @@ namespace SabreTools.DatFiles
#endregion
- // TODO: All internal, can this be put into a better location?
- #region Filtering
-
- ///
- /// Execute all filters in a filter runner on the items in the dictionary
- ///
- /// Preconfigured filter runner to use
- internal void ExecuteFilters(FilterRunner filterRunner)
- {
- List keys = [.. SortedKeys];
-#if NET452_OR_GREATER || NETCOREAPP
- Parallel.ForEach(keys, Core.Globals.ParallelOptions, key =>
-#elif NET40_OR_GREATER
- Parallel.ForEach(keys, key =>
-#else
- foreach (var key in keys)
-#endif
- {
- ExecuteFilterOnBucket(filterRunner, key);
-#if NET40_OR_GREATER || NETCOREAPP
- });
-#else
- }
-#endif
- }
-
- ///
- /// Execute all filters in a filter runner on a single bucket
- ///
- /// Preconfigured filter runner to use
- /// Name of the bucket to filter on
- private void ExecuteFilterOnBucket(FilterRunner filterRunner, string bucketName)
- {
- var items = GetItemsForBucket(bucketName);
- if (items == null)
- return;
-
- // Filter all items in the current key
- List newItems = [];
- foreach (var item in items)
- {
- if (item.Value.PassesFilterDB(filterRunner))
- newItems.Add(item.Key);
- }
-
- // Set the value in the key to the new set
- _buckets[bucketName] = newItems;
- }
-
- #endregion
-
#region Statistics
///