JD2022-TU1/main/tools/modules/JD.EngineLogger/EngineLoggerPlugin.cs

65 lines
2.3 KiB
C#

using System.Linq;
using JD.EngineLogger.Models;
using JD.EngineLogger.Providers;
using JD.Remoting;
using Plume.ErrorList.Model;
using Plume.Interfaces.Logging;
using LogEntry = JD.EngineLogger.Models.LogEntry;
namespace JD.EngineLogger
{
public class EngineLoggerPlugin : Plugin
{
/// <inheritdoc />
public EngineLoggerPlugin(ILoggerManager loggerManager) :
base("WarningTool_Plugin")
{
RegisterHandler("E2T_addWarning", OnAddWarning);
RegisterHandler("E2T_allWarnings", OnReceivedAllWarnings);
RegisterHandler("E2T_clear", OnReceivedClearWarnings);
RegisterHandler("E2T_log", OnReceivedLog);
RegisterHandler("E2T_colorSettings", OnReceivedColorSettings);
OutputProvider = new OutputProvider(loggerManager);
ErrorListProvider = new ErrorListProvider(loggerManager);
}
public ErrorListProvider ErrorListProvider { get; }
public OutputProvider OutputProvider { get; }
private void OnReceivedColorSettings(IBlob blob)
{
}
private void OnReceivedLog(IBlob blob)
{
LogEntry.TryLoadFromBlob(blob, out var logEntry);
var outputEntry = logEntry.ToOutputEntry();
OutputProvider.OnLogEntryReceived(outputEntry);
ErrorListProvider.OnLogEntryReceived(logEntry.ToErrorListEntry());
}
private void OnReceivedClearWarnings(IBlob blob)
{
ErrorListProvider.OnClear();
}
private void OnReceivedAllWarnings(IBlob blob)
{
WarningEntry[] warnings = WarningEntry.LoadMultipleFromBlob(blob).ToArray();
ILogEntry[] errorListEntries = warnings.Select(x => x.ToErrorListEntry()).Cast<ILogEntry>().ToArray();
ErrorListProvider.OnLogEntryReceived(errorListEntries);
var outputEntries = warnings.Select(x => x.ToOutputEntry()).Cast<Plume.Output.Model.ILogEntry>().ToArray();
OutputProvider.OnLogEntryReceived(outputEntries);
}
private void OnAddWarning(IBlob blob)
{
var warning = WarningEntry.LoadFromBlob(blob);
ErrorListProvider.OnLogEntryReceived(warning.ToErrorListEntry());
OutputProvider.OnLogEntryReceived(warning.ToOutputEntry());
}
}
}