Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 45 additions & 10 deletions src/LogExpert.Core/Classes/Bookmark/BookmarkDataProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ public class BookmarkDataProvider : IBookmarkData

private static readonly Logger _logger = LogManager.GetCurrentClassLogger();

private readonly Lock _bookmarkListLock = new();

#endregion

#region cTor
Expand Down Expand Up @@ -49,7 +51,10 @@ public BookmarkDataProvider (SortedList<int, Entities.Bookmark> bookmarkList)

public void SetBookmarks (SortedList<int, Entities.Bookmark> bookmarkList)
{
BookmarkList = bookmarkList;
lock (_bookmarkListLock)
{
BookmarkList = bookmarkList;
}
}

public void ToggleBookmark (int lineNum)
Expand All @@ -66,17 +71,26 @@ public void ToggleBookmark (int lineNum)

public bool IsBookmarkAtLine (int lineNum)
{
return BookmarkList.ContainsKey(lineNum);
lock (_bookmarkListLock)
{
return BookmarkList.ContainsKey(lineNum);
}
}

public int GetBookmarkIndexForLine (int lineNum)
{
return BookmarkList.IndexOfKey(lineNum);
lock (_bookmarkListLock)
{
return BookmarkList.IndexOfKey(lineNum);
}
}

public Entities.Bookmark GetBookmarkForLine (int lineNum)
{
return BookmarkList[lineNum];
lock (_bookmarkListLock)
{
return BookmarkList[lineNum];
}
}

#endregion
Expand Down Expand Up @@ -116,6 +130,7 @@ public int FindPrevBookmarkIndex (int lineNum)

public int FindNextBookmarkIndex (int lineNum)
{

var values = BookmarkList.Values;
for (var i = 0; i < BookmarkList.Count; ++i)
{
Expand All @@ -130,19 +145,25 @@ public int FindNextBookmarkIndex (int lineNum)

public void RemoveBookmarkForLine (int lineNum)
{
_ = BookmarkList.Remove(lineNum);
lock (_bookmarkListLock)
{
_ = BookmarkList.Remove(lineNum);
}

OnBookmarkRemoved();
}

//TOOD: check if the callers are checking for null before calling
public void RemoveBookmarksForLines (IEnumerable<int> lineNumList)
{
ArgumentNullException.ThrowIfNull(lineNumList, nameof(lineNumList));

foreach (var lineNum in lineNumList)
lock (_bookmarkListLock)
{
_ = BookmarkList.Remove(lineNum);
foreach (var lineNum in lineNumList)
{
_ = BookmarkList.Remove(lineNum);

}
}

OnBookmarkRemoved();
Expand All @@ -152,20 +173,31 @@ public void RemoveBookmarksForLines (IEnumerable<int> lineNumList)
public void AddBookmark (Entities.Bookmark bookmark)
{
ArgumentNullException.ThrowIfNull(bookmark, nameof(bookmark));
lock (_bookmarkListLock)
{
BookmarkList.Add(bookmark.LineNum, bookmark);
}

BookmarkList.Add(bookmark.LineNum, bookmark);
OnBookmarkAdded();
}

public void ClearAllBookmarks ()
{
#if DEBUG
_logger.Debug(CultureInfo.InvariantCulture, "Removing all bookmarks");
BookmarkList.Clear();
#endif
lock (_bookmarkListLock)
{
BookmarkList.Clear();
}

OnAllBookmarksRemoved();
}

#endregion

#region Event invokers

protected void OnBookmarkAdded ()
{
BookmarkAdded?.Invoke(this, EventArgs.Empty);
Expand All @@ -180,4 +212,7 @@ protected void OnAllBookmarksRemoved ()
{
AllBookmarksRemoved?.Invoke(this, EventArgs.Empty);
}

#endregion

}
4 changes: 2 additions & 2 deletions src/LogExpert.Core/Classes/Filter/FilterParams.cs
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,11 @@ public class FilterParams : ICloneable

///Returns RangeSearchText.ToUpperInvariant
[JsonIgnore]
internal string NormalizedRangeSearchText => RangeSearchText.ToUpperInvariant();
internal string NormalizedRangeSearchText => RangeSearchText?.ToUpperInvariant();

///Returns SearchText.ToUpperInvariant
[JsonIgnore]
internal string NormalizedSearchText => SearchText.ToUpperInvariant();
internal string NormalizedSearchText => SearchText?.ToUpperInvariant();

[JsonIgnore]
[field: NonSerialized]
Expand Down
4 changes: 2 additions & 2 deletions src/LogExpert.Core/Entities/LogEventData.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace LogExpert.Core.Entities;
namespace LogExpert.Core.Entities;

public class LogEventArgs : System.EventArgs
public class LogEventArgs : EventArgs
{
#region Fields

Expand Down
Loading
Loading