diff --git a/PoliNetwork.Graduatorie.Common/Objects/RankingNS/RankingUrl.cs b/PoliNetwork.Graduatorie.Common/Objects/RankingNS/RankingUrl.cs index ebafa918..6145d214 100644 --- a/PoliNetwork.Graduatorie.Common/Objects/RankingNS/RankingUrl.cs +++ b/PoliNetwork.Graduatorie.Common/Objects/RankingNS/RankingUrl.cs @@ -10,11 +10,26 @@ namespace PoliNetwork.Graduatorie.Common.Objects.RankingNS; [Serializable] [JsonObject(MemberSerialization.Fields, NamingStrategyType = typeof(CamelCaseNamingStrategy))] -public class RankingUrl +public class RankingUrl : IComparable, IEquatable { public PageEnum PageEnum = PageEnum.Unknown; public string Url = ""; + public int CompareTo(RankingUrl? other) + { + if (ReferenceEquals(this, other)) return 0; + if (ReferenceEquals(null, other)) return 1; + var pageEnumComparison = PageEnum.CompareTo(other.PageEnum); + return pageEnumComparison != 0 ? pageEnumComparison : string.Compare(Url, other.Url, StringComparison.Ordinal); + } + + public bool Equals(RankingUrl? other) + { + if (other == null) + return false; + return PageEnum == other.PageEnum && Url == other.Url; + } + public override bool Equals(object? obj) { if (obj is not RankingUrl rankingUrl) return false; @@ -29,11 +44,6 @@ public override int GetHashCode() return PageEnum.GetHashCode() ^ urlHash; } - protected bool Equals(RankingUrl other) - { - return PageEnum == other.PageEnum && Url == other.Url; - } - public int GetHashWithoutLastUpdate() { @@ -48,7 +58,7 @@ public int GetHashWithoutLastUpdate() /// /// /// The full url string - /// prefered input -> http://www.risultati-ammissione.polimi.it/2022_20064_html/2022_20064_generale.html + /// preferred input -> http://www.risultati-ammissione.polimi.it/2022_20064_html/2022_20064_generale.html /// valid case -> /2022_20064_html/2022_20064_generale.html /// /// RankingUrl