JD2022-TU1/main/tools/modules/JD.EngineLogger/Models/WarningEntry.cs

77 lines
2.3 KiB
C#

using System;
using System.Collections.Generic;
namespace JD.EngineLogger.Models
{
public class WarningEntry
{
public uint ObjectRef { get; private set; }
public string Name { get; private set; }
public string Message { get; private set; }
public string Category { get; private set; }
public string Scene { get; private set; }
public static WarningEntry LoadFromBlob(JD.Remoting.IBlob blob)
{
WarningEntry warningEntry = new WarningEntry
{
ObjectRef = blob.ExtractUInt(),
Name = blob.ExtractString(),
Message = blob.ExtractString().TrimStart('?'),
Category = blob.ExtractString(),
Scene = blob.ExtractString()
};
return warningEntry;
}
public Plume.ErrorList.Model.LogEntry ToErrorListEntry()
{
string category = "";
if (!string.IsNullOrEmpty(Category) && !string.IsNullOrEmpty(Name))
{
category = $"{Category},{Name}";
}
else if (!string.IsNullOrEmpty(Category))
{
category = Category;
}
else if(!string.IsNullOrEmpty(Name))
{
category = Name;
}
return new Plume.ErrorList.Model.LogEntry(Message, Plume.ErrorList.Model.LogLevel.Warning, category, DateTime.Now);
}
public Plume.Output.Model.LogEntry ToOutputEntry()
{
string category = "";
if (!string.IsNullOrEmpty(Category) && !string.IsNullOrEmpty(Name))
{
category = $"{Category},{Name}";
}
else if (!string.IsNullOrEmpty(Category))
{
category = Category;
}
else if (!string.IsNullOrEmpty(Name))
{
category = Name;
}
return new Plume.Output.Model.LogEntry(Message, Plume.Output.Model.LogLevel.Warning, category, DateTime.Now);
}
public static IEnumerable<WarningEntry> LoadMultipleFromBlob(JD.Remoting.IBlob blob)
{
uint warningCount = blob.ExtractUInt();
for (var i = 0; i < warningCount; i++)
{
yield return LoadFromBlob(blob);
}
}
}
}