diff --git a/SabreTools.DatFiles/ItemDictionary.cs b/SabreTools.DatFiles/ItemDictionary.cs
index c760665f..27cf5225 100644
--- a/SabreTools.DatFiles/ItemDictionary.cs
+++ b/SabreTools.DatFiles/ItemDictionary.cs
@@ -27,12 +27,12 @@ namespace SabreTools.DatFiles
///
/// Determine the bucketing key for all items
///
- private ItemKey bucketedBy;
+ private ItemKey _bucketedBy;
///
/// Determine merging type for all items
///
- private DedupeType mergedBy;
+ private DedupeType _mergedBy;
///
/// Internal dictionary for the class
@@ -100,8 +100,8 @@ namespace SabreTools.DatFiles
///
public ItemDictionary()
{
- bucketedBy = ItemKey.NULL;
- mergedBy = DedupeType.None;
+ _bucketedBy = ItemKey.NULL;
+ _mergedBy = DedupeType.None;
_logger = new Logger(this);
}
@@ -482,7 +482,7 @@ namespace SabreTools.DatFiles
///
public void SetBucketedBy(ItemKey newBucket)
{
- bucketedBy = newBucket;
+ _bucketedBy = newBucket;
}
#endregion
@@ -503,14 +503,14 @@ namespace SabreTools.DatFiles
return;
// If the sorted type isn't the same, we want to sort the dictionary accordingly
- if (bucketedBy != bucketBy && bucketBy != ItemKey.NULL)
+ if (_bucketedBy != bucketBy && bucketBy != ItemKey.NULL)
{
_logger.User($"Organizing roms by {bucketBy}");
PerformBucketing(bucketBy, lower, norename);
}
// If the merge type isn't the same, we want to merge the dictionary accordingly
- if (mergedBy != dedupeType)
+ if (_mergedBy != dedupeType)
{
_logger.User($"Deduping roms by {dedupeType}");
PerformDeduplication(bucketBy, dedupeType);
@@ -653,10 +653,10 @@ namespace SabreTools.DatFiles
private void PerformBucketing(ItemKey bucketBy, bool lower, bool norename)
{
// Set the sorted type
- bucketedBy = bucketBy;
+ _bucketedBy = bucketBy;
// Reset the merged type since this might change the merge
- mergedBy = DedupeType.None;
+ _mergedBy = DedupeType.None;
// First do the initial sort of all of the roms inplace
List oldkeys = [.. Keys];
@@ -713,7 +713,7 @@ namespace SabreTools.DatFiles
private void PerformDeduplication(ItemKey bucketBy, DedupeType dedupeType)
{
// Set the sorted type
- mergedBy = dedupeType;
+ _mergedBy = dedupeType;
List keys = [.. Keys];
#if NET452_OR_GREATER || NETCOREAPP
@@ -787,7 +787,7 @@ namespace SabreTools.DatFiles
BucketBy(GetBestAvailable(), DedupeType.None);
// Now that we have the sorted type, we get the proper key
- return datItem.GetKey(bucketedBy);
+ return datItem.GetKey(_bucketedBy);
}
#endregion
diff --git a/SabreTools.DatFiles/ItemDictionaryDB.cs b/SabreTools.DatFiles/ItemDictionaryDB.cs
index 0b4f0180..27e505d1 100644
--- a/SabreTools.DatFiles/ItemDictionaryDB.cs
+++ b/SabreTools.DatFiles/ItemDictionaryDB.cs
@@ -1005,7 +1005,7 @@ namespace SabreTools.DatFiles
// Treat NULL like machine
ItemKey.NULL => (norename ? string.Empty : sourceKeyPadded) + machineName,
ItemKey.Machine => (norename ? string.Empty : sourceKeyPadded) + machineName,
- _ => GetBucketHashValue(datItem, bucketBy),
+ _ => datItem.GetKeyDB(bucketBy, source.Value, lower, norename),
};
if (lower)
@@ -1014,68 +1014,6 @@ namespace SabreTools.DatFiles
return bucketKey;
}
- ///
- /// Get the hash value for a given item, if possible
- ///
- private static string GetBucketHashValue(DatItem datItem, ItemKey bucketBy)
- {
- return datItem switch
- {
- Disk disk => bucketBy switch
- {
- ItemKey.CRC => ZeroHash.CRC32Str,
- ItemKey.MD2 => ZeroHash.GetString(HashType.MD2),
- ItemKey.MD4 => ZeroHash.GetString(HashType.MD4),
- ItemKey.MD5 => disk.GetStringFieldValue(Models.Metadata.Disk.MD5Key) ?? string.Empty,
- ItemKey.SHA1 => disk.GetStringFieldValue(Models.Metadata.Disk.SHA1Key) ?? string.Empty,
- ItemKey.SHA256 => ZeroHash.SHA256Str,
- ItemKey.SHA384 => ZeroHash.SHA384Str,
- ItemKey.SHA512 => ZeroHash.SHA512Str,
- ItemKey.SpamSum => ZeroHash.SpamSumStr,
- _ => string.Empty,
- },
- Media media => bucketBy switch
- {
- ItemKey.CRC => ZeroHash.CRC32Str,
- ItemKey.MD2 => ZeroHash.GetString(HashType.MD2),
- ItemKey.MD4 => ZeroHash.GetString(HashType.MD4),
- ItemKey.MD5 => media.GetStringFieldValue(Models.Metadata.Media.MD5Key) ?? string.Empty,
- ItemKey.SHA1 => media.GetStringFieldValue(Models.Metadata.Media.SHA1Key) ?? string.Empty,
- ItemKey.SHA256 => media.GetStringFieldValue(Models.Metadata.Media.SHA256Key) ?? string.Empty,
- ItemKey.SHA384 => ZeroHash.SHA384Str,
- ItemKey.SHA512 => ZeroHash.SHA512Str,
- ItemKey.SpamSum => media.GetStringFieldValue(Models.Metadata.Media.SpamSumKey) ?? string.Empty,
- _ => string.Empty,
- },
- Rom rom => bucketBy switch
- {
- ItemKey.CRC => rom.GetStringFieldValue(Models.Metadata.Rom.CRCKey) ?? string.Empty,
- ItemKey.MD2 => rom.GetStringFieldValue(Models.Metadata.Rom.MD2Key) ?? string.Empty,
- ItemKey.MD4 => rom.GetStringFieldValue(Models.Metadata.Rom.MD4Key) ?? string.Empty,
- ItemKey.MD5 => rom.GetStringFieldValue(Models.Metadata.Rom.MD5Key) ?? string.Empty,
- ItemKey.SHA1 => rom.GetStringFieldValue(Models.Metadata.Rom.SHA1Key) ?? string.Empty,
- ItemKey.SHA256 => rom.GetStringFieldValue(Models.Metadata.Rom.SHA256Key) ?? string.Empty,
- ItemKey.SHA384 => rom.GetStringFieldValue(Models.Metadata.Rom.SHA384Key) ?? string.Empty,
- ItemKey.SHA512 => rom.GetStringFieldValue(Models.Metadata.Rom.SHA512Key) ?? string.Empty,
- ItemKey.SpamSum => rom.GetStringFieldValue(Models.Metadata.Rom.SpamSumKey) ?? string.Empty,
- _ => string.Empty,
- },
- _ => bucketBy switch
- {
- ItemKey.CRC => ZeroHash.CRC32Str,
- ItemKey.MD2 => ZeroHash.GetString(HashType.MD2),
- ItemKey.MD4 => ZeroHash.GetString(HashType.MD4),
- ItemKey.MD5 => ZeroHash.MD5Str,
- ItemKey.SHA1 => ZeroHash.SHA1Str,
- ItemKey.SHA256 => ZeroHash.SHA256Str,
- ItemKey.SHA384 => ZeroHash.SHA384Str,
- ItemKey.SHA512 => ZeroHash.SHA512Str,
- ItemKey.SpamSum => ZeroHash.SpamSumStr,
- _ => string.Empty,
- },
- };
- }
-
///
/// Ensure the key exists in the items dictionary
///
diff --git a/SabreTools.DatItems/DatItem.cs b/SabreTools.DatItems/DatItem.cs
index 83d31e02..288d97a5 100644
--- a/SabreTools.DatItems/DatItem.cs
+++ b/SabreTools.DatItems/DatItem.cs
@@ -468,6 +468,7 @@ namespace SabreTools.DatItems
if (!norename && source != null)
sourceString = source.Index.ToString().PadLeft(10, '0') + "-";
+ // TODO: This will never have a value for DB
string machineString = "Default";
var machine = GetFieldValue(DatItem.MachineKey);
if (machine != null)