mirror of
https://github.com/SabreTools/SabreTools.Serialization.git
synced 2026-07-08 18:06:41 +00:00
Convert Release fully over to properties
This commit is contained in:
@@ -178,6 +178,8 @@ namespace SabreTools.Data.Extensions
|
||||
return original.Clone() as Original;
|
||||
else if (self is RamOption ramOption)
|
||||
return ramOption.Clone() as RamOption;
|
||||
else if (self is Release release)
|
||||
return release.Clone() as Release;
|
||||
else if (self is SharedFeat sharedFeat)
|
||||
return sharedFeat.Clone() as SharedFeat;
|
||||
else if (self is SlotOption slotOption)
|
||||
@@ -311,10 +313,6 @@ namespace SabreTools.Data.Extensions
|
||||
{
|
||||
clonePort.Tag = selfPort.Tag;
|
||||
}
|
||||
else if (self is Release selfRelease && clone is Release cloneRelease)
|
||||
{
|
||||
cloneRelease.Default = selfRelease.Default;
|
||||
}
|
||||
else if (self is Rom selfRom && clone is Rom cloneRom)
|
||||
{
|
||||
cloneRom.Dispose = selfRom.Dispose;
|
||||
|
||||
@@ -1,33 +1,75 @@
|
||||
using System;
|
||||
using System.Xml.Serialization;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace SabreTools.Data.Models.Metadata
|
||||
{
|
||||
[JsonObject("release"), XmlRoot("release")]
|
||||
public class Release : DatItem
|
||||
public class Release : DatItem, ICloneable, IEquatable<Release>
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public string? Date { get; set; }
|
||||
|
||||
/// <remarks>(yes|no) "no"</remarks>
|
||||
public bool? Default { get; set; }
|
||||
|
||||
public string? Language { get; set; }
|
||||
|
||||
public string? Name { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Keys
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string DateKey = "date";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string LanguageKey = "language";
|
||||
|
||||
/// <remarks>string</remarks>
|
||||
public const string RegionKey = "region";
|
||||
public string? Region { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
public Release() => ItemType = ItemType.Release;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public object Clone()
|
||||
{
|
||||
var obj = new Release();
|
||||
|
||||
obj.Date = Date;
|
||||
obj.Default = Default;
|
||||
obj.Language = Language;
|
||||
obj.Name = Name;
|
||||
obj.Region = Region;
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
||||
/// <inheritdoc/>
|
||||
public bool Equals(Release? other)
|
||||
{
|
||||
// Null never matches
|
||||
if (other is null)
|
||||
return false;
|
||||
|
||||
// Properties
|
||||
if ((Date is null) ^ (other.Date is null))
|
||||
return false;
|
||||
else if (Date is not null && !Date.Equals(other.Date, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if (Default != other.Default)
|
||||
return false;
|
||||
|
||||
if ((Language is null) ^ (other.Language is null))
|
||||
return false;
|
||||
else if (Language is not null && !Language.Equals(other.Language, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if ((Name is null) ^ (other.Name is null))
|
||||
return false;
|
||||
else if (Name is not null && !Name.Equals(other.Name, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
if ((Region is null) ^ (other.Region is null))
|
||||
return false;
|
||||
else if (Region is not null && !Region.Equals(other.Region, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -737,11 +737,11 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
{
|
||||
return new Data.Models.Metadata.Release
|
||||
{
|
||||
[Data.Models.Metadata.Release.DateKey] = "date",
|
||||
Date = "date",
|
||||
Default = true,
|
||||
[Data.Models.Metadata.Release.LanguageKey] = "language",
|
||||
Language = "language",
|
||||
Name = "name",
|
||||
[Data.Models.Metadata.Release.RegionKey] = "region",
|
||||
Region = "region",
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1484,11 +1484,11 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
private static void ValidateRelease(Release? release)
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("date", release.ReadString(Data.Models.Metadata.Release.DateKey));
|
||||
Assert.Equal("date", release.Date);
|
||||
Assert.True(release.Default);
|
||||
Assert.Equal("language", release.ReadString(Data.Models.Metadata.Release.LanguageKey));
|
||||
Assert.Equal("language", release.Language);
|
||||
Assert.Equal("name", release.Name);
|
||||
Assert.Equal("region", release.ReadString(Data.Models.Metadata.Release.RegionKey));
|
||||
Assert.Equal("region", release.Region);
|
||||
}
|
||||
|
||||
private static void ValidateRom(Rom? rom)
|
||||
|
||||
@@ -1006,11 +1006,11 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
private static void ValidateMetadataRelease(Data.Models.Metadata.Release? release)
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("date", release.ReadString(Data.Models.Metadata.Release.DateKey));
|
||||
Assert.Equal("date", release.Date);
|
||||
Assert.True(release.Default);
|
||||
Assert.Equal("language", release.ReadString(Data.Models.Metadata.Release.LanguageKey));
|
||||
Assert.Equal("language", release.Language);
|
||||
Assert.Equal("name", release.Name);
|
||||
Assert.Equal("region", release.ReadString(Data.Models.Metadata.Release.RegionKey));
|
||||
Assert.Equal("region", release.Region);
|
||||
}
|
||||
|
||||
private static void ValidateMetadataReleaseDetails(Data.Models.Metadata.ReleaseDetails? releaseDetails)
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Release.Name),
|
||||
Data.Models.Metadata.Release.RegionKey,
|
||||
nameof(Data.Models.Metadata.Release.Region),
|
||||
]));
|
||||
}
|
||||
|
||||
@@ -1093,7 +1093,7 @@ namespace SabreTools.Metadata.DatFiles.Test
|
||||
Assert.NotNull(actual);
|
||||
Assert.True(actual.SequenceEqual([
|
||||
nameof(Data.Models.Metadata.Release.Name),
|
||||
Data.Models.Metadata.Release.RegionKey,
|
||||
nameof(Data.Models.Metadata.Release.Region),
|
||||
]));
|
||||
}
|
||||
|
||||
|
||||
@@ -76,8 +76,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case Release release:
|
||||
if (string.IsNullOrEmpty(release.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Release.Name));
|
||||
if (string.IsNullOrEmpty(release.ReadString(Data.Models.Metadata.Release.RegionKey)))
|
||||
missingFields.Add(Data.Models.Metadata.Release.RegionKey);
|
||||
if (string.IsNullOrEmpty(release.Region))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Release.Region));
|
||||
break;
|
||||
|
||||
case BiosSet biosset:
|
||||
|
||||
@@ -268,8 +268,8 @@ namespace SabreTools.Metadata.DatFiles.Formats
|
||||
case Release release:
|
||||
if (string.IsNullOrEmpty(release.Name))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Release.Name));
|
||||
if (string.IsNullOrEmpty(release.ReadString(Data.Models.Metadata.Release.RegionKey)))
|
||||
missingFields.Add(Data.Models.Metadata.Release.RegionKey);
|
||||
if (string.IsNullOrEmpty(release.Region))
|
||||
missingFields.Add(nameof(Data.Models.Metadata.Release.Region));
|
||||
break;
|
||||
|
||||
case BiosSet biosset:
|
||||
|
||||
@@ -12,6 +12,12 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
{
|
||||
#region Properties
|
||||
|
||||
public string? Date
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Release)?.Date;
|
||||
set => (_internal as Data.Models.Metadata.Release)?.Date = value;
|
||||
}
|
||||
|
||||
public bool? Default
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Release)?.Default;
|
||||
@@ -22,12 +28,24 @@ namespace SabreTools.Metadata.DatItems.Formats
|
||||
public override Data.Models.Metadata.ItemType ItemType
|
||||
=> Data.Models.Metadata.ItemType.Release;
|
||||
|
||||
public string? Language
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Release)?.Language;
|
||||
set => (_internal as Data.Models.Metadata.Release)?.Language = value;
|
||||
}
|
||||
|
||||
public string? Name
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Release)?.Name;
|
||||
set => (_internal as Data.Models.Metadata.Release)?.Name = value;
|
||||
}
|
||||
|
||||
public string? Region
|
||||
{
|
||||
get => (_internal as Data.Models.Metadata.Release)?.Region;
|
||||
set => (_internal as Data.Models.Metadata.Release)?.Region = value;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructors
|
||||
|
||||
@@ -771,9 +771,18 @@ namespace SabreTools.Metadata.Filter
|
||||
checkValue = item.Default.FromYesNo();
|
||||
return true;
|
||||
|
||||
case Release item when fieldName == "date":
|
||||
checkValue = item.Date;
|
||||
return true;
|
||||
case Release item when fieldName == "default":
|
||||
checkValue = item.Default.FromYesNo();
|
||||
return true;
|
||||
case Release item when fieldName == "language":
|
||||
checkValue = item.Language;
|
||||
return true;
|
||||
case Release item when fieldName == "region":
|
||||
checkValue = item.Region;
|
||||
return true;
|
||||
|
||||
case Rom item when fieldName == "dispose":
|
||||
checkValue = item.Dispose.FromYesNo();
|
||||
|
||||
@@ -311,7 +311,7 @@ namespace SabreTools.Metadata
|
||||
}
|
||||
else if (self is Release selfRelease && other is Release otherRelease)
|
||||
{
|
||||
if (selfRelease.Default != otherRelease.Default)
|
||||
if (!selfRelease.Equals(otherRelease))
|
||||
return false;
|
||||
}
|
||||
else if (self is Rom selfRom && other is Rom otherRom)
|
||||
|
||||
@@ -81,9 +81,9 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var release = new Data.Models.ClrMamePro.Release
|
||||
{
|
||||
Name = "name",
|
||||
Region = "XXXXXX",
|
||||
Language = "XXXXXX",
|
||||
Date = "XXXXXX",
|
||||
Region = "region",
|
||||
Language = "language",
|
||||
Date = "date",
|
||||
Default = true,
|
||||
};
|
||||
|
||||
@@ -336,9 +336,9 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("name", release.Name);
|
||||
Assert.Equal("XXXXXX", release.Region);
|
||||
Assert.Equal("XXXXXX", release.Language);
|
||||
Assert.Equal("XXXXXX", release.Date);
|
||||
Assert.Equal("region", release.Region);
|
||||
Assert.Equal("language", release.Language);
|
||||
Assert.Equal("date", release.Date);
|
||||
Assert.Equal(true, release.Default);
|
||||
}
|
||||
|
||||
|
||||
@@ -132,9 +132,9 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
var release = new Data.Models.Logiqx.Release
|
||||
{
|
||||
Name = "name",
|
||||
Region = "XXXXXX",
|
||||
Language = "XXXXXX",
|
||||
Date = "XXXXXX",
|
||||
Region = "region",
|
||||
Language = "language",
|
||||
Date = "date",
|
||||
Default = true,
|
||||
};
|
||||
|
||||
@@ -440,9 +440,9 @@ namespace SabreTools.Serialization.CrossModel.Test
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("name", release.Name);
|
||||
Assert.Equal("XXXXXX", release.Region);
|
||||
Assert.Equal("XXXXXX", release.Language);
|
||||
Assert.Equal("XXXXXX", release.Date);
|
||||
Assert.Equal("region", release.Region);
|
||||
Assert.Equal("language", release.Language);
|
||||
Assert.Equal("date", release.Date);
|
||||
Assert.Equal(true, release.Default);
|
||||
}
|
||||
|
||||
|
||||
@@ -263,9 +263,9 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var release = new Release
|
||||
{
|
||||
Name = item.Name,
|
||||
Region = item.ReadString(Data.Models.Metadata.Release.RegionKey),
|
||||
Language = item.ReadString(Data.Models.Metadata.Release.LanguageKey),
|
||||
Date = item.ReadString(Data.Models.Metadata.Release.DateKey),
|
||||
Region = item.Region,
|
||||
Language = item.Language,
|
||||
Date = item.Date,
|
||||
Default = item.Default,
|
||||
};
|
||||
return release;
|
||||
|
||||
@@ -276,9 +276,9 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var release = new Data.Models.Metadata.Release
|
||||
{
|
||||
Name = item.Name,
|
||||
[Data.Models.Metadata.Release.RegionKey] = item.Region,
|
||||
[Data.Models.Metadata.Release.LanguageKey] = item.Language,
|
||||
[Data.Models.Metadata.Release.DateKey] = item.Date,
|
||||
Region = item.Region,
|
||||
Language = item.Language,
|
||||
Date = item.Date,
|
||||
Default = item.Default,
|
||||
};
|
||||
return release;
|
||||
|
||||
@@ -285,9 +285,9 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var release = new Release
|
||||
{
|
||||
Name = item.Name,
|
||||
Region = item.ReadString(Data.Models.Metadata.Release.RegionKey),
|
||||
Language = item.ReadString(Data.Models.Metadata.Release.LanguageKey),
|
||||
Date = item.ReadString(Data.Models.Metadata.Release.DateKey),
|
||||
Region = item.Region,
|
||||
Language = item.Language,
|
||||
Date = item.Date,
|
||||
Default = item.Default,
|
||||
};
|
||||
return release;
|
||||
|
||||
@@ -279,9 +279,9 @@ namespace SabreTools.Serialization.CrossModel
|
||||
var release = new Data.Models.Metadata.Release
|
||||
{
|
||||
Name = item.Name,
|
||||
[Data.Models.Metadata.Release.RegionKey] = item.Region,
|
||||
[Data.Models.Metadata.Release.LanguageKey] = item.Language,
|
||||
[Data.Models.Metadata.Release.DateKey] = item.Date,
|
||||
Region = item.Region,
|
||||
Language = item.Language,
|
||||
Date = item.Date,
|
||||
Default = item.Default,
|
||||
};
|
||||
return release;
|
||||
|
||||
@@ -198,9 +198,9 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
var release = new Data.Models.ClrMamePro.Release
|
||||
{
|
||||
Name = "name",
|
||||
Region = "XXXXXX",
|
||||
Language = "XXXXXX",
|
||||
Date = "XXXXXX",
|
||||
Region = "region",
|
||||
Language = "language",
|
||||
Date = "date",
|
||||
Default = true,
|
||||
};
|
||||
|
||||
@@ -453,9 +453,9 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("name", release.Name);
|
||||
Assert.Equal("XXXXXX", release.Region);
|
||||
Assert.Equal("XXXXXX", release.Language);
|
||||
Assert.Equal("XXXXXX", release.Date);
|
||||
Assert.Equal("region", release.Region);
|
||||
Assert.Equal("language", release.Language);
|
||||
Assert.Equal("date", release.Date);
|
||||
Assert.Equal(true, release.Default);
|
||||
}
|
||||
|
||||
|
||||
@@ -197,9 +197,9 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
var release = new Data.Models.Logiqx.Release
|
||||
{
|
||||
Name = "name",
|
||||
Region = "XXXXXX",
|
||||
Language = "XXXXXX",
|
||||
Date = "XXXXXX",
|
||||
Region = "region",
|
||||
Language = "language",
|
||||
Date = "date",
|
||||
Default = true,
|
||||
};
|
||||
|
||||
@@ -490,9 +490,9 @@ namespace SabreTools.Serialization.Readers.Test
|
||||
{
|
||||
Assert.NotNull(release);
|
||||
Assert.Equal("name", release.Name);
|
||||
Assert.Equal("XXXXXX", release.Region);
|
||||
Assert.Equal("XXXXXX", release.Language);
|
||||
Assert.Equal("XXXXXX", release.Date);
|
||||
Assert.Equal("region", release.Region);
|
||||
Assert.Equal("language", release.Language);
|
||||
Assert.Equal("date", release.Date);
|
||||
Assert.Equal(true, release.Default);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user