diff --git a/AsbCloudApp/Services/IParserService.cs b/AsbCloudApp/Services/IParserService.cs index 6fa095cd..8c01af5a 100644 --- a/AsbCloudApp/Services/IParserService.cs +++ b/AsbCloudApp/Services/IParserService.cs @@ -8,10 +8,8 @@ namespace AsbCloudApp.Services; /// Сервис парсинга /// /// -/// -public interface IParserService : IParserService +public interface IParserService : IParserService where TDto : class, IId - where TOptions : IParserOptionsRequest { /// /// Распарсить файл @@ -19,7 +17,8 @@ public interface IParserService : IParserService /// /// /// - ParserResultDto Parse(Stream file, TOptions options); + ParserResultDto Parse(Stream file, TOptions options) + where TOptions : IParserOptionsRequest; /// /// Получение шаблона для заполнения diff --git a/AsbCloudInfrastructure/DependencyInjection.cs b/AsbCloudInfrastructure/DependencyInjection.cs index 1aaeab0c..7356f9a3 100644 --- a/AsbCloudInfrastructure/DependencyInjection.cs +++ b/AsbCloudInfrastructure/DependencyInjection.cs @@ -332,21 +332,11 @@ namespace AsbCloudInfrastructure services.AddTransient(); services.AddTransient(); services.AddTransient(); - - - services.AddTransient(serviceProvider => - { - var parsers = new Dictionary> - { - { ParserIds.IdTrajectoryPlanParser, () => new TrajectoryPlanParser(serviceProvider) }, - { ParserIds.IdTrajectoryFactManualParser, () => new TrajectoryFactManualParser(serviceProvider) }, - { ParserIds.IdProcessMapPlanDrillingParser, () => new ProcessMapPlanDrillingParser(serviceProvider) } - }; - var factory = new ParserServiceFactory(parsers); - return factory; - }); - + services.AddTransient(); + services.AddTransient(); + services.AddTransient(); + return services; } } diff --git a/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs b/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs index dabf5d50..661c729f 100644 --- a/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs +++ b/AsbCloudInfrastructure/Services/Parser/ParserExcelService.cs @@ -12,17 +12,9 @@ using Mapster; namespace AsbCloudInfrastructure.Services.Parser; -public abstract class ParserExcelService : IParserService +public abstract class ParserExcelService : IParserService where TDto : class, IValidatableObject, IId - where TOptions : IParserOptionsRequest { - protected readonly IServiceProvider serviceProvider; - - protected ParserExcelService(IServiceProvider serviceProvider) - { - this.serviceProvider = serviceProvider; - } - protected abstract string SheetName { get; } protected virtual int HeaderRowsCount => 0; @@ -31,7 +23,8 @@ public abstract class ParserExcelService : IParserService Cells { get; } - public virtual ParserResultDto Parse(Stream file, TOptions options) + public virtual ParserResultDto Parse(Stream file, TOptions options) + where TOptions : IParserOptionsRequest { using var workbook = new XLWorkbook(file); var sheet = workbook.GetWorksheet(SheetName); diff --git a/AsbCloudInfrastructure/Services/Parser/ParserIds.cs b/AsbCloudInfrastructure/Services/Parser/ParserIds.cs deleted file mode 100644 index 45b9d915..00000000 --- a/AsbCloudInfrastructure/Services/Parser/ParserIds.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace AsbCloudInfrastructure.Services.Parser; - -public static class ParserIds -{ - public const int IdTrajectoryFactManualParser = 1; - public const int IdTrajectoryPlanParser = 2; - public const int IdProcessMapPlanDrillingParser = 3; -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/Parser/ParserServiceFactory.cs b/AsbCloudInfrastructure/Services/Parser/ParserServiceFactory.cs deleted file mode 100644 index 36718cfd..00000000 --- a/AsbCloudInfrastructure/Services/Parser/ParserServiceFactory.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Collections.Generic; -using AsbCloudApp.Data; -using AsbCloudApp.Requests.ParserOptions; -using AsbCloudApp.Services; - -namespace AsbCloudInfrastructure.Services.Parser; - -public class ParserServiceFactory -{ - private readonly IDictionary> parsers; - - public ParserServiceFactory(IDictionary> parsers) - { - this.parsers = parsers; - } - - public IParserService Create(int idParserService) - where TDto : class, IId - where TOptions : IParserOptionsRequest - { - if (!parsers.TryGetValue(idParserService, out var parserService)) - throw new ArgumentNullException(nameof(idParserService), "Не правильный идентификатор парсера"); - - return parserService.Invoke() as IParserService - ?? throw new ArgumentNullException(nameof(idParserService), "Ошибка приведения типа"); - } -} \ No newline at end of file diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs index e0073bee..2268b821 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanDrillingParser.cs @@ -14,11 +14,8 @@ public class ProcessMapPlanDrillingParser : ProcessMapPlanParser sections; - public ProcessMapPlanDrillingParser(IServiceProvider serviceProvider) - : base(serviceProvider) + public ProcessMapPlanDrillingParser(IWellOperationRepository wellOperationRepository) { - var wellOperationRepository = serviceProvider.GetRequiredService(); - sections = wellOperationRepository.GetSectionTypes(); } diff --git a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs index 3a427738..c08ec6e8 100644 --- a/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs +++ b/AsbCloudInfrastructure/Services/ProcessMapPlan/Parser/ProcessMapPlanParser.cs @@ -1,20 +1,12 @@ using System; -using System.IO; -using AsbCloudApp.Data; using AsbCloudApp.Data.ProcessMapPlan; -using AsbCloudApp.Requests.ParserOptions; using AsbCloudInfrastructure.Services.Parser; namespace AsbCloudInfrastructure.Services.ProcessMapPlan.Parser; -public abstract class ProcessMapPlanParser : ParserExcelService +public abstract class ProcessMapPlanParser : ParserExcelService where TDto : ProcessMapPlanBaseDto { - protected ProcessMapPlanParser(IServiceProvider serviceProvider) - : base(serviceProvider) - { - } - protected override int HeaderRowsCount => 2; protected static int? GetIdMode(string? modeName) => diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs index 4b7ddb53..5de4e2c5 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryFactManualParser.cs @@ -1,18 +1,11 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using AsbCloudApp.Data.Trajectory; -using AsbCloudApp.Requests.ParserOptions; using AsbCloudInfrastructure.Services.Parser; namespace AsbCloudInfrastructure.Services.Trajectory.Parser; -public class TrajectoryFactManualParser : ParserExcelService +public class TrajectoryFactManualParser : ParserExcelService { - public TrajectoryFactManualParser(IServiceProvider serviceProvider) - : base(serviceProvider) - { - } - protected override string SheetName => "Фактическая траектория"; protected override int HeaderRowsCount => 2; diff --git a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs index b7a03696..4c100766 100644 --- a/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs +++ b/AsbCloudInfrastructure/Services/Trajectory/Parser/TrajectoryPlanParser.cs @@ -1,18 +1,11 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using AsbCloudApp.Data.Trajectory; -using AsbCloudApp.Requests.ParserOptions; using AsbCloudInfrastructure.Services.Parser; namespace AsbCloudInfrastructure.Services.Trajectory.Parser; -public class TrajectoryPlanParser : ParserExcelService +public class TrajectoryPlanParser : ParserExcelService { - public TrajectoryPlanParser(IServiceProvider serviceProvider) - : base(serviceProvider) - { - } - protected override string SheetName => "Плановая траектория"; protected override int HeaderRowsCount => 2; diff --git a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs index dcda8a58..8921d982 100644 --- a/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs +++ b/AsbCloudWebApi.Tests/Services/Trajectory/TrajectoryParserTest.cs @@ -2,6 +2,7 @@ using AsbCloudApp.Data.Trajectory; using AsbCloudApp.Requests.ParserOptions; using AsbCloudInfrastructure.Services.Parser; +using AsbCloudInfrastructure.Services.Trajectory.Parser; using Xunit; namespace AsbCloudWebApi.Tests.Services.Trajectory; @@ -10,8 +11,9 @@ public class TrajectoryParserTest { private const string UsingTemplateFile = "AsbCloudWebApi.Tests.Services.Trajectory.Templates"; - private readonly ParserServiceFactory parserServiceFactory; - + private readonly TrajectoryPlanParser trajectoryPlanParser = new(); + private readonly TrajectoryFactManualParser trajectoryFactManualParser = new(); + [Fact] public void Parse_trajectory_plan() { @@ -20,11 +22,8 @@ public class TrajectoryParserTest if (stream is null) Assert.Fail("Файла для импорта не существует"); - - var parserService = parserServiceFactory.Create( - ParserIds.IdTrajectoryPlanParser); - var trajectoryRows = parserService.Parse(stream, IParserOptionsRequest.Empty()); + var trajectoryRows = trajectoryPlanParser.Parse(stream, IParserOptionsRequest.Empty()); Assert.Equal(3, trajectoryRows.Item.Count()); } @@ -38,10 +37,7 @@ public class TrajectoryParserTest if (stream is null) Assert.Fail("Файла для импорта не существует"); - var parserService = parserServiceFactory.Create( - ParserIds.IdTrajectoryFactManualParser); - - var trajectoryRows = parserService.Parse(stream, IParserOptionsRequest.Empty()); + var trajectoryRows = trajectoryFactManualParser.Parse(stream, IParserOptionsRequest.Empty()); Assert.Equal(4, trajectoryRows.Item.Count()); }