From d8a4fe779031935d8c72413da2ed2db432065846 Mon Sep 17 00:00:00 2001 From: schnulller Date: Sun, 19 Jun 2022 01:58:07 +0200 Subject: [PATCH] Migitated some null risks --- HaWeb/Controllers/APIController.cs | 2 +- HaWeb/Controllers/RegisterController.cs | 10 +++++++--- HaWeb/Controllers/SucheController.cs | 4 ---- HaWeb/FileHelpers/HaDocumentWrapper.cs | 8 ++++---- HaWeb/FileHelpers/IHaDocumentWrapper.cs | 2 +- HaWeb/HTMLHelpers/LinkHelper.cs | 4 ++-- HaWeb/HTMLParser/LineXMLHelper.cs | 2 +- HaWeb/Models/FileModel.cs | 1 + HaWeb/Models/SucheViewModel.cs | 10 +++++----- HaWeb/SearchHelpers/SearchRules.cs | 14 +++++++------- HaWeb/Views/Suche/Index.cshtml | 2 +- 11 files changed, 30 insertions(+), 29 deletions(-) diff --git a/HaWeb/Controllers/APIController.cs b/HaWeb/Controllers/APIController.cs index 524b23c..4771994 100644 --- a/HaWeb/Controllers/APIController.cs +++ b/HaWeb/Controllers/APIController.cs @@ -52,7 +52,7 @@ public class APIController : Controller { [DisableFormValueModelBinding] [ValidateAntiForgeryToken] [FeatureGate(Features.UploadService, Features.AdminService)] - public async Task SyntaxCheck(string id) { + public IActionResult SyntaxCheck(string id) { return Ok(); } diff --git a/HaWeb/Controllers/RegisterController.cs b/HaWeb/Controllers/RegisterController.cs index 6957239..b0fff61 100644 --- a/HaWeb/Controllers/RegisterController.cs +++ b/HaWeb/Controllers/RegisterController.cs @@ -49,9 +49,10 @@ public class RegisterController : Controller { ViewData["SEODescription"] = "Johann Georg Hamann: Kommentierte Briefausgabe. Personen-, Sach- und Ortsregister."; // Normalisation and validation - if (id == null) return Redirect(url + defaultLetter); + if (String.IsNullOrWhiteSpace(id)) return Redirect(url + defaultLetter); id = normalizeID(id, defaultLetter); - if (!lib.CommentsByCategoryLetter[category].Contains(id)) return error404(); + if (String.IsNullOrWhiteSpace(id)) return Redirect(url + defaultLetter); + if (!lib.CommentsByCategoryLetter[category].Contains(id!)) return error404(); // Data aquisition and validation var comments = lib.CommentsByCategoryLetter[category][id].OrderBy(x => x.Index); @@ -115,8 +116,9 @@ public class RegisterController : Controller { ViewData["SEODescription"] = "Johann Georg Hamann: Kommentierte Briefausgabe. Forschungsbibliographie."; // Normalisation and Validation - if (id == null) return Redirect(url + defaultLetter); + if (String.IsNullOrWhiteSpace(id)) return Redirect(url + defaultLetter); id = normalizeID(id, defaultLetter); + if (String.IsNullOrWhiteSpace(id)) return Redirect(url + defaultLetter); if (id != "EDITIONEN" && !lib.CommentsByCategoryLetter[category].Contains(id)) return error404(); if (id == "EDITIONEN" && !lib.CommentsByCategoryLetter.Keys.Contains(id.ToLower())) return error404(); @@ -175,6 +177,7 @@ public class RegisterController : Controller { private List _createCommentModelForschungRegister(string category, IOrderedEnumerable? comments) { var lib = _lib.GetLibrary(); var res = new List(); + if (comments == null) return res; foreach (var comm in comments) { var parsedComment = HTMLHelpers.CommentHelpers.CreateHTML(lib, _readerService, comm, category, Settings.ParsingState.CommentType.Comment); List? parsedSubComments = null; @@ -192,6 +195,7 @@ public class RegisterController : Controller { private List _createCommentModelBibel(string category, IOrderedEnumerable? comments) { var lib = _lib.GetLibrary(); var res = new List(); + if (comments == null) return res; foreach (var comm in comments) { var parsedComment = HTMLHelpers.CommentHelpers.CreateHTML(lib, _readerService, comm, category, Settings.ParsingState.CommentType.Comment); List? parsedSubComments = null; diff --git a/HaWeb/Controllers/SucheController.cs b/HaWeb/Controllers/SucheController.cs index 41b43e5..a0fe009 100644 --- a/HaWeb/Controllers/SucheController.cs +++ b/HaWeb/Controllers/SucheController.cs @@ -68,8 +68,6 @@ public class SucheController : Controller { List>? metasbyyear = null; if (search != null) { search = search.Trim(); - var sw = new System.Diagnostics.Stopwatch(); - sw.Start(); var res = _lib.SearchLetters(search, _readerService); if (res == null || !res.Any()) return _error404(); var ret = res.ToDictionary( @@ -80,8 +78,6 @@ public class SucheController : Controller { ); var keys = res.Select(x => x.Index).Where(x => lib.Metas.ContainsKey(x)).Select(x => lib.Metas[x]); var letters = keys.ToLookup(x => x.Sort.Year).OrderBy(x => x.Key).ToList(); - sw.Stop(); - Console.WriteLine(sw.ElapsedMilliseconds); return _paginateSend(lib, page, letters, null, null, null, search, ret); } diff --git a/HaWeb/FileHelpers/HaDocumentWrapper.cs b/HaWeb/FileHelpers/HaDocumentWrapper.cs index abc163b..e75ce25 100644 --- a/HaWeb/FileHelpers/HaDocumentWrapper.cs +++ b/HaWeb/FileHelpers/HaDocumentWrapper.cs @@ -72,11 +72,11 @@ public class HaDocumentWrapper : IHaDocumentWrappper { rd.Read(); if (state.Results != null) res.Add(( - letter.Index, + letter.Index, state.Results.Select(x => ( - x.Page, - x.Line, - parser.Lines != null ? + x.Page, + x.Line, + parser.Lines != null ? parser.Lines .Where(y => y.Page == x.Page && y.Line == x.Line) .Select(x => x.Text) diff --git a/HaWeb/FileHelpers/IHaDocumentWrapper.cs b/HaWeb/FileHelpers/IHaDocumentWrapper.cs index 3d7e563..54ace8b 100644 --- a/HaWeb/FileHelpers/IHaDocumentWrapper.cs +++ b/HaWeb/FileHelpers/IHaDocumentWrapper.cs @@ -7,5 +7,5 @@ public interface IHaDocumentWrappper { public ILibrary ResetLibrary(); public ILibrary? SetLibrary(string filepath, ModelStateDictionary ModelState); public ILibrary GetLibrary(); - public List<(string Index, List<(string Page, string Line, string Preview)> Results)>? SearchLetters(string searchword, IReaderService reader); + public List<(string Index, List<(string Page, string Line, string Preview)> Results)>? SearchLetters(string searchword, IReaderService reader); } \ No newline at end of file diff --git a/HaWeb/HTMLHelpers/LinkHelper.cs b/HaWeb/HTMLHelpers/LinkHelper.cs index 3c647e2..d28a0ff 100644 --- a/HaWeb/HTMLHelpers/LinkHelper.cs +++ b/HaWeb/HTMLHelpers/LinkHelper.cs @@ -33,7 +33,7 @@ public class LinkHelper { reader.Tag += OnTag; } - private void OnTag(object _, Tag tag) { + private void OnTag(object? _, Tag tag) { if (tag.Name == "wwwlink" || tag.Name == "intlink" || tag.Name == "link") { if (tag.EndTag && _followlinksinthis) { _sb.Append(HTMLHelpers.TagHelpers.CreateEndElement("a")); @@ -68,7 +68,7 @@ public class LinkHelper { } } if (tag.Name == "link" && tag.Values != null) { - Comment comment = null; + Comment? comment = null; if (tag.Values.ContainsKey("subref") && _lib.SubCommentsByID.ContainsKey(tag["subref"])) comment = _lib.SubCommentsByID[tag["subref"]]; else if (tag.Values.ContainsKey("ref")) diff --git a/HaWeb/HTMLParser/LineXMLHelper.cs b/HaWeb/HTMLParser/LineXMLHelper.cs index c65ba7f..d99196d 100644 --- a/HaWeb/HTMLParser/LineXMLHelper.cs +++ b/HaWeb/HTMLParser/LineXMLHelper.cs @@ -55,7 +55,7 @@ public class LineXMLHelper { _CTag_Funcs = CTag_Funcs; _Text_Funcs = Text_Funcs; _WS_Funcs = WS_Funcs; - + OpenTags = new Stack(); LastSingleTags = new Dictionary>(); LastText = new StringBuilder(); diff --git a/HaWeb/Models/FileModel.cs b/HaWeb/Models/FileModel.cs index 7d57c8b..021ac45 100644 --- a/HaWeb/Models/FileModel.cs +++ b/HaWeb/Models/FileModel.cs @@ -13,5 +13,6 @@ public class FileModel { IsUsed = isUsed; LastModified = lastModified; InProduction = inProduction; + Prefix = prefix; } } \ No newline at end of file diff --git a/HaWeb/Models/SucheViewModel.cs b/HaWeb/Models/SucheViewModel.cs index 8cfbd07..1fbee2f 100644 --- a/HaWeb/Models/SucheViewModel.cs +++ b/HaWeb/Models/SucheViewModel.cs @@ -6,7 +6,7 @@ public class SucheViewModel { public int Count { get; private set; } public int ActiveYear { get; private set; } public List<(int StartYear, int EndYear)>? AvailableYears { get; private set; } - public string? ActivePerson {get; set; } + public string? ActivePerson { get; set; } public List<(string Key, string Name)>? AvailablePersons { get; private set; } public List<(string Volume, List Pages)>? AvailablePages { get; private set; } public string? ActiveVolume { get; private set; } @@ -15,10 +15,10 @@ public class SucheViewModel { public Dictionary>? SearchResults { get; private set; } public SucheViewModel( - List<(int Year, List LetterList)>? letters, - int activeYear, - List<(int StartYear, int EndYear)>? availableYears, - List<(string Key, string Name)>? availablePersons, + List<(int Year, List LetterList)>? letters, + int activeYear, + List<(int StartYear, int EndYear)>? availableYears, + List<(string Key, string Name)>? availablePersons, List<(string Volume, List Pages)>? availablePages, string? activeVolume, string? activePage, diff --git a/HaWeb/SearchHelpers/SearchRules.cs b/HaWeb/SearchHelpers/SearchRules.cs index d5e095c..bc24fd8 100644 --- a/HaWeb/SearchHelpers/SearchRules.cs +++ b/HaWeb/SearchHelpers/SearchRules.cs @@ -11,13 +11,13 @@ public class SearchRules { public static readonly TextFuncList TextRules = new TextFuncList() { ( (x, _) => true, (sb, text, reader) => { var t = text.Value; - if (reader.State.Normalize) - t = HaWeb.SearchHelpers.StringHelpers.NormalizeWhiteSpace(t); + if (reader.State.Normalize) + t = HaWeb.SearchHelpers.StringHelpers.NormalizeWhiteSpace(t); sb.Append(t); var sw = reader.State.SearchWord; if (sb.Length >= sw.Length) { if (sb.ToString().ToLower().Contains(sw)) { - if (reader.State.Results == null) + if (reader.State.Results == null) reader.State.Results = new List<(string Page, string Line)>(); reader.State.Results.Add((reader.CurrentPage, reader.CurrentLine)); } @@ -26,16 +26,16 @@ public class SearchRules { }) }; - public static readonly WhitespaceFuncList WhitespaceRules= new WhitespaceFuncList() { + public static readonly WhitespaceFuncList WhitespaceRules = new WhitespaceFuncList() { ( (x, _) => true, (sb, text, reader) => { var t = text.Value; - if (reader.State.Normalize) - t = HaWeb.SearchHelpers.StringHelpers.NormalizeWhiteSpace(t); + if (reader.State.Normalize) + t = HaWeb.SearchHelpers.StringHelpers.NormalizeWhiteSpace(t); sb.Append(t); var sw = reader.State.SearchWord; if (sb.Length >= sw.Length) { if (sb.ToString().Contains(sw)) { - if (reader.State.Results == null) + if (reader.State.Results == null) reader.State.Results = new List<(string Page, string Line)>(); reader.State.Results.Add((reader.CurrentPage, reader.CurrentLine)); } diff --git a/HaWeb/Views/Suche/Index.cshtml b/HaWeb/Views/Suche/Index.cshtml index 8b9679b..fd5202c 100644 --- a/HaWeb/Views/Suche/Index.cshtml +++ b/HaWeb/Views/Suche/Index.cshtml @@ -12,7 +12,7 @@

Briefauswahl

- @if (Model.AvailableYears != null && Model.AvailableYears.Any()) { + @if (Model.AvailableYears != null && Model.AvailableYears.Any() && Model.AvailableYears.Count > 1) { @for(var i = 0; i < Model.AvailableYears.Count; i++) { @if (Model.AvailableYears[i].StartYear != Model.AvailableYears[i].EndYear) {