/
AstroJohn
/
MailRobot
Обзор
Документация
Войти
/
AstroJohn
/
MailRobot
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
LogProcessingGate/LogParsingGate.cs
51 строка
2 KB
AstroJohn
1st commit
11 сен 2024, 13:31
11 сен 2024, 13:31
0f57dc5
Код
Авторство
О чём код?
using System; using System.Linq; using CsParser; using LogProcessingModels.Configuration; using LogProcessingModels.Parsing; using LogProcessingModels.PrefixResolving; namespace LogProcessingGate { public class LogParsingGate: ContestProcessorSelectorBase<IParser> { protected override IParser DefaultProcessor => null; public IParser GetParser(clsChecker_Parameters checkerParameters, IPrefixResolver prefixResolver, string connectionString, bool getSecondary = false) { var localParsers = GetProcessors(checkerParameters.ParserParameters.ContestName); var formatToFind = checkerParameters.LogFormat; if (getSecondary) { if (formatToFind == LOG_FORMAT.EDI) formatToFind = LOG_FORMAT.ERMAK; else return null; } var localParserType = formatToFind == LOG_FORMAT.EDI ? localParsers.FirstOrDefault(x => x.IsSubclassOf(typeof(EdiParser))) : localParsers.FirstOrDefault(x => x.IsSubclassOf(typeof(ErmakParser))); if (localParserType == null) if (formatToFind == LOG_FORMAT.EDI) localParserType = typeof(EdiParserStandard); else if (!getSecondary) throw new Exception($"Парсинг формата для контеста {checkerParameters.ParserParameters.ContestName} не реализован."); else return null; var localParser = (IParser) Activator.CreateInstance(localParserType); localParser.Initialize(checkerParameters.ParserParameters, prefixResolver, connectionString); return localParser; } public LogParsingGate(clsChecker_Parameters parameters) : base(parameters) { } } }