diff --git a/Lib_CSharp b/Lib_CSharp index ce4a59cf..fa260546 160000 --- a/Lib_CSharp +++ b/Lib_CSharp @@ -1 +1 @@ -Subproject commit ce4a59cf4a90cf74a3a9116ccbaf6d2e588dc8ad +Subproject commit fa26054678e1c938b1120f7eaab8b26476700245 diff --git a/PoliNetwork.Graduatorie.Common/Utils/EnrollUtil.cs b/PoliNetwork.Graduatorie.Common/Utils/EnrollUtil.cs index 0966f075..a9bf26a7 100644 --- a/PoliNetwork.Graduatorie.Common/Utils/EnrollUtil.cs +++ b/PoliNetwork.Graduatorie.Common/Utils/EnrollUtil.cs @@ -6,7 +6,7 @@ namespace PoliNetwork.Graduatorie.Common.Utils; -public class EnrollUtil +public static class EnrollUtil { public static EnrollType GetEnrollType(string? rowCanEnrollInto, bool rowCanEnroll) { diff --git a/PoliNetwork.Graduatorie.Parser/Objects/Json/DateFound.cs b/PoliNetwork.Graduatorie.Parser/Objects/Json/DateFound.cs index c3d1aea8..962fa1c1 100644 --- a/PoliNetwork.Graduatorie.Parser/Objects/Json/DateFound.cs +++ b/PoliNetwork.Graduatorie.Parser/Objects/Json/DateFound.cs @@ -25,10 +25,14 @@ public void WriteToFile(string dataFolder) public static DateTime? MinDateTime(DateTime? date1, DateTime? date2) { - if (date1 == null && date2 == null) - return null; - if (date1 == null) - return date2; + switch (date1) + { + case null when date2 == null: + return null; + case null: + return date2; + } + if (date2 == null) return date1; diff --git a/PoliNetwork.Graduatorie.Parser/Objects/Json/Indexes/Specific/BySchoolYearCourseJson.cs b/PoliNetwork.Graduatorie.Parser/Objects/Json/Indexes/Specific/BySchoolYearCourseJson.cs index d13ff51d..0f6a5b53 100644 --- a/PoliNetwork.Graduatorie.Parser/Objects/Json/Indexes/Specific/BySchoolYearCourseJson.cs +++ b/PoliNetwork.Graduatorie.Parser/Objects/Json/Indexes/Specific/BySchoolYearCourseJson.cs @@ -268,8 +268,8 @@ private static void AddToRankings(ICollection rankings, Ranking ranking && x.Year == ranking.Year && Similar(x.ByCourse, ranking.ByCourse) ); - - if (!any) + + if (!any) rankings.Add(ranking); } @@ -281,9 +281,15 @@ private static bool Similar( if (a == null || b == null) return false; return a.Count == b.Count && a.Select(Selector).All(Predicate); - - bool Selector(CourseTable variable) => b.Any(x => x.Title == variable.Title); - bool Predicate(bool boolB) => boolB; - + + bool Selector(CourseTable variable) + { + return b.Any(x => x.Title == variable.Title); + } + + bool Predicate(bool boolB) + { + return boolB; + } } } \ No newline at end of file diff --git a/PoliNetwork.Graduatorie.Parser/Objects/Json/SingleCourseJson.cs b/PoliNetwork.Graduatorie.Parser/Objects/Json/SingleCourseJson.cs index e46d2b86..dc487970 100644 --- a/PoliNetwork.Graduatorie.Parser/Objects/Json/SingleCourseJson.cs +++ b/PoliNetwork.Graduatorie.Parser/Objects/Json/SingleCourseJson.cs @@ -18,9 +18,9 @@ public class SingleCourseJson public string? Link; public string? Location; public string? Name; + public RankingOrder? RankingOrder; public SchoolEnum? School; public int? Year; - public RankingOrder? RankingOrder; public int GetHashWithoutLastUpdate() { @@ -59,4 +59,4 @@ public bool Is(CourseTable courseTable) { return Name == courseTable.Title; } -} +} \ No newline at end of file diff --git a/PoliNetwork.Graduatorie.Parser/Objects/RankingNS/Ranking.cs b/PoliNetwork.Graduatorie.Parser/Objects/RankingNS/Ranking.cs index d8371585..7778b72f 100644 --- a/PoliNetwork.Graduatorie.Parser/Objects/RankingNS/Ranking.cs +++ b/PoliNetwork.Graduatorie.Parser/Objects/RankingNS/Ranking.cs @@ -117,7 +117,7 @@ public List ToSingleCourseJson() Year = Year, School = School, Location = variable.Location, - RankingOrder = RankingOrder, + RankingOrder = RankingOrder })); return result; @@ -137,4 +137,4 @@ public string GetPath() { return School + "/" + Year + "/" + RankingOrder?.Phase; } -} +} \ No newline at end of file diff --git a/PoliNetwork.Graduatorie.Parser/Utils/Hashing.cs b/PoliNetwork.Graduatorie.Parser/Utils/Hashing.cs index 5940ac04..e71a7ceb 100644 --- a/PoliNetwork.Graduatorie.Parser/Utils/Hashing.cs +++ b/PoliNetwork.Graduatorie.Parser/Utils/Hashing.cs @@ -1,6 +1,6 @@ namespace PoliNetwork.Graduatorie.Parser.Utils; -public class Hashing +public static class Hashing { public static int? GetHashFromListHash(IReadOnlyCollection? iMerit) { diff --git a/PoliNetwork.Graduatorie.Parser/Utils/Output/HashMatricoleWrite.cs b/PoliNetwork.Graduatorie.Parser/Utils/Output/HashMatricoleWrite.cs index 38e00e90..76a10f20 100644 --- a/PoliNetwork.Graduatorie.Parser/Utils/Output/HashMatricoleWrite.cs +++ b/PoliNetwork.Graduatorie.Parser/Utils/Output/HashMatricoleWrite.cs @@ -18,9 +18,20 @@ public static void Write(RankingsSet? rankingsSet, string outFolder) return; var dictionary = GetDictToWrite(rankingsSet); + Sort2(dictionary); WriteToFile(dictionary, outFolder); } + private static void Sort2(SortedDictionary dict) + { + var keys = dict.Keys; + foreach (var key in keys) + { + var item = dict[key]; + item.Sort2(); + } + } + private static SortedDictionary GetDictToWrite(RankingsSet rankingsSet) { var dictionary = new SortedDictionary(); diff --git a/PoliNetwork.Graduatorie.Parser/Utils/Output/RankingSummaryStudent.cs b/PoliNetwork.Graduatorie.Parser/Utils/Output/RankingSummaryStudent.cs index 1bb43ca8..77f088cd 100644 --- a/PoliNetwork.Graduatorie.Parser/Utils/Output/RankingSummaryStudent.cs +++ b/PoliNetwork.Graduatorie.Parser/Utils/Output/RankingSummaryStudent.cs @@ -40,6 +40,27 @@ public RankingSummaryStudent(string? phase, SchoolEnum? school, int? year, Ranki Url = url; } + public int Compare(RankingSummaryStudent o) + { + var i = (Year ?? 0) - (o.Year ?? 0); + if (i != 0) return i < 0 ? -1 : 1; + + i = string.CompareOrdinal(Course ?? "", o.Course ?? ""); + if (i != 0) return i < 0 ? -1 : 1; + + i = string.CompareOrdinal(Phase ?? "", o.Phase ?? ""); + if (i != 0) return i < 0 ? -1 : 1; + + i = (int)(School ?? SchoolEnum.Unknown) - (int)(o.School ?? SchoolEnum.Unknown); + if (i != 0) return i < 0 ? -1 : 1; + + i = Url?.CompareTo(o.Url) ?? 0; + if (i != 0) return i < 0 ? -1 : 1; + + + return i; + } + public override bool Equals(object? obj) { if (obj is not RankingSummaryStudent rankingSummaryStudent) return false; diff --git a/PoliNetwork.Graduatorie.Parser/Utils/Output/StudentHashSummary.cs b/PoliNetwork.Graduatorie.Parser/Utils/Output/StudentHashSummary.cs index 7e490321..c16c963a 100644 --- a/PoliNetwork.Graduatorie.Parser/Utils/Output/StudentHashSummary.cs +++ b/PoliNetwork.Graduatorie.Parser/Utils/Output/StudentHashSummary.cs @@ -41,4 +41,15 @@ public void Merge(StudentResult student, Ranking ranking, CourseTable? courseTab if (!present2) RankingSummaries.Add(r); } + + public void Sort2() + { + RankingSummaries.Sort(Compare); + SingleCourseJsons.Sort(Compare); + } + + private int Compare(RankingSummaryStudent a, RankingSummaryStudent b) + { + return a.Compare(b); + } } \ No newline at end of file diff --git a/PoliNetwork.Graduatorie.Scraper/Utils/Web/CheckUrlUtil.cs b/PoliNetwork.Graduatorie.Scraper/Utils/Web/CheckUrlUtil.cs index d1ab1264..ab375a6c 100644 --- a/PoliNetwork.Graduatorie.Scraper/Utils/Web/CheckUrlUtil.cs +++ b/PoliNetwork.Graduatorie.Scraper/Utils/Web/CheckUrlUtil.cs @@ -7,7 +7,7 @@ namespace PoliNetwork.Graduatorie.Scraper.Utils.Web; -public class CheckUrlUtil +public static class CheckUrlUtil { private static void CheckUrl(RankingUrl variable, HashSet final) { diff --git a/PoliNetwork.Graduatorie.Scraper/Utils/Web/Scraper.cs b/PoliNetwork.Graduatorie.Scraper/Utils/Web/Scraper.cs index 7aea2f6f..2b688648 100644 --- a/PoliNetwork.Graduatorie.Scraper/Utils/Web/Scraper.cs +++ b/PoliNetwork.Graduatorie.Scraper/Utils/Web/Scraper.cs @@ -138,8 +138,7 @@ private IEnumerable UseHref(string? href) private IEnumerable ParseNewsPage(string url) { HashSet links = new(); - if (_alreadyVisited.Contains(url)) return links; - _alreadyVisited.Add(url); + if (!_alreadyVisited.Add(url)) return links; var page = _web.Load(url).DocumentNode; @@ -190,4 +189,4 @@ private bool IsValidText(string text) return null; } } -} +} \ No newline at end of file