Move information filling logic

This commit is contained in:
Matt Nadareski
2023-08-14 19:06:08 -04:00
parent 0d190a4a2b
commit 10cf411879
5 changed files with 106 additions and 51 deletions

View File

@@ -499,5 +499,106 @@ namespace SabreTools.Core
}
#endregion
#region Information Filling
/// <summary>
/// Fill any missing size and hash information from another Disk
/// </summary>
public static void FillMissingHashes(this Disk? self, Disk? other)
{
if (self == null || other == null)
return;
string? selfMd5 = self.ReadString(Disk.MD5Key);
string? otherMd5 = other.ReadString(Disk.MD5Key);
if (string.IsNullOrWhiteSpace(selfMd5) && !string.IsNullOrWhiteSpace(otherMd5))
self[Disk.MD5Key] = otherMd5;
string? selfSha1 = self.ReadString(Disk.SHA1Key);
string? otherSha1 = other.ReadString(Disk.SHA1Key);
if (string.IsNullOrWhiteSpace(selfSha1) && !string.IsNullOrWhiteSpace(otherSha1))
self[Disk.SHA1Key] = otherSha1;
}
/// <summary>
/// Fill any missing size and hash information from another Media
/// </summary>
public static void FillMissingHashes(this Media? self, Media? other)
{
if (self == null || other == null)
return;
string? selfMd5 = self.ReadString(Media.MD5Key);
string? otherMd5 = other.ReadString(Media.MD5Key);
if (string.IsNullOrWhiteSpace(selfMd5) && !string.IsNullOrWhiteSpace(otherMd5))
self[Media.MD5Key] = otherMd5;
string? selfSha1 = self.ReadString(Media.SHA1Key);
string? otherSha1 = other.ReadString(Media.SHA1Key);
if (string.IsNullOrWhiteSpace(selfSha1) && !string.IsNullOrWhiteSpace(otherSha1))
self[Media.SHA1Key] = otherSha1;
string? selfSha256 = self.ReadString(Media.SHA256Key);
string? otherSha256 = other.ReadString(Media.SHA256Key);
if (string.IsNullOrWhiteSpace(selfSha256) && !string.IsNullOrWhiteSpace(otherSha256))
self[Media.SHA256Key] = otherSha256;
string? selfSpamSum = self.ReadString(Media.SpamSumKey);
string? otherSpamSum = other.ReadString(Media.SpamSumKey);
if (string.IsNullOrWhiteSpace(selfSpamSum) && !string.IsNullOrWhiteSpace(otherSpamSum))
self[Media.SpamSumKey] = otherSpamSum;
}
/// <summary>
/// Fill any missing size and hash information from another Rom
/// </summary>
public static void FillMissingHashes(this Rom? self, Rom? other)
{
if (self == null || other == null)
return;
long? selfSize = self.ReadLong(Rom.SizeKey);
long? otherSize = other.ReadLong(Rom.SizeKey);
if (selfSize == null && otherSize != null)
self[Rom.SizeKey] = otherSize;
string? selfCrc = self.ReadString(Rom.CRCKey);
string? otherCrc = other.ReadString(Rom.CRCKey);
if (string.IsNullOrWhiteSpace(selfCrc) && !string.IsNullOrWhiteSpace(otherCrc))
self[Rom.CRCKey] = otherCrc;
string? selfMd5 = self.ReadString(Rom.MD5Key);
string? otherMd5 = other.ReadString(Rom.MD5Key);
if (string.IsNullOrWhiteSpace(selfMd5) && !string.IsNullOrWhiteSpace(otherMd5))
self[Rom.MD5Key] = otherMd5;
string? selfSha1 = self.ReadString(Rom.SHA1Key);
string? otherSha1 = other.ReadString(Rom.SHA1Key);
if (string.IsNullOrWhiteSpace(selfSha1) && !string.IsNullOrWhiteSpace(otherSha1))
self[Rom.SHA1Key] = otherSha1;
string? selfSha256 = self.ReadString(Rom.SHA256Key);
string? otherSha256 = other.ReadString(Rom.SHA256Key);
if (string.IsNullOrWhiteSpace(selfSha256) && !string.IsNullOrWhiteSpace(otherSha256))
self[Rom.SHA256Key] = otherSha256;
string? selfSha384 = self.ReadString(Rom.SHA384Key);
string? otherSha384 = other.ReadString(Rom.SHA384Key);
if (string.IsNullOrWhiteSpace(selfSha384) && !string.IsNullOrWhiteSpace(otherSha384))
self[Rom.SHA384Key] = otherSha384;
string? selfSha512 = self.ReadString(Rom.SHA512Key);
string? otherSha512 = other.ReadString(Rom.SHA512Key);
if (string.IsNullOrWhiteSpace(selfSha512) && !string.IsNullOrWhiteSpace(otherSha512))
self[Rom.SHA512Key] = otherSha512;
string? selfSpamSum = self.ReadString(Rom.SpamSumKey);
string? otherSpamSum = other.ReadString(Rom.SpamSumKey);
if (string.IsNullOrWhiteSpace(selfSpamSum) && !string.IsNullOrWhiteSpace(otherSpamSum))
self[Rom.SpamSumKey] = otherSpamSum;
}
#endregion
}
}

View File

@@ -1,6 +1,5 @@
using System;
using System.IO;
using System.Linq;
using System.Xml.Serialization;
using NaturalSort;
using Newtonsoft.Json;
@@ -247,7 +246,7 @@ namespace SabreTools.DatItems
if (item?.Machine == null)
return;
Machine = (Machine)item.Machine.Clone();
Machine = item.Machine.Clone() as Machine;
}
/// <summary>
@@ -259,7 +258,7 @@ namespace SabreTools.DatItems
if (machine == null)
return;
Machine = (Machine)machine.Clone();
Machine = machine.Clone() as Machine;
}
#endregion

View File

@@ -283,14 +283,7 @@ namespace SabreTools.DatItems.Formats
/// Fill any missing size and hash information from another Disk
/// </summary>
/// <param name="other">Disk to fill information from</param>
public void FillMissingInformation(Disk other)
{
if (string.IsNullOrWhiteSpace(MD5) && !string.IsNullOrWhiteSpace(other.MD5))
MD5 = other.MD5;
if (string.IsNullOrWhiteSpace(SHA1) && !string.IsNullOrWhiteSpace(other.SHA1))
SHA1 = other.SHA1;
}
public void FillMissingInformation(Disk other) => _disk?.FillMissingHashes(other?._disk);
/// <summary>
/// Get unique duplicate suffix on name collision

View File

@@ -185,20 +185,7 @@ namespace SabreTools.DatItems.Formats
/// Fill any missing size and hash information from another Media
/// </summary>
/// <param name="other">Media to fill information from</param>
public void FillMissingInformation(Media other)
{
if (string.IsNullOrWhiteSpace(MD5) && !string.IsNullOrWhiteSpace(other.MD5))
MD5 = other.MD5;
if (string.IsNullOrWhiteSpace(SHA1) && !string.IsNullOrWhiteSpace(other.SHA1))
SHA1 = other.SHA1;
if (string.IsNullOrWhiteSpace(SHA256) && !string.IsNullOrWhiteSpace(other.SHA256))
SHA256 = other.SHA256;
if (string.IsNullOrWhiteSpace(SpamSum) && !string.IsNullOrWhiteSpace(other.SpamSum))
SpamSum = other.SpamSum;
}
public void FillMissingInformation(Media other) => _media?.FillMissingHashes(other?._media);
/// <summary>
/// Get unique duplicate suffix on name collision

View File

@@ -572,32 +572,7 @@ namespace SabreTools.DatItems.Formats
/// Fill any missing size and hash information from another Rom
/// </summary>
/// <param name="other">Rom to fill information from</param>
public void FillMissingInformation(Rom other)
{
if (Size == null && other.Size != null)
Size = other.Size;
if (string.IsNullOrWhiteSpace(CRC) && !string.IsNullOrWhiteSpace(other.CRC))
CRC = other.CRC;
if (string.IsNullOrWhiteSpace(MD5) && !string.IsNullOrWhiteSpace(other.MD5))
MD5 = other.MD5;
if (string.IsNullOrWhiteSpace(SHA1) && !string.IsNullOrWhiteSpace(other.SHA1))
SHA1 = other.SHA1;
if (string.IsNullOrWhiteSpace(SHA256) && !string.IsNullOrWhiteSpace(other.SHA256))
SHA256 = other.SHA256;
if (string.IsNullOrWhiteSpace(SHA384) && !string.IsNullOrWhiteSpace(other.SHA384))
SHA384 = other.SHA384;
if (string.IsNullOrWhiteSpace(SHA512) && !string.IsNullOrWhiteSpace(other.SHA512))
SHA512 = other.SHA512;
if (string.IsNullOrWhiteSpace(SpamSum) && !string.IsNullOrWhiteSpace(other.SpamSum))
SpamSum = other.SpamSum;
}
public void FillMissingInformation(Rom other) => _rom?.FillMissingHashes(other?._rom);
/// <summary>
/// Get unique duplicate suffix on name collision