mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Remove preemptive filtering
This commit is contained in:
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER
|
||||
using System.Threading.Tasks;
|
||||
#endif
|
||||
using SabreTools.Metadata.Filter;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.DatItems.Formats;
|
||||
using MergingFlag = SabreTools.Data.Models.Metadata.MergingFlag;
|
||||
@@ -26,13 +25,11 @@ namespace SabreTools.Metadata.DatFiles
|
||||
/// <param name="indexId">Index ID for the DAT</param>
|
||||
/// <param name="keep">True if full pathnames are to be kept, false otherwise</param>
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
internal void ConvertFromMetadata(Data.Models.Metadata.MetadataFile? item,
|
||||
string filename,
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly,
|
||||
FilterRunner? filterRunner)
|
||||
bool statsOnly)
|
||||
{
|
||||
// If the metadata file is invalid, we can't do anything
|
||||
if (item is null)
|
||||
@@ -50,7 +47,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
// Get the machines from the metadata
|
||||
var machines = item.Machine;
|
||||
if (machines is not null)
|
||||
ConvertMachines(machines, source, sourceIndex: 0, statsOnly, filterRunner);
|
||||
ConvertMachines(machines, source, sourceIndex: 0, statsOnly);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -184,12 +181,10 @@ namespace SabreTools.Metadata.DatFiles
|
||||
/// <param name="source">Source to use with the converted items</param>
|
||||
/// <param name="sourceIndex">Index of the Source to use with the converted items</param>
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ConvertMachines(Data.Models.Metadata.Machine[]? items,
|
||||
Source source,
|
||||
long sourceIndex,
|
||||
bool statsOnly,
|
||||
FilterRunner? filterRunner)
|
||||
bool statsOnly)
|
||||
{
|
||||
// If the array is invalid, we can't do anything
|
||||
if (items is null || items.Length == 0)
|
||||
@@ -202,7 +197,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
foreach (var machine in items)
|
||||
#endif
|
||||
{
|
||||
ConvertMachine(machine, source, sourceIndex, statsOnly, filterRunner);
|
||||
ConvertMachine(machine, source, sourceIndex, statsOnly);
|
||||
#if NET40_OR_GREATER || NETCOREAPP || NETSTANDARD2_0_OR_GREATER
|
||||
});
|
||||
#else
|
||||
@@ -217,21 +212,15 @@ namespace SabreTools.Metadata.DatFiles
|
||||
/// <param name="source">Source to use with the converted items</param>
|
||||
/// <param name="sourceIndex">Index of the Source to use with the converted items</param>
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ConvertMachine(Data.Models.Metadata.Machine? item,
|
||||
Source source,
|
||||
long sourceIndex,
|
||||
bool statsOnly,
|
||||
FilterRunner? filterRunner)
|
||||
bool statsOnly)
|
||||
{
|
||||
// If the machine is invalid, we can't do anything
|
||||
if (item is null)
|
||||
return;
|
||||
|
||||
// If the machine doesn't pass the filter
|
||||
if (filterRunner is not null && !filterRunner.Run(item))
|
||||
return;
|
||||
|
||||
// Create an internal machine and add to the dictionary
|
||||
var machine = new Machine(item);
|
||||
long machineIndex = AddMachineDB(machine);
|
||||
@@ -240,8 +229,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Adjuster is not null)
|
||||
{
|
||||
var items = item.Adjuster;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Adjuster(item, machine, source)
|
||||
{
|
||||
@@ -257,8 +245,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Archive is not null)
|
||||
{
|
||||
var items = item.Archive;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Archive(item, machine, source)
|
||||
{
|
||||
@@ -274,8 +261,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.BiosSet is not null)
|
||||
{
|
||||
var items = item.BiosSet;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new BiosSet(item, machine, source)
|
||||
{
|
||||
@@ -291,8 +277,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Chip is not null)
|
||||
{
|
||||
var items = item.Chip;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Chip(item, machine, source)
|
||||
{
|
||||
@@ -308,8 +293,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Configuration is not null)
|
||||
{
|
||||
var items = item.Configuration;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Configuration(item, machine, source)
|
||||
{
|
||||
@@ -325,8 +309,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Device is not null)
|
||||
{
|
||||
var items = item.Device;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Device(item, machine, source)
|
||||
{
|
||||
@@ -359,8 +342,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.DipSwitch is not null)
|
||||
{
|
||||
var items = item.DipSwitch;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new DipSwitch(item, machine, source)
|
||||
{
|
||||
@@ -376,8 +358,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Disk is not null)
|
||||
{
|
||||
var items = item.Disk;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Disk(item, machine, source)
|
||||
{
|
||||
@@ -393,8 +374,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Display is not null)
|
||||
{
|
||||
var items = item.Display;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Display(item, machine, source)
|
||||
{
|
||||
@@ -407,7 +387,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.Driver is not null && filterRunner?.Run(item.Driver) != false)
|
||||
if (item.Driver is not null)
|
||||
{
|
||||
var datItem = new Driver(item.Driver, machine, source)
|
||||
{
|
||||
@@ -452,8 +432,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Feature is not null)
|
||||
{
|
||||
var items = item.Feature;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Feature(item, machine, source)
|
||||
{
|
||||
@@ -469,8 +448,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Info is not null)
|
||||
{
|
||||
var items = item.Info;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Info(item, machine, source)
|
||||
{
|
||||
@@ -483,7 +461,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.Input is not null && filterRunner?.Run(item.Input) != false)
|
||||
if (item.Input is not null)
|
||||
{
|
||||
var datItem = new Input(item.Input, machine, source)
|
||||
{
|
||||
@@ -498,8 +476,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Media is not null)
|
||||
{
|
||||
var items = item.Media;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Media(item, machine, source)
|
||||
{
|
||||
@@ -515,14 +492,13 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Part is not null)
|
||||
{
|
||||
var items = item.Part;
|
||||
ProcessItems(items, machine, machineIndex: 0, source, sourceIndex, statsOnly, filterRunner);
|
||||
ProcessItems(items, machine, machineIndex: 0, source, sourceIndex, statsOnly);
|
||||
}
|
||||
|
||||
if (item.Port is not null)
|
||||
{
|
||||
var items = item.Port;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Port(item, machine, source)
|
||||
{
|
||||
@@ -538,8 +514,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.RamOption is not null)
|
||||
{
|
||||
var items = item.RamOption;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new RamOption(item, machine, source)
|
||||
{
|
||||
@@ -555,8 +530,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Release is not null)
|
||||
{
|
||||
var items = item.Release;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Release(item, machine, source)
|
||||
{
|
||||
@@ -572,8 +546,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Rom is not null)
|
||||
{
|
||||
var items = item.Rom;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Rom(item, machine, source)
|
||||
{
|
||||
@@ -589,8 +562,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Sample is not null)
|
||||
{
|
||||
var items = item.Sample;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Sample(item, machine, source)
|
||||
{
|
||||
@@ -606,8 +578,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.SharedFeat is not null)
|
||||
{
|
||||
var items = item.SharedFeat;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new SharedFeat(item, machine, source)
|
||||
{
|
||||
@@ -640,8 +611,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.SoftwareList is not null)
|
||||
{
|
||||
var items = item.SoftwareList;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new SoftwareList(item, machine, source)
|
||||
{
|
||||
@@ -654,7 +624,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
});
|
||||
}
|
||||
|
||||
if (item.Sound is not null && filterRunner?.Run(item.Sound) != false)
|
||||
if (item.Sound is not null)
|
||||
{
|
||||
var datItem = new Sound(item.Sound, machine, source)
|
||||
{
|
||||
@@ -669,8 +639,7 @@ namespace SabreTools.Metadata.DatFiles
|
||||
if (item.Video is not null)
|
||||
{
|
||||
var items = item.Video;
|
||||
var filtered = filterRunner is null ? items : Array.FindAll(items, i => filterRunner.Run(item));
|
||||
Array.ForEach(filtered, item =>
|
||||
Array.ForEach(items, item =>
|
||||
{
|
||||
var datItem = new Display(item, machine, source)
|
||||
{
|
||||
@@ -693,14 +662,12 @@ namespace SabreTools.Metadata.DatFiles
|
||||
/// <param name="source">Source to use with the converted items</param>
|
||||
/// <param name="sourceIndex">Index of the Source to use with the converted items</param>
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ProcessItems(Data.Models.Metadata.Part[] items,
|
||||
Machine machine,
|
||||
long machineIndex,
|
||||
Source source,
|
||||
long sourceIndex,
|
||||
bool statsOnly,
|
||||
FilterRunner? filterRunner)
|
||||
bool statsOnly)
|
||||
{
|
||||
// If the array is null or empty, return without processing
|
||||
if (items.Length == 0)
|
||||
@@ -723,10 +690,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
List<Rom> addRoms = [];
|
||||
foreach (var rom in roms)
|
||||
{
|
||||
// If the item doesn't pass the filter
|
||||
if (filterRunner is not null && !filterRunner.Run(rom))
|
||||
continue;
|
||||
|
||||
// Convert the item
|
||||
var romItem = new Rom(rom, machine, source)
|
||||
{
|
||||
@@ -778,10 +741,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
|
||||
foreach (var disk in disks)
|
||||
{
|
||||
// If the item doesn't pass the filter
|
||||
if (filterRunner is not null && !filterRunner.Run(disk))
|
||||
continue;
|
||||
|
||||
var diskItem = new Disk(disk, machine, source)
|
||||
{
|
||||
MachineIndex = machineIndex,
|
||||
@@ -802,10 +761,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
foreach (var dipSwitch in dipSwitches)
|
||||
{
|
||||
// If the item doesn't pass the filter
|
||||
if (filterRunner is not null && !filterRunner.Run(dipSwitch))
|
||||
continue;
|
||||
|
||||
var dipSwitchItem = new DipSwitch(dipSwitch, machine, source)
|
||||
{
|
||||
MachineIndex = machineIndex,
|
||||
@@ -824,10 +779,6 @@ namespace SabreTools.Metadata.DatFiles
|
||||
{
|
||||
foreach (var partFeature in partFeatures)
|
||||
{
|
||||
// If the item doesn't pass the filter
|
||||
if (filterRunner is not null && !filterRunner.Run(partFeature))
|
||||
continue;
|
||||
|
||||
var partFeatureItem = new PartFeature(partFeature)
|
||||
{
|
||||
MachineIndex = machineIndex,
|
||||
|
||||
@@ -8,7 +8,6 @@ using SabreTools.Hashing;
|
||||
using SabreTools.Logging;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.DatItems.Formats;
|
||||
using SabreTools.Metadata.Filter;
|
||||
using SabreTools.Text.Compare;
|
||||
using SabreTools.Text.Extensions;
|
||||
|
||||
@@ -436,13 +435,11 @@ namespace SabreTools.Metadata.DatFiles
|
||||
/// <param name="indexId">Index ID for the DAT</param>
|
||||
/// <param name="keep">True if full pathnames are to be kept, false otherwise</param>
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
/// <param name="throwOnError">True if the error that is thrown should be thrown back to the caller, false otherwise</param>
|
||||
public abstract void ParseFile(string filename,
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false);
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -2,7 +2,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.DatItems.Formats;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatFiles.Formats
|
||||
{
|
||||
@@ -47,7 +46,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false)
|
||||
{
|
||||
try
|
||||
@@ -57,7 +55,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
var metadata = new Serialization.CrossModel.ClrMamePro().Serialize(metadataFile);
|
||||
|
||||
// Convert to the internal format
|
||||
ConvertFromMetadata(metadata, filename, indexId, keep, statsOnly, filterRunner);
|
||||
ConvertFromMetadata(metadata, filename, indexId, keep, statsOnly);
|
||||
}
|
||||
catch (Exception ex) when (!throwOnError)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using SabreTools.Hashing;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
#pragma warning disable IDE0290 // Use primary constructor
|
||||
namespace SabreTools.Metadata.DatFiles.Formats
|
||||
@@ -31,7 +30,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false)
|
||||
{
|
||||
try
|
||||
@@ -41,7 +39,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
var metadata = new Serialization.CrossModel.Hashfile().Serialize(hashfile);
|
||||
|
||||
// Convert to the internal format
|
||||
ConvertFromMetadata(metadata, filename, indexId, keep, statsOnly, filterRunner);
|
||||
ConvertFromMetadata(metadata, filename, indexId, keep, statsOnly);
|
||||
}
|
||||
catch (Exception ex) when (!throwOnError)
|
||||
{
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
using System.Collections.Generic;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.DatItems.Formats;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatFiles.Formats
|
||||
{
|
||||
@@ -223,7 +222,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false)
|
||||
{
|
||||
try
|
||||
@@ -242,7 +240,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
}
|
||||
|
||||
// Convert to the internal format
|
||||
ConvertFromMetadata(metadata, filename, indexId, keep, statsOnly, filterRunner);
|
||||
ConvertFromMetadata(metadata, filename, indexId, keep, statsOnly);
|
||||
}
|
||||
catch (Exception ex) when (!throwOnError)
|
||||
{
|
||||
|
||||
@@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatFiles.Formats
|
||||
{
|
||||
@@ -31,7 +30,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
|
||||
@@ -9,7 +9,6 @@ using Newtonsoft.Json.Serialization;
|
||||
using SabreTools.Data.Extensions;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.DatItems.Formats;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
namespace SabreTools.Metadata.DatFiles.Formats
|
||||
{
|
||||
@@ -41,7 +40,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false)
|
||||
{
|
||||
// Prepare all internal variables
|
||||
@@ -78,7 +76,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
|
||||
// Machine array
|
||||
case "machines":
|
||||
ReadMachines(jtr, statsOnly, source, sourceIndex: 0, filterRunner);
|
||||
ReadMachines(jtr, statsOnly, source, sourceIndex: 0);
|
||||
jtr.Read();
|
||||
break;
|
||||
|
||||
@@ -120,8 +118,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="source">Source representing the DAT</param>
|
||||
/// <param name="sourceIndex">Index of the Source representing the DAT</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ReadMachines(JsonTextReader jtr, bool statsOnly, Source source, long sourceIndex, FilterRunner? filterRunner)
|
||||
private void ReadMachines(JsonTextReader jtr, bool statsOnly, Source source, long sourceIndex)
|
||||
{
|
||||
// If the reader is invalid, skip
|
||||
if (jtr is null)
|
||||
@@ -135,7 +132,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
// Loop through each machine object and process
|
||||
foreach (JObject machineObj in machineArray.Cast<JObject>())
|
||||
{
|
||||
ReadMachine(machineObj, statsOnly, source, sourceIndex, filterRunner);
|
||||
ReadMachine(machineObj, statsOnly, source, sourceIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -146,8 +143,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="source">Source representing the DAT</param>
|
||||
/// <param name="sourceIndex">Index of the Source representing the DAT</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ReadMachine(JObject machineObj, bool statsOnly, Source source, long sourceIndex, FilterRunner? filterRunner)
|
||||
private void ReadMachine(JObject machineObj, bool statsOnly, Source source, long sourceIndex)
|
||||
{
|
||||
// If object is invalid, skip it
|
||||
if (machineObj is null)
|
||||
@@ -160,10 +156,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
if (machineObj.ContainsKey("machine"))
|
||||
machine = machineObj["machine"]?.ToObject<Machine>();
|
||||
|
||||
// If the machine doesn't pass the filter
|
||||
if (machine is not null && filterRunner is not null && !machine.PassesFilter(filterRunner))
|
||||
return;
|
||||
|
||||
// Add the machine to the dictionary
|
||||
// long machineIndex = -1;
|
||||
// if (machine is not null)
|
||||
@@ -177,8 +169,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
source,
|
||||
sourceIndex,
|
||||
machine,
|
||||
machineIndex: 0,
|
||||
filterRunner);
|
||||
machineIndex: 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -191,7 +182,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
/// <param name="sourceIndex">Index of the Source representing the DAT</param>
|
||||
/// <param name="machine">Machine information to add to the parsed items</param>
|
||||
/// <param name="machineIndex">Index of the Machine to add to the parsed items</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ReadItems(
|
||||
JArray? itemsArr,
|
||||
bool statsOnly,
|
||||
@@ -202,8 +192,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
|
||||
// Miscellaneous
|
||||
Machine? machine,
|
||||
long machineIndex,
|
||||
FilterRunner? filterRunner)
|
||||
long machineIndex)
|
||||
{
|
||||
// If the array is invalid, skip
|
||||
if (itemsArr is null)
|
||||
@@ -212,7 +201,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
// Loop through each datitem object and process
|
||||
foreach (JObject itemObj in itemsArr.Cast<JObject>())
|
||||
{
|
||||
ReadItem(itemObj, statsOnly, source, sourceIndex, machine, machineIndex, filterRunner);
|
||||
ReadItem(itemObj, statsOnly, source, sourceIndex, machine, machineIndex);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -225,7 +214,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
/// <param name="sourceIndex">Index of the Source representing the DAT</param>
|
||||
/// <param name="machine">Machine information to add to the parsed items</param>
|
||||
/// <param name="machineIndex">Index of the Machine to add to the parsed items</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ReadItem(
|
||||
JObject itemObj,
|
||||
bool statsOnly,
|
||||
@@ -236,8 +224,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
|
||||
// Miscellaneous
|
||||
Machine? machine,
|
||||
long machineIndex,
|
||||
FilterRunner? filterRunner)
|
||||
long machineIndex)
|
||||
{
|
||||
// If we have an empty item, skip it
|
||||
if (itemObj is null)
|
||||
@@ -386,10 +373,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
// If we got a valid datitem, copy machine info and add
|
||||
if (datItem is not null)
|
||||
{
|
||||
// If the item doesn't pass the filter
|
||||
if (filterRunner is not null && !datItem.PassesFilter(filterRunner))
|
||||
return;
|
||||
|
||||
datItem.CopyMachineInformation(machine);
|
||||
datItem.MachineIndex = machineIndex;
|
||||
datItem.Source = source;
|
||||
|
||||
@@ -6,7 +6,6 @@ using System.Xml;
|
||||
using System.Xml.Schema;
|
||||
using System.Xml.Serialization;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
#pragma warning disable IDE0060 // Remove unused parameter
|
||||
namespace SabreTools.Metadata.DatFiles.Formats
|
||||
@@ -39,7 +38,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false)
|
||||
{
|
||||
// Prepare all internal variables
|
||||
@@ -84,7 +82,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
break;
|
||||
|
||||
case "directory":
|
||||
ReadDirectory(xtr.ReadSubtree(), statsOnly, source, sourceIndex, filterRunner);
|
||||
ReadDirectory(xtr.ReadSubtree(), statsOnly, source, sourceIndex);
|
||||
|
||||
// Skip the directory node now that we've processed it
|
||||
xtr.Read();
|
||||
@@ -115,12 +113,10 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="source">Source representing the DAT</param>
|
||||
/// <param name="sourceIndex">Index of the Source representing the DAT</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ReadDirectory(XmlReader xtr,
|
||||
bool statsOnly,
|
||||
Source source,
|
||||
long sourceIndex,
|
||||
FilterRunner? filterRunner)
|
||||
long sourceIndex)
|
||||
{
|
||||
// If the reader is invalid, skip
|
||||
if (xtr is null)
|
||||
@@ -146,11 +142,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case "machine":
|
||||
XmlSerializer xs = new(typeof(Machine));
|
||||
machine = xs?.Deserialize(xtr.ReadSubtree()) as Machine;
|
||||
|
||||
// If the machine doesn't pass the filter
|
||||
if (machine is not null && filterRunner is not null && !machine.PassesFilter(filterRunner))
|
||||
machine = null;
|
||||
|
||||
if (machine is not null)
|
||||
machineIndex = AddMachineDB(machine);
|
||||
|
||||
@@ -163,8 +154,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
machineIndex,
|
||||
statsOnly,
|
||||
source,
|
||||
sourceIndex,
|
||||
filterRunner);
|
||||
sourceIndex);
|
||||
|
||||
// Skip the directory node now that we've processed it
|
||||
xtr.Read();
|
||||
@@ -185,14 +175,12 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
/// <param name="statsOnly">True to only add item statistics while parsing, false otherwise</param>
|
||||
/// <param name="source">Source representing the DAT</param>
|
||||
/// <param name="sourceIndex">Index of the Source representing the DAT</param>
|
||||
/// <param name="filterRunner">Optional FilterRunner to filter items on parse</param>
|
||||
private void ReadFiles(XmlReader xtr,
|
||||
Machine? machine,
|
||||
long machineIndex,
|
||||
bool statsOnly,
|
||||
Source source,
|
||||
long sourceIndex,
|
||||
FilterRunner? filterRunner)
|
||||
long sourceIndex)
|
||||
{
|
||||
// If the reader is invalid, skip
|
||||
if (xtr is null)
|
||||
@@ -215,13 +203,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
XmlSerializer xs = new(typeof(DatItem));
|
||||
if (xs.Deserialize(xtr.ReadSubtree()) is DatItem item)
|
||||
{
|
||||
// If the item doesn't pass the filter
|
||||
if (filterRunner is not null && !item.PassesFilter(filterRunner))
|
||||
{
|
||||
xtr.Skip();
|
||||
break;
|
||||
}
|
||||
|
||||
item.CopyMachineInformation(machine);
|
||||
item.MachineIndex = machineIndex;
|
||||
item.Source = source;
|
||||
|
||||
@@ -2,7 +2,6 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using SabreTools.Metadata.DatItems;
|
||||
using SabreTools.Metadata.DatItems.Formats;
|
||||
using SabreTools.Metadata.Filter;
|
||||
|
||||
#pragma warning disable IDE0290 // Use primary constructor
|
||||
namespace SabreTools.Metadata.DatFiles.Formats
|
||||
@@ -42,7 +41,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false)
|
||||
{
|
||||
try
|
||||
@@ -52,7 +50,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
var metadata = new Serialization.CrossModel.SeparatedValue().Serialize(metadataFile);
|
||||
|
||||
// Convert to the internal format
|
||||
ConvertFromMetadata(metadata, filename, indexId, keep, statsOnly, filterRunner);
|
||||
ConvertFromMetadata(metadata, filename, indexId, keep, statsOnly);
|
||||
}
|
||||
catch (Exception ex) when (!throwOnError)
|
||||
{
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using SabreTools.Data.Models.Metadata;
|
||||
using SabreTools.Metadata.Filter;
|
||||
using SabreTools.Serialization.CrossModel;
|
||||
using SabreTools.Serialization.Readers;
|
||||
using SabreTools.Serialization.Writers;
|
||||
@@ -47,7 +46,6 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
int indexId,
|
||||
bool keep,
|
||||
bool statsOnly = false,
|
||||
FilterRunner? filterRunner = null,
|
||||
bool throwOnError = false)
|
||||
{
|
||||
try
|
||||
@@ -57,7 +55,7 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
var internalFormat = CrossModelSerializer.Serialize(specificFormat);
|
||||
|
||||
// Convert to the internal format
|
||||
ConvertFromMetadata(internalFormat, filename, indexId, keep, statsOnly, filterRunner);
|
||||
ConvertFromMetadata(internalFormat, filename, indexId, keep, statsOnly);
|
||||
}
|
||||
catch (Exception ex) when (!throwOnError)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user